Ausgabe über mehrere Tabellen

Spellchiller

Mitglied
Hallo zusammen,

ich habe eine Frage:

Ich habe folgende Tabellen:

tbl_tattoo
kd_nrNachnameVorname
1MaxiMustermax
2MaxMustermann

tbl_kunden
kd_tattoo_nrtattoo_nrtattoo_name
11Bein
12Arm
23Arm
14Rücken

tbl_preis
tattoo_nr_preistattoo_preistattoo_anzahlung
110050
250050
3150100
42000

Das ist mein Code bisher:

PHP:
<?php
$ergebnis = mysql_query('SELECT * FROM tbl_kunden
                      JOIN tbl_tattoo
                      ON tbl_kunden.kd_nr = tbl_tattoo.kd_tattoo_nr
                      JOIN tbl_preise
                      ON tbl_tattoo.tattoo_nr = tbl_preise.tattoo_preis_nr
                      WHERE tbl_kunden.kd_nr = '.intval($_GET["kd_nr"]).';');

if (!$ergebnis) { 
die('Ungültige Anfrage: ' . mysql_error()); 
} 
$row = mysql_fetch_array($ergebnis); 
$kd_nr = $_GET["kd_nr"];

?>

Nun möchte ich gerne, nachdem ich mir meinen Entsprechenden Kunden ausgesucht hab, z.B. Maxi Mustermax, alle bisherigen Tattoos anzeigen lassen. Die Ausgabe der Namen klappt. Jedoch erhalte ich immer nur das erste Tattoo.
PHP:
<tr>   
    <td>1. Tattoo:<br>
      <input type="text" size="20" maxlength="50"
name="kd_tattoo1" value="<?= $row['tattoo_name'] ?>" ></td>
<tr>   
    <td>2. Tattoo:<br>
      <input type="text" size="20" maxlength="50"
name="kd_tattoo2" value="<?= $row['tattoo_name'] ?>" ></td>

Was und wie muss ich das denn ändern um alle angaben zu bekommen?

Danke im vorraus!
 
Zuletzt bearbeitet:
Du müsstest das Ergebnis in einer while-Schleife ausgeben. Beispiel:

PHP:
while ($row = mysql_fetch_array($ergebnis)) {
 echo $row["tattoo_name"]."<br />";
}
 
Hi. Also wenn ich es so mache kommt eine Fehlermeldung.
Code:
<td>1. Tattoo:<br>
      <input type="text" size="20" maxlength="50"
name="kd_platz1" value="<?= while ($row = mysql_fetch_array($ergebnis)) { echo $row["tattoo_name"]."<br />";} ?>" ></td>

Parse error: syntax error, unexpected T_WHILE in /www/htdocs/kunde_bearbeiten.php on line 135
 
Mach aus '<?=' einfach '<?php' Denn das was du hast is tein Echo und nicht der Beginn eines normalen PHP-Abschnittes

PHP:
<td>1. Tattoo:<br>
      <input type="text" size="20" maxlength="50" name="kd_platz1" value="
<?php while ($row = mysql_fetch_array($ergebnis)) { echo $row["tattoo_name"]."<br />";} ?>" ></td>
 
Hallo Yaslaw,

das funktioniert ja schonmal ganz gut. Jedoch habe ich noch nicht das gewünschte Ergebnis. Ich bekomme nun in einem Textfeld alle angaben. Ich benötige das jedoch in seperaten Textfeldern.

Also
PHP:
<td>1. Tattoo:<br>
      <input type="text" size="20" maxlength="50" name="kd_platz1" value="
<?php while ($row = mysql_fetch_array($ergebnis)) { echo $row["tattoo_name"];} ?>" ></td>

<td>2. Tattoo:<br>
      <input type="text" size="20" maxlength="50" name="kd_platz1" value="
<?php while ($row = mysql_fetch_array($ergebnis)) { echo $row["tattoo_name"];} ?>" ></td>
usw.
 
Deswegen hatte ich mein Beispiel oben so formuliert, dass Du beim Austesten davon selbst erkennst, wie Du die HTML-Ausgabe machen musst. Du musst die Tabellenzeile mit der while-Schleife umgeben, und nicht innerhalb der Tabellenzelle die while-Schleife schreiben.
 
Hmm. Also insgesamt sieht das Konstrukt so aus:

Code:
<tr>   
<td>1. Tattoo:<br>
      <input type="text" size="20" maxlength="50" name="kd_platz1" value="
<?php while ($row = mysql_fetch_array($ergebnis)) { echo $row["tattoo_name"];} ?>" ></td>
    <td>Gestochen von:<br>
      <select name="gestochen1" size="2" multiple  value="<?= $row['tattoo_gestochen'] ?>">
      <?php
        
	switch ($row['tattoo_gestochen']) 
	{ 
	 case ("A") : 
		 echo "<option selected>A</option>";
		 break; 
	 case ("B") : 
		 echo "<option selected>B</option>"; 
		 break;
	 default : 
		 echo "<option>A</option>";
		 echo "<option>B</option>";
		 break;
	}
	?>
      </select>
      </td>
      <td>
      Anzahlung:<br>
      <input type="text" size="20" maxlength="10"
name="kd_preis1_anzahlung" value="<?= $row['tattoo_anzahlung'] ?>" ></td>
      
  </tr>

<tr>   
<td>2. Tattoo:<br>
      <input type="text" size="20" maxlength="50" name="kd_platz1" value="
<?php while ($row = mysql_fetch_array($ergebnis)) { echo $row["tattoo_name"];} ?>" ></td>usw.

An welcher Stelle soll die Schleife denn stehen? Das ist mir noch nicht ganz klar.
 
Ok, nochmal konkreter vorgekaut:

PHP:
while ($row = mysql_fetch_array($ergebnis)) {
?><tr>
 <td>1. Tattoo:<br><input type="text" size="20" maxlength="50" name="kd_platz1" value="<?php  echo $row["tattoo_name"]; ?>" ></td>
 </tr><?php
}

Jetzt musst Du nur noch die Nummerierung ("1.", "2.") korrekt setzen.
 
Klappt!

So hab ich es gelöst:

PHP:
 <tr><?php  $i=1;  
while ($row = mysql_fetch_array($ergebnis)) {
?><tr>
 <td><?php echo "$i. Tattoo:" ?><br>
 <input type="text" size="20" maxlength="50" name="kd_platz1" value="<?php  echo $row["tattoo_name"]; ?>" ></td> <?php $i++?>
    <td>Gestochen von:<br>
      <select name="gestochen1" size="2" multiple  value="<?=$row['tattoo_gestochen'] ?>">
      <?php
        
	switch ($row['tattoo_gestochen']) 
	{ 
	 case ("A") : 
		 echo "<option selected>A</option>";
		 break; 
	 case ("B") : 
		 echo "<option selected>B</option>"; 
		 break;
	 default : 
		 echo "<option>A</option>";
		 echo "<option>B</option>";
		 break;
	}
	?>
      </select>
      </td>
      <td>
      Anzahlung:<br>
      <input type="text" size="20" maxlength="10"
name="kd_preis1_anzahlung" value="<?= $row['tattoo_anzahlung'] ?>" ></td>
      
  </tr><?php } ?>
<tr>
    <td><?php echo "$i. Tattoo:" ?><br>
usw.

Was nur komisch ist, ist die Tatsache, dass das erste Tattoo nicht angezeigt wir. Vermutlich liegt es daran, das kd_nr und kd_tattoo_nr identisch ist. In meinem beispiel oben zeigt er mir bei Kunde 1 das Tattoo 2 und 4 an. Nicht aber 1. Woran könnte das Liegen?
 
Zurück