php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 05.07.2011, 18:42  
Neuer Benutzer
 
Registriert seit: 05.07.2011
Beiträge: 7
PHP-Kenntnisse:
Anfänger
googles befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Link erstellen

Liebes Forum,

nachdem ich die Richtlinien gelesen habe, bin ich zwar etwas unsicher, ob meine Frage überhaupt "stellbar" ist - aber nach mehrtägiger Bastelei komme ich immer noch nicht weiter, wäre also für jeden "Schubser" in die richtige Richtung sehr dankbar.

Was will ich: Ich lese Daten aus einer MySQL-Db aus. Zwei Spalten (es wird nachher nur noch eine sein...), im folgenden Bsp. "Titel" bzw "ID", sind als Link angelegt. Wenn dieser Link nun angeclickt wird, dann soll sich ein neues Fenster öffnen, in welchem detailliertere Informationen zu finden sind.
Jetzt möchte ich ja nicht für jeden Eintrag in der Datenbank eine eigene HTML-Datei schreiben, sondern via PHP automatisch erzeugen.

Meine Idee: Ich schreibe ein anfrage.php-script, an das die ID des angeclickten Items gesendet wird (ich nehme an via $_GET ?) und lese dann ~via 'SELECT "hier die ID" FROM n' usw. usf. aus.

Bin ich auf dem richtigen Weg und muss da einfach weiter ausprobieren, oder liege ich schon völlig falsch?

Hier mein bisheriger Code, der die ID's ausliest:

PHP-Code:
<?php
$abfrage 
"SELECT * FROM n";                                             
$ergebnis mysql_query($abfrage)
    OR die(
"Error: $abfrage <br>".mysql_error());

echo 
"<table border=1>";
while(
$row mysql_fetch_object($ergebnis))                                    
   {
    echo 
"<tr>";
    echo 
"<td><a href=\"ruby2.php?=",$row->ID,"\">",$row->ID,"</a></td>";
       echo 
"<td width=150>"$row->Autor,"</td>" ;
    echo 
"<td width=100>"$row->Art,    "</td>" ;    
       echo 
"<td width=400><a href>",$row->Titel,"</a></td>" ;
    echo 
"<td width=300>"$row->Untertitel,    "</td>" ;
    echo 
"<td width=50>"$row->Erscheinungsjahr,    "</td>" ;
    echo 
"</tr>";
   }                    
echo 
"</table>";
?>
Über den einen oder anderen Gedanken-schubser würde ich mich wirklich freuen.

LG
Googles

P.S: Ich habe das Forum ganz gut durchforstet - wenn es irgendwo doch ne Ecke geben sollte, die ich übersehen habe - dann entschuldigt bitte.

Geändert von googles (05.07.2011 um 23:19 Uhr).
googles ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 05.07.2011, 18:45  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Meine Idee: Ich schreibe ein anfrage.php-script, an das die ID des angeclickten Items gesendet wird (ich nehme an via $_GET ?) und lese dann ~via 'SELECT "hier die ID" FROM n' usw. usf. aus.
Ja, im Ansatz richtig. Die übergebene ID gehört dann aber in den WHERE Clause der Query. Und unbedingt SQL-Sicherheit gewährleisten! Stichworte mysql_real_escape_string und SQL-Injection.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 05.07.2011, 22:51  
Neuer Benutzer
 
Registriert seit: 05.07.2011
Beiträge: 7
PHP-Kenntnisse:
Anfänger
googles befindet sich auf einem aufstrebenden Ast
Standard

Herzlichen Dank Nikosch! Ich werde daran/damit/darum dann mal die nächsten Tage "rumbasteln".

Danke.

Geändert von googles (05.07.2011 um 23:20 Uhr).
googles ist offline   Mit Zitat antworten
Alt 12.07.2011, 15:04  
Neuer Benutzer
 
Registriert seit: 05.07.2011
Beiträge: 7
PHP-Kenntnisse:
Anfänger
googles befindet sich auf einem aufstrebenden Ast
Standard

Ich habe es nun wie folgt gelöst. clickt man die id (.s. script oben) an, wird ja eine neue URL generiert. ruby2 macht dann folgendes:

PHP-Code:
<?php
$url 
"http://" .$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
echo 
$url;
$url_array parse_url($url);
echo 
$url_array['query'];
?>

<br><br><br><br>

<?php 
$id
=$url_array['query'];
$anfrage="SELECT * FROM n WHERE ID $id";
$ausgabe mysql_query($anfrage)
    OR die(
"Error: $anfrage <br>".mysql_error());

echo 
"<table border=1>";
while(
$row mysql_fetch_object($ausgabe))                                    // object erzeugt
   
{
    echo 
"<tr>";
    echo 
"<td width=150>"$row->Autor,        "    </td><br>" ;
    echo 
"<td width=100>"$row->Art,        "    </td><br>" ;    
       echo 
"<td width=400>"$row->Titel,     "   </td><br>" ;
    echo 
"<td width=300>"$row->Untertitel,    "</td><br>" ;
    echo 
"<td width=50>"$row->Erscheinungsjahr,    "</td><br>" ;
    echo 
"</tr>";
   }                    
echo 
"</table>";
?>
Kann man das so machen, oder sollte man da lieber anders vorgehen?
googles ist offline   Mit Zitat antworten
Alt 12.07.2011, 15:08  
PHPascal
Gast
 
Beiträge: n/a
Standard

Und wenn nicht nur die ID mitgegeben wird? Mach dich bitte zuerst einmal mit GET und POST vertraut, und informier dich dabei gleich auch noch über SQL-Injections. Das Script ist ja (so, wie es jetzt ist) geradezu eine Einladung für Script-Kiddies.

Aber sonst kannst du das durchaus so machen. Ich würde vielleicht noch die Bedingung abfangen, dass kein Eintrag in der Datenbank ist, denn dann hast du eine Tabelle ohne Inhalt, die nicht mehr valide ist.

Geändert von PHPascal (12.07.2011 um 15:12 Uhr).
  Mit Zitat antworten
Alt 12.07.2011, 17:08  
Neuer Benutzer
 
Registriert seit: 05.07.2011
Beiträge: 7
PHP-Kenntnisse:
Anfänger
googles befindet sich auf einem aufstrebenden Ast
Standard

vielen Dank für den Hinweis ,der mir nicht ganz neu gewesen ist (siehe oben Nikosch). Aber meine Frage war ja eine andere... Vielen Dank für den Tip mit dem leeren Eintrag!
googles ist offline   Mit Zitat antworten
Alt 12.07.2011, 17:24  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Hallo, wo genau ist jetzt der Link auf deine ID?

Nehmen wir an er ist so:
http://example.org/details.php?id=5
PHP-Code:
<?php
// .. DB Verbindung mit mysql_connect() und mysql_select_db() öffnen
$id = isset($_GET["id"]) ? (int)$_GET["id"] : 0// Kurzform für: if (isset($_GET["id")) { $id = (int)$_GET["id"]; } else { $id = 0; }
$select "SELECT * FROM table WHERE id = $id LIMIT 1";
$res mysql_query($select) or die(mysql_error());
$exists mysql_num_rows($res) != 1;
if (!
$exists) {
  die(
"ID gibt es nicht");
}
$object mysql_fetch_object($res);
print_r($object);
?>
mysql_real_escape_string() brauchst du hier ausnahmsweise nicht, da du mit (int) bereits sicherstellst, dass in $id nur eine Zahl steht. Eine Zahl erlaubt keine SQL-Injection. Falls du aber nach dem Namen suchst, wäre es erforderlich.

Bringt dich das soweit im Verständnis zu Parametern und der Abfrage weiter?
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 12.07.2011, 18:08  
Neuer Benutzer
 
Registriert seit: 05.07.2011
Beiträge: 7
PHP-Kenntnisse:
Anfänger
googles befindet sich auf einem aufstrebenden Ast
Standard

Hi!

Danke für Deine Antwort.

Der Link auf meine ID steht im ersten Post - dein Beispiel [...]..php?id=5 trifft aber im Kern die Sache ganz richtig.

Zunächst möchte ich sagen, dass mein script oben funktioniert - ich bin halt nur noch nicht so lange dabei, um qualifiziert darüber zu befinden, ob es denn auch gut ist.

Dein Script (@Chriz) habe ich ausprobiert - bekomme jedoch immer nur einen Syntax-Fehler ausgegeben:
Zitat:
[...]'table WHERE id = 0 LIMIT 1' at line 1
Das wird an dieser Stelle (Z.3 im letzten Post) liegen:
PHP-Code:
isset($_GET["id"]) 
id ist ja nicht definiert...also wird php die id, die nun hinten an der URL hängt auch nicht als solche erkennen können. Daher lese ich die 'query' in der URL durch parse aus und füge Sie dann in mein script über $id=... ein (vgl. post #4).

Aber was wirklich super ist, ist nun die Info, dass ich an dieser Stelle noch kein mysql_real_escape_string() brauche. Danke v.a. dafür!

LG
googles ist offline   Mit Zitat antworten
Alt 12.07.2011, 18:24  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Du solltest zwei Skripte schreiben:
item_list.php
(ohne ID, da es ja alle anzeigt)
und
item_details.php?id=X
(mit ID, da es ja die Details eines Items anzeigen soll)

Solange niemand deine URLs manipuliert und rumtestet, sollte der Zustand id=0 *nie* auftreten. Sprich wenn das in deinem Skript der Fall ist, hast du wohl einen Denkfehler in der Konzeption. Oder aber du vermischt beide Skripte, in dem du einmal, wenn keine ID angefordert wird die Liste anzeigen möchtest und einmal die Detailansicht eines Items. Dann muss dir klar sein, was für ein Query du jeweils bauen möchtest:
Einmal, für die Detailansicht mit WHERE id = X und einmal komplett ohne WHERE-Bedingung (für die gesamte Liste). Das kannst du Recht einfach mit
PHP-Code:
<?php
<?php
// .. DB Verbindung mit mysql_connect() und mysql_select_db() öffnen
$select "SELECT * FROM table";
$hasId = isset($_GET["id"]);
if (
$hasId) {
  
$id = (int)$_GET["id"];
  
$select .= " WHERE id = $id LIMIT 1";
}
$res mysql_query($select) or die(mysql_error());
while (
$object mysql_fetch_object($res)) {
  echo 
"<pre>"print_r($objecttrue), "</pre><hr />";
  
// oder eben dein <table>-Konstrukt
}
?>
hinbekommen.

Ein parse_url() brauchst du in jedem Fall nicht! Wenn du beide Skripte vermischt, muss dir nur klar sein
1.) wie stellst du fest, welcher Zustand angefordert wird (isset($_GET["id"]) und
2.) wie muss dein Query für die jeweilige Variante lauten und
3.) wie muss deine HTML-Ausgabe für die jeweilige Variante lauten.

Eine Trennung der Aufgaben in zwei verschiedene Skripte dient der Übersicht und ist auch üblich. Machs dir nicht zu einfach
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 12.07.2011, 20:13  
Neuer Benutzer
 
Registriert seit: 05.07.2011
Beiträge: 7
PHP-Kenntnisse:
Anfänger
googles befindet sich auf einem aufstrebenden Ast
Standard

Mensch Chriz - wie soll ich Dir für deine Mühen danken? Glaube mir, es freut mich sehr, dass Du mich so engagiert berätst!

Ich kann Dich insofern beruhigen, als dass ich zwei scripte verwende - genauso wie Du es am Anfang Deines Posts geschrieben hast.

Warum verwende ich parse_url()?: Die Übergabe der ID von script-a zu script-b hat mir Kopfschmerzen bereitet, bis ich halt festgestellt habe, dass ich über parse_url() die id (diese wird ja an die URL als 'query' abgelegt) wunderbar aufrufen kann. Und es funktioniert...

Habe nun eine Woche Urlaub - und werde die Scripte mal ruhen lassen/müssen/dürfen... probiere am Anfang nächster Woche aber gleich mal dein Script aus - wenn ich darf.

Und nochmal: Herzlichen Dank!
googles ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
imdb linkliste erstellen mit php Schatzyyy PHP Tipps 2010 5 06.03.2010 21:15
[Erledigt] gesamte Spalte in Array abspeichern Kotbatzen PHP Tipps 2009 23 05.09.2009 00:01
Link mit ID in Echo einbinden Mitch26 PHP Tipps 2009 4 06.08.2009 17:02
[Erledigt] mail() mit &lt;a herf... Link in Html Mail geht nicht!? BettinaSyn PHP Tipps 2009 11 16.05.2009 22:28
erst beim zweiten Login funktioniert Link scarry_77 PHP Tipps 2009 5 14.04.2009 00:35
Link Automatisch erstellen errox PHP Tipps 2008 11 04.02.2008 21:09
Link als Formular? Toby PHP Tipps 2008 1 22.01.2008 00:51
klick auf Link soll DB-Backup.sql erstellen madSoul Datenbanken 4 27.01.2006 10:57
Hp nur mit Text eingabe erstellen webmaster_andre PHP Tipps 2005-2 46 15.09.2005 16:12
für jede datei in einem pfad einen link erstellen Tic Rederon PHP Tipps 2005-2 7 18.08.2005 16:27
Längere Texte abbrechen und Link [mehr...] erstellen. Wie? PHP Tipps 2005-2 6 09.06.2005 20:39
Link erstellen PHP Tipps 2004 2 05.07.2004 19:23
absoluter link PHP Tipps 2004 10 01.07.2004 23:00
PHP Link ??? PHP Tipps 2004 4 25.06.2004 17:24

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php link erstellen, php verweis erstellen, \link erstellen php\, php email link erstellen, php code link erstellen, php url link erstellen, link zu einer seite erstellen in php, php 7 verlinkung machen, php links erstellen, link per datenbank id aufrufen, php url generieren, php automatisch link erzeugen wenn eintrag in db, php link id=, links generieren für anfänger

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:47 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum