in PHP eine for schleife mit htmlcode einbinden

jan4321

Lt. Commander
Registriert
Juli 2007
Beiträge
1.929
hi ich muss für unseren PC untericht aus eier MYSLQ- datenbank die daten auslesen und in eine Tabele einfügen. Hab aber net so den Plan davon und erhalte daernt ne fehlermeldung
Hir der code:

if (!$link) {
die('Keine Verbindung möglich: ' . mysql_error());
}
$result = mysql_query('SELECT * FROM adressen');
if (!$result) {
die('Abfrage fehlgeschlagen:' . mysql_error());
}
$anzahlZeilen = mysql_num_rows( $result );




/* Beispiel 1 */

for ($i = 1; $i <= $anzahlZeilen; $i++) {
$r1 = mysql_result($result, $i-1 , "vorname");
$r2 = mysql_result($result, $i-1 , "name");
$r3 = mysql_result($result, $i-1 , "ort");
$r4 = mysql_result($result, $i-1 , "postleitzahl");
$r5 = mysql_result($result, $i-1 ,"straße");
$r6 = mysql_result($result, $i-1 , "hausnummer");

echo "<table>
<tr>
<td><?php echo "$r1" ?></td>
<td><?php echo "$r2" ?></td>
<td><?php echo "$r3" ?></td>
<td><?php echo "$r4" ?></td>
<td><?php echo "$r5" ?></td>
<td><?php echo "$r6" ?></td>
</tr>

</table>";

} ?>
</body>
</html>

Was mache ich hir falsch, den der PHP Code in der tabelle wird net als solcher erkannt
 
Zuletzt bearbeitet:
hat net viel gegolfen jetzt sagt der browser: Parse error:

parse error, unexpected T_LNUMBER, expecting ',' or ';' in

C:\Jannis\mysqlausgabe.php on line 55
das is zeile 55
echo "<table border="1" cellpadding="1" cellspacing="1">

Update: habe grade border="1" cellpadding="1" cellspacing="1" entfernt und jetzt gehts aber ich sehe keine Tabellenlinien mehr
 
Zuletzt bearbeitet:
Was steht denn da? Ein ";" wird erwartet.

Warum wird ein ";" erwartet? Schau mal nach, wo in der Zeile das Semikolon fehlt.
 
Und wenn du einfach

PHP:
 echo "<table>
<tr>
    <td>$r1</td>
    <td>$r2</td>
    <td>$r3</td>
    <td>$r4</td>
    <td>$r5</td>
    <td>$r6</td>
</tr>
</table>";
schreibst?

im übrigen ist echo "<table border="1" cellpadding="1" cellspacing="1"> aus mehreren gründen verkehrt: zum einen verwendest du Hochkommas sowohl um den befehl einzuleiten, als auch um die Einser-Werte zuzuweisen - und du vergisst das Semikolon, wie der Parser dir schon mitgeteilt hat. Auch hast du vergessen die doppelten Hochkommata zum Beenden der Echo-Ausgabe zu setzen. Also würde ich dir empfehlen es einfach mal so zu machen:

echo "<table border='1' cellpadding='1' cellspacing='1'>"; oder du escapest die Hochkommas mittels Slash ;)
 
Zuletzt bearbeitet:
Anführungszeichen innerhalb deines echo musst du mit \ Backslash escapen, also \".

Sonst ist unklar, wo der Code endet.

echo "<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\"> ... ";
 
jan4321 schrieb:
hat net viel gegolfen jetzt sagt der browser: Parse error:

parse error, unexpected T_LNUMBER, expecting ',' or ';' in

C:\Jannis\mysqlausgabe.php on line 55
das is zeile 55


Update: habe grade border="1" cellpadding="1" cellspacing="1" entfernt und jetzt gehts aber ich sehe keine Tabellenlinien mehr

das muss so aussehen:

PHP:
echo "<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\">";


EDIT: war wohl jemand schneller ...
 
wenn du

Code:
echo "<table border="1" cellpadding="1" cellspacing="1">

das schreibst, erwartet er hinter dem zweiten " ein ;. d.h. du musst escapen mit \.
also so:

Code:
echo "<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\">


oder wenn das eine alleinstehende zeile ist so:

Code:
echo "<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\">";


gruß
hostile

//edit: gleich 4 antworten, wie hilfsbereit wir doch sind ;D
 
Warum sind die echos in der Tabelle eig nie mit einem ; abgeschlossen? Muss des so? :rolleyes:
 
Danke ihr habt mir meine hausaufgaben 1 gerettet:D

hir hatte ich nur ein PHP befehl. Nur bei mehreren muss man jeden mit einem ; beenden
 
@Lar337

die nichtdruckbaren zeichen sind dann mit im code. d.h. wenn du dir den quelltext im browser anschaust ist der genauso strukturiert wie im php-code.

gruß
hostile
 
Ich meinte dieses Beispiel hier, das im ersten Post war:

echo "<table>
<tr>
<td><?php echo "$r1" ?></td>
<td><?php echo "$r2" ?></td>
<td><?php echo "$r3" ?></td>
<td><?php echo "$r4" ?></td>
<td><?php echo "$r5" ?></td>
<td><?php echo "$r6" ?></td>
</tr>

</table>";

Wieso müssen da hinter die ganzen echos keine ; ?
 
<?php echo "$r1" ?> ist nur ein befehl in einm PHP code ich könnte dahinter auch eins machen würde aber nichts bring

<?php echo "$r1"; ?> ist das gleiche
 
der auslese stil is schon grauenvoll :D

PHP:
echo "<table>";
$q = mysql_query("Select * from table");
while($eintrag = mysql_fetch_assoc($q)){
/* 
$eintrag ist ein Array mit allen im query gefragten feldern
(zb. $eintrag['feld1'] etc)
*/

echo "<tr>
<td>".$eintrag['feld1']."</td><td>".$eintrag['feld2']."
</tr>";
}
echo "</table>";
 
Schlechter Codestil:
PHP:
echo "$var";

besserer Codestil:
PHP:
echo $var;

Ein SELECT * halte ich auch für unvorteilhaft.
Evt. wählst Du mehr spalten und Datensätze aus als Du tatsächlich brauchst.

SELECT forename, surname, zip, city FROM address finde ich optimaler.

Via PHP würde ich die auslesung wie folgt machen:

PHP:
$sql_data = 'SELECT forename, surname, zip, city FROM address ORDER BY city';
$query_data = mysql_query($sql_data);

while ($rs_data = mysql_fetch_object($query_data)) {

print '<td>' . $rs_data->forename . "</td>\n";
print '<td>' . $rs_data->surname . "</td>\n";

}

Das soll nur als Beispiel dienen wie man es noch realisieren könnte.

Des weiteren sollte man HTML & PHP voneinander trennen. Das dies möglich ist, zeigen Template Engines und auch freie Scripte a la Roundcube Webmailer.
 
scor schrieb:
der auslese stil is schon grauenvoll :D

PHP:
echo "<table>";
$q = mysql_query("Select * from table");
while($eintrag = mysql_fetch_assoc($q)){
/* 
$eintrag ist ein Array mit allen im query gefragten feldern
(zb. $eintrag['feld1'] etc)
*/

echo "<tr>
<td>".$eintrag['feld1']."</td><td>".$eintrag['feld2']."
</tr>";
}
echo "</table>";

Das ist IMO auch nicht besser :) :) :

Warum verwendest Du bei PHP-Variablen Anführungszeichen wenn innerhalb der Anführungszeichen keine Steuerzeichen oder Variablen für den PHP Parser verwendet werden?

PHP:
echo '<table>';

PHP:
$var = 'Welt';

echo "Hallo $var";

Oder

PHP:
$var = 'Welt';

print 'Hallo ' . $var;
 
Hmm, mal wieder was gelernt... Auch wenns was ist, was man wohl nicht unbedingt wissen muss... Ich schließe immer alles ab :D
 
jo weiß ich ich lerne es auch erst seit 2 Wochen
 
Mache es nur so zwischendurch immer mal wieder.
Benutze es ja eh nie, deshalb beschäftige ich mich selten richtig damit. Aber das nötigste kriege ich, wenn auch mit etwas Nachgucken in Hilfen, recht gut hin :evillol:
 
excalibur1976 schrieb:
Das ist IMO auch nicht besser :) :) :

Warum verwendest Du bei PHP-Variablen Anführungszeichen wenn innerhalb der Anführungszeichen keine Steuerzeichen oder Variablen für den PHP Parser verwendet werden?

sauberere Stil, ist denn eine textvariable, heißt sie nun
$test oder $test["test"] oder $test['test'], sie behinhaltet "variableninhalt" <-- mit "".

und natürlich Syntax highlight, siehst du in deinem eigenen beispiel da schon sehr schön ;)
 
Zuletzt bearbeitet:
Zurück
Oben