Datensätze aus SQL Tabelle abfragen u. nach bestimmter Reihenfolge in Formularfelder

phpameise

Mitglied
Ich habe 2 MySQL Tabellen. In Tabelle1 stehen User Datensätze, in Tabelle2 werden zu jedem User Daten gespeichert. Tabelle2 hat 4 Spalten: `user_id`, `RefJahr`, `RefVeranstaltung`, `RefDozent`. Es können dort bis zu 3 Datensätze pro User drinstehen. Nun sollen die User diese Daten ändern können. Das heißt, Sie haben eine Page, auf der 3 Formular-Eingabe-Felder sind „ Jahr, Veranstaltung, Dozent“ und das alles 3-mal. Die Felder heißen `RefJahr1`, `RefVeranstaltung1`, `RefDozent1`; `RefJahr2`, `RefVeranstaltung2` … usw.
Jetzt möchte ich, dass in den Feldern bei Aufruf der Seite die momentan eingestellten Werte angezeigt werden. Wichtig ist mir noch, dass nach RefJahr abwärts geordnet angezeigt wird.
Mein bisheriger Code Datenbankabfrage und Zusammenstellung eines Datensatzes:

Code:
mysql_select_db($database_DB, $ DB);
$query_Referenzen_Satz = "SELECT * FROM Tabelle2 WHERE RefJahr != '' AND tblReferenzen.user_id = '$_SESSION[user_id]' ORDER BY RefJahr DESC";
$Referenzen_Satz = mysql_query($query_Referenzen_Satz, $ DB) or die(mysql_error());
$row_Referenzen_Satz = mysql_fetch_assoc($Referenzen_Satz);
$totalRows_Referenzen_Satz = mysql_num_rows($Referenzen_Satz);

Mit folgendem Code kann ich zwar das in der Reihenfolge 1. Datensatzpaar abfragen, aber eben nur das erste Paar.

PHP:
value="<? echo $row_Referenzen_Satz['RefJahr']; ?>"
value="<? echo $row_Referenzen_Satz['RefVeranstaltung']; ?>
value="<? echo $row_Referenzen_Satz['RefDozent']; ?>"

Jetzt bin ich echt kein Programmierer ;), aber gehe ich recht in der Annahme, dass ich eine Do-While-Schleife brauche? So in der Art:

PHP:
<?php do { ?>
……
<?php } while ($row_Referenzen_Satz = mysql_fetch_assoc($Referenzen_Satz)); ?>

Kann mir jemand einen Tip geben, wo ich die genau einbauen muss? Vielleicht an diesem Beispiel:

PHP:
<input name="RefJahr1" type="text" id="RefJahr1" value="<? echo $row_Referenzen_Satz['RefJahr']; ?>" maxlength="4">
 
Nein keine do-while Schleife, die wird immer mindestens einmal aus Ausgeführt das würde zu Fehlern führen wenn noch keine Datensätze vorhanden sind.

Sollen alle 3 Reihen immer sichtbar sein oder nur dann wenn sie gebraucht werden?
Wenn ja packe alle Daten mit einer While Schleife in ein Array und push leere Werte hinein wenn das Array weniger als 3 Elemente hat.

Ungefähr so:
PHP:
$rows=array();
while($row = mysql_fetch_object($Referenzen_Satz))
  $rows[]=array($row->RefJahr, $row->RefVeranstaltung, $row->RefDozent);

while(count($rows)<3)
  $rows[]=array('','','');

foreach($rows as $row) {
  echo $row[0]; // RefJahr
  echo $row[1]; // RefVeranstaltung
  echo $row[2]; // RefDozent
}

SQL:
SELECT * FROM Tabelle2 WHERE RefJahr != '' AND tblReferenzen.user_id = '$_SESSION[user_id]' ORDER BY RefJahr DESC

Du solltest dich auf eine schreibweise festlegen, entweder fooBar oder foo_bar und diese konsequent anwenden. Und SELECT * solltest du dir auch abgewöhnen, das ist ein typischer Anfängerfehler.
SQL:
SELECT `RefJahr`, `RefVeranstaltung`, `RefDozent`
FROM `tblReferenzen`
WHERE `RefJahr` != "" AND `user_id` = '.$_SESSION['user_id'].' 
ORDER BY `RefJahr` DESC
 
Zuletzt bearbeitet von einem Moderator:
Danke für die vielen Hinweise. Da ich auf dem Formular Textfelder und Selectboxen (deren Inhalt auch auf eine Tabelle zurückgreift) benutze, dachte ich, dass ich zum Beispiel das erste Feld mit wert[0][0] füllen kann, das zweite mit wert[0][1] und so weiter****? Wie mach ich das dann?
 
Im Prinzip geht es ja fast, wenn ich folgendes schreibe:
PHP:
 echo $row[0][0]; // RefJahr1
  echo $row[0][1]; // RefVeranstaltung1
  echo $row[0][2]; // RefDozent
  echo $row[1][0]; // RefJahr2
  echo $row[1][1]; // RefVeranstaltung2
  echo $row[1][2]; // RefDozent2
  echo $row[2][0]; // RefJahr3
  echo $row[2][1]; // RefVeranstaltung3
  echo $row[2][2]; // RefDozent3
Aber er gibt bei den Textelementen nur 4 Zeichen aus ?
 
Hier nun mein funktionierendes Endergebnis:

Code:
$Satz_Referenzen = mysql_query ("SELECT user_id, RefJahr, RefVeranstaltung, RefDozent FROM tblReferenzen WHERE RefJahr != '' AND user_id='$_SESSION[user_id]' ORDER BY tblReferenzen.RefJahr DESC");
while ($rowRef = mysql_fetch_array($Satz_Referenzen)) {
    $rowsRef[] = $rowRef;
};

PHP:
//Zeilen werden durch Ziffer bestimmt
value="<?php echo $rowsRef[0]['RefJahr']; ?>"
value="<?php echo $rowsRef[0]['RefVeranstaltung']; ?>"
value="<?php echo $rowsRef[0]['RefDozent']; ?>"


Danke für die Hilfe
 

Neue Beiträge

Zurück