Daten auslesen und verlinken ?

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Condor
Mitglied
Beiträge: 221
Registriert: 27.02.2002 01:00
Wohnort: Ahlen

Daten auslesen und verlinken ?

Beitrag von Condor »

Hallo,
ich möchte Daten aus meiner DB auslesen und sie als Link darstellen, z.B. die Namen aus der DB auslesen und als Link ausgeben. Sobald man auf diesen Link klickt kommt der dazugehörige Datensatz. Dazu hab ich mir mal so ein Probe-Script gerade gebastelt:

Code: Alles auswählen

<?php include("open.inc.php");


$fields = mysql_list_fields($dbase, $table, $conn);

$sql = "SELECT * FROM $table";

$result = mysql_query($sql, $conn);
if ($result) {
   while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {

      echo "<a href=\"Tabelle-auslese.php?id=".$row[mysql_field_name($fields, 0)].">".$row['Name']."</a><BR>";

   }
} else {
   echo "<P>".mysql_error($conn);
}
mysql_close($conn);
?>
<?PHP

?>
Das funktioniert schon mal. Die Namen werden ausgegeben und es wird daraus ein Link gemacht. Aber wenn ich jetzt auf den Link klicke passiert nichts. Es kommt ein Interner Fehler und das zweite Script nimmt die übergebende "ID" nicht an. Das zweite Script sieht so aus:

Code: Alles auswählen

<?php include("open.inc.php");

$fields = mysql_list_fields($dbase, $table, $conn);
$feldname = mysql_field_name($fields, 0);

$sql = "SELECT * FROM $table WHERE $feldname = '$id'";

$result = mysql_query($sql, $conn);
if ($result) {
   while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
      echo $row['PLZ'];

   }
} else {
   echo "<P>".mysql_error($conn);
}
mysql_close($conn);
?>
<?PHP

?>
Kann mir jemand dabei helfen ? Ist das mit den Feldernamen richtig ? Vielleicht hat jemand sowas schon als Script und könnte mir mal einen Ansatz oder nen Schnipsel posten :grin:
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Re: Daten auslesen und verlinken ?

Beitrag von Pyramide »

Condor hat geschrieben:$sql = "SELECT * FROM $table WHERE $feldname = '$id'";
Wo weist du denn der Variable $id einen Wert zu?
KB:knigge
Condor
Mitglied
Beiträge: 221
Registriert: 27.02.2002 01:00
Wohnort: Ahlen

Beitrag von Condor »

Hi,

na hier:

Code: Alles auswählen

echo "<a href=\"Tabelle-auslese.php?id=".$row[mysql_field_name($fields, 0)].">".$row['Name']."</a><BR>";
oder nicht ?
Auf jedenfall läuft es jetzt doch. Ich hatte einen Fehler. Die zweite datei hiess anders, deshalb kam der komische Fehler. Aber es läuft noch nicht perfekt. Bei der Ausgabe der Namen als Link (DB entält 2 Datensätze) wird bei mir der Name des zweiten Datensatzes gezeigt. Wenn ich dann denn Namen anklicke kommt der komplette Datensatz, aber vom ersten Datensatz. Was läuft da jetzt schief ? Kannst du mir das erklären ? Wäre sehr dankbar.
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Condor hat geschrieben:na hier:

Code: Alles auswählen

echo "<a href="Tabelle-auslese.php?id=".$row[mysql_field_name($fields, 0)].">".$row['Name']."</a><BR>";
oder nicht ?
Da gibst du nur HTML-Code aus, der einen Link erstellt.
Condor hat geschrieben:Bei der Ausgabe der Namen als Link (DB entält 2 Datensätze) wird bei mir der Name des zweiten Datensatzes gezeigt. Wenn ich dann denn Namen anklicke kommt der komplette Datensatz, aber vom ersten Datensatz. Was läuft da jetzt schief ? Kannst du mir das erklären ?
So ganz habe ich dein mysql_field_name Konstrukt nicht verstanden, aber offensichtlich liegt da der Fehler. Warum sprichst du die Feldnamen nicht direkt an? Also z.B. so:

Code: Alles auswählen

$result = mysql_query("SELECT id, name FROM tabelle WHERE ...");
while($row = mysql_fetch_array($result)) {
  echo "<a href="datei2.php?id=$row[id]">$row[name]</a>";
}
KB:knigge
Condor
Mitglied
Beiträge: 221
Registriert: 27.02.2002 01:00
Wohnort: Ahlen

Beitrag von Condor »

Hi,

ich hab das so geschrieben wie ich es gedacht hab das es funktioniert. Es funktioniert ja auch, naja fast, die Namen werden ja falsch ausgespuckt. Die Abfrage ist ne Standartd-Abfrage aus einem meiner Scripte. Ich werde mal deinen Code reinschreiben. Danke erstmal. Schönen Abend noch. Wenn was ist melde ich mich nochmal, ok ? Bis dann.
Condor
Mitglied
Beiträge: 221
Registriert: 27.02.2002 01:00
Wohnort: Ahlen

Beitrag von Condor »

Hi,
jau es funktioniert perfekt. Jetzt muss ich nur noch die Ausgabe HTML-Freundlich machen und dann ist wieder eine Sache fertig, dank dir :lol:
Ich hab da noch eine Frage. Bei:

Code: Alles auswählen

("SELECT id, name FROM tabelle WHERE ...")
Wofür ist die WHERE-Anfrage da ? Müsste doch auch ohne laufen oder nicht ?
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Condor hat geschrieben:Wofür ist die WHERE-Anfrage da ? Müsste doch auch ohne laufen oder nicht ?
Damit kannst du die Daten eingrenzen, die angezeigt werden sollen - also z.B. nur Namen die mit 'A' Anfangen.
KB:knigge
Condor
Mitglied
Beiträge: 221
Registriert: 27.02.2002 01:00
Wohnort: Ahlen

Beitrag von Condor »

Hi,
jaja, was es allgemein heisst weiss ich. Ich wusste nicht worauf das bei meinem Problem bezogen war. Ich brauche das nämlich nicht, noch nicht. Ich hab da aber noch was. Das Script ist so ähnlich. Es soll an bestimmte Leute eine Mail verschickt werden. Es soll in diesem Bsp. nachschauen wer die PLZ 1234 hat und diese in die mailto funktion und zwar auch wenn mehere Leute ausgespuckt werden müssen die alle da rein, also mit semikolon getrennt werden. Das mit dem semikolon dürfte kein Problem sein. Dabei soll das Standard Emailprogramm geöffnet werden. Mein Problem ist, das nur einer ausgespuckt wird, obwohl es drei mit der PLZ gibt. Also es soll ja nur EIN Link erstellt werden, aber in dem dann die drei email-adressen sind und das macht er nicht. Vielleicht bin ich schon zu müde und sehe die Fehler nicht mehr. Was müsste ich noch ändern ?Hier das Script:

Code: Alles auswählen

<?php include("open.inc.php");

$sql = "SELECT * FROM $table WHERE plz = '1234'";

$result = mysql_query($sql, $conn);
if ($result) {
   while ($row = mysql_fetch_row($result)) {
      echo "<a href=\"mailto:".$row['email'].">Condor<a/>";

   }
} else {
   echo "<P>".mysql_error($conn);
}
mysql_close($conn);
?>
<?PHP

?>
shwepsi
Mitglied
Beiträge: 1697
Registriert: 02.06.2003 14:37
Wohnort: NRW - immer dem Monitorleuchten folgen...
Kontaktdaten:

Beitrag von shwepsi »

mysql_fetch_row($result)

tja... mysql_hole_zeile...
nicht Zeilen
probiere es mal mit mysql_fetch_array
also mehrere Zeilen (oder für die Wortklauber: ein Array bestehend aus mehreren Zeilen & Spalten)
Die Weisheit verfolgte mich sekundenlang...
Aber sie überholte mich und war fortan nicht mehr gesehen !!!
Condor
Mitglied
Beiträge: 221
Registriert: 27.02.2002 01:00
Wohnort: Ahlen

Beitrag von Condor »

Hi,
danke für den Tip. Ist aber nur ein Schreibfehler von mir. Aber daran liegt es nicht. Hast du ne idee wie ich mehrer mailtos in die mailto funktion packe ?
Antworten

Zurück zu „Coding & Technik“