PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Linkliste zu Datenstamm generieren, also aus einer übers. Ausw. in Details verlinken



Gutschy
03-06-2004, 09:01
Hi,

ich glaub das ist mal ein interessantes Problem, wenn auch wieder klassisch.

Über Filterfunktion wird eine Teilauswahl Tabellarisch aus meinem Datenstamm angezeigt, z.B. alle die mit "Sch" anfangen, aus Kobblenz kommen und noch einen Jahresumsatz von 2000,-€ bis 3000,-€ haben, zu all diesen Leuten will ich jetzt eine Einzel-Detail Ansicht. Also erstmal die Übersichtstabelle:


Schlecker....; Koblenz...; 2588,-..; ..Details..
Schmidt......; Koblenz...; 2344,-..; ..Details..
Schmidt......; Koblenz...; 2147,-..; ..Details..
Schuster....; Koblenz...; 2358,-..; ..Details..
Schüler......; Koblenz...; 2911,-..; ..Details..

Wie baue ich zu den Details jetzt die passenden Links, der Kundenstamm umfasste immerhin etwa 3000 Adressen.

Im Moment überlege ich mir eine komplette SQL Abfrage inkl. Submit Funktion in eine Zelle zu packen, das könnte schon irgendwie gehen, nur wie kriege ich diese Information automatisch in die Tabelle eingepflegt, das kann ich mir im Moment noch gar nicht vorstellen.

Gutschy

Edit:

Koblens richtig Geschrieben (s.o.) :D :D

undefined
03-06-2004, 10:16
Also das kann ich mir als Koblenzer Schängel jetzt nicht verkneifen. Es heist weder Kobblenz noch Koblens sondern Koblenz :D
So kann man wenig schreiben die Datenfelder sind hier eher gefragt.

Gutschy
03-06-2004, 10:59
Gibt es keine Link-DingsBums die einfach auf die Kunden ID 6 Spalten weiterrechts zugreift.:confused:

Gutschy
03-06-2004, 11:56
Na ja gut, es geht ja nicht darum herauszufinden welche ID oder Detail-ID der Kunde hat. Sondern wie präpariere ich ein Feld in einer Tabelle so, das es mir gleich einen Link bereitstellt oder gleich eine Abfrage sendet die als Antwort alle Felder zu diesem bestimmten Kunden sendet.

Bei "klick" auf Details sollen einfach alle anderen Felder zum Kunden angzeigt werden: Strasse, Vorname usw. am besten auf einer neuen Seite, das läßt sich von Hand leicht lösen, aber ich kann ja nicht zu allen Kunden ein Afrage reinschreiben. Aber vielleicht kann ich die Tabelle ja mit Excel bearbeiten wenn es sich so nicht lösen läßt *grübel*.

Gaert
03-06-2004, 12:53
Ich nehme ja mal an, dass du die Tabelle in einer Schleife aufbaust, oder?
Und ich nehme an, dass jeder Datensatz eine eindeutige ID besitzt...

In dem Fall ist es ja wohl ein leichtes, folgendes auszugeben:


<?php
//kleines Beispiel
echo "<table>\n";
foreach($records as $rec) {
echo "<tr><td>";
echo $rec['name'];
echo "</td><td>";
echo $rec['ort'];
echo "</td><td>";
echo $rec['plz'];
echo "</td><td>";
echo "<a href=\"detail.php?id=\"" . $rec['id'] . "\">detail</a>";
echo "</td></tr>\n";
}
echo "</table>\n";
?>


In detail.php kannst du dann anhand von der ID die Detaildaten aus der Datenbank ziehen...

Gutschy
03-06-2004, 15:05
@Gaert, genau das war die Lösung, super vielen Dank!!!! Und klappt auch schon so einigermaßen, die ID kommt auf jeden Fall an.

Nur eine SQL Abfrage aufgrund der ID will einfach nicht. Obwohl sie in phpMyAdmin einwandfrei funzt.

Das Skript sieht jetzt so aus:



<?php


include("verbind.php");

$Name=$HTTP_GET_VARS['kunde'];
echo "$Name<br>";
echo "$kunde<br>";


$sql="SELECT anrede, vorname, strasse, plz, ort, telefon, liefadr, bemerk1, kunde, kennung ";

$sql.=" FROM adressenkl ";

$sql.=" WHERE kunde=$Name";


print($sql);


$ergebnis=mysql_query($sql);
$feld=mysql_fetch_array($ergebnis);
//$feld=mysql_fetch_row($ergebnis);

print($feld[0]);

?>



Und produziert folgende Ausgaben:

10022
10022
SELECT anrede, vorname, strasse, plz, ort, telefon, liefadr, bemerk1, kunde, kennung FROM adressenkl WHERE kunde=10022

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\projekt\xampp\htdocs\projekt03\details.php on line 31


Weder "fetch_row" noch "fetch_array" wollen funktionieren. Die Zahlen sind die ID's und der SQL Ausdruck läuft ja auch ohne Probs.

Gaert
03-06-2004, 15:41
@Claudine: Das Semikolon brauchst du bei einem einzelnen Query nicht zwingend.

@Gutschy: Ein echo mysql_error() nach mysql_query() wirkt in solchen Fällen Wunder!

Gutschy
03-06-2004, 16:15
@Gaert, die Idee hat schon was geniales:rolleyes: (nein, hätte mir nicht selber enfallen können)

Leider weigert Xampp auch hier. Vielleicht ist irgendeine .config Datei ein wenig neben der Spur oder so.:confused: Hier mal der Code und was daraus wurde:



......................

print($sql);


$ergebnis=mysql_query($sql);
print(mysql_errorno());
print(": ");
print(mysql_error());
//$anz=mysql_num_fields($ergebnis)
//$feld=mysql_fetch_array($ergebnis);

//print($feld[0]);

?>


Die Fehlermeldung:

Fatal error: Call to undefined function: mysql_errorno() in D:\projekt\xampp\htdocs\projekt03\details.php on line 30

Gutschy
03-06-2004, 16:23
Hab natürlich die Schreibweise der error Functionen ein paar mal Variert.

Ob es was hilft das Zeug mal zuhause einzuspielen? Dort hab ich ein bewährtes LAMP als Eigenbau und hier nur eine XP Kiste mit Xampp, so einem vorgebauten Teil.

Gaert
03-06-2004, 17:26
Die Funktion heißt mysql_errno() und nich mysql_errorno()!

mehlvogel
04-06-2004, 07:42
Ein kleiner Klick hier: http://de.php.net/manual/de/ref.mysql.php Hätte das Problem auch gelöst, denn dort steht wie die Funktion heißt ;)

Gutschy
04-06-2004, 08:13
Ok es läuft, das Problem lag an der Datenbankanbindung, weil ich am Skript rumgefrickelt habe ohne mir über alle Konsequenzen bewußt gewesen zu sein.

Die entscheidene Info habe ich über mysql_error bekommen, nochmal danke an Gaert, tatsächlich steht aber in meinem Lehrbuch auch der Ausdruck mysql_errorno, auch wird er dort wiederholt angewandt. Na gut ist Käse, werde dem Autor mal eine Mail schreiben.

So jetzt bin ich doch ein entscheidenes Stück weiter.:)

Gaert
04-06-2004, 16:01
Da hast du ja mal ein richtiges Schrottbuch erwischt - gibts in der PHP Welt leider häufiger weil sich in der Vergangenheit jeder 0815 Autor mit nem viertel Jahr PHP Erfahrung an dem Thema vergriffen hat... meistens wird ja eh nur das PHP Manual (falsch) abgeschrieben.