Html-Tabelle in php echo ausgeben
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
attribut
befehl
code
datum
einfache methode
ergebnis
fehler
fehlermeldung
formular
frage
gewinn
http
semikolon
syntax
tabelle
unentschieden gewinn
url
zeichen
zeile
-
Ich will die aus einer msql gezogenen Daten als echo in einer Tabelle anzeigen:
$abfrage = "SELECT id, Manschaft, Unentschieden, Gewinn, QuoteGewinn, Quote FROM $datum"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_object($ergebnis)) { echo " <table width="100%" border="1" cellpadding="0" cellspacing="2"> <tr> <td>$row->id</td> <td>$row->Manschaft</td> <td>$row->Unentschieden</td> <td>$row->Gewinn</td> <td>$row->QuoteGewinn</td> <td>$row->Quote</td> <td> </td> <td> </td> </tr> </table> <br>"; }
Dabei erhalte ich die Fehlermeldung:
Parse error: syntax error, unexpected T_LNUMBER, expecting ',' or ';' in ...
Google lieferte mir dabei leider keine brauchbaren ergebnisse
vielen dank im vorraus
mfg
FElix
Beitrag zuletzt geändert: 28.3.2010 10:34:06 von felicius12 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Guck dir mal das erste Echo an:
echo "<table width="100%" border="1" cellpadding="0" cellspacing="2"> ..............
Dein Echo-Befehl wird von Hochkommata eingegrenzt, also es beginnt mit einem " und endet ebenso. Nun hast du allerdings noch "-Zeichen in der Ausgabe selbst, die PHP als Ende des Echo-Arguments nimmt.
Gibt zwei Möglichkeiten:
1. Du "escapest" die "-Zeichen im String mittels vorangestelltem Backslash \, also:
echo "<table width=\"100%\" border=\"1\" cellpadding=\"0\" cellspacing=\"2\"> ..............
2. Du kannst auch ' als Begrenzer des Echo-Befehls nutzen. Das verhält sich aber dann ein wenig anders (siehe dazu Dokumentation).
echo '<table width="100%" border="1" cellpadding="0" cellspacing="2">' ..............
Noch etwas: Wenn eine Fehlermeldung auf dem Bildschirm erscheint, die immer komplett mit angeben, weil in dieser die Zeilennummer des aufgetretenen Fehlers steckt. Anhand der kannst du problemlos feststellen, wo der Fehler im PHP-Quelltext erkannt worden ist.
Allerdings kommt es vor, dass die Ursache des Fehlers sich bereits eine Zeile davor ereignet hat.
Beitrag zuletzt geändert: 28.3.2010 11:03:48 von iniquitius -
VELEN DANK
iniquitius schrieb:
Guck dir mal das erste Echo an:
[code]
Noch etwas: Wenn eine Fehlermeldung auf dem Bildschirm erscheint, die immer komplett mit angeben, weil in dieser die Zeilennummer des aufgetretenen Fehlers steckt. Anhand der kannst du problemlos feststellen, wo der Fehler im PHP-Quelltext erkannt worden ist.
Allerdings kommt es vor, dass die Ursache des Fehlers sich bereits eine Zeile davor ereignet hat.
Das mit dem Fehler ist mir klar soll nur nieman erfahren in welchem ordner das dokument liegt,
und mit Zeile 305 hättest du auchnich sehrviel anfangen könen.
Eine frage noch gibt es eine einfache methode, mit der ich die Zeilen unterschiedlich einfärbe, sieht cooler aus.
Und gibt es eine möglichkeit in jede spalte eine Abhakmöglichkeit zu machen also gewonnen?, und dan abhaken wenn ja und das mit in die tabellespeichern
mfg
Felix
Beitrag zuletzt geändert: 28.3.2010 11:14:09 von felicius12 -
felicius12 schrieb:
Eine frage noch gibt es eine einfache methode, mit der ich die Zeilen unterschiedlich einfärbe, sieht cooler aus.
Das könnte so aussehen:
<table width="100%" border="1" cellpadding="0" cellspacing="2"> <tr> <td class="zeile1">$row->id</td> <td class="zeile2">$row->Manschaft</td> <td class="zeile1">$row->Unentschieden</td> <td class="zeile2">$row->Gewinn</td> <td class="zeile1">$row->QuoteGewinn</td> <td class="zeile2">$row->Quote</td> <td class="zeile1"> </td> <td class="zeile2"> </td> </tr> </table>
Und die CSS dazu:
.zeile1 {background-color: #999;} .zeile2 {background-color: #CCC;}
-
Zu den Checkboxen: Ja, das geht.
Zur Definition von Checkboxen in HTML einfach mal das hier angucken: http://de.selfhtml.org/html/formulare/auswahl.htm#checkboxen
Zur Auswertung der Checkbox mit PHP ein Beispiel:
<input type="checkbox" name="Checkbox1">Klick mich an</input>
<?php
if (isset($_POST['Checkbox1'])) {
/* Häkchen wurde gesetzt */
... tue etwas ...
}
?>
Weitere Infos und wie man Checkboxen in Arrays gruppiert, gibt's hier:
http://www.php-faq.de/q-formular-checkbox.html
Beitrag zuletzt geändert: 28.3.2010 11:35:24 von iniquitius -
iniquitius schrieb: Zu den Checkboxen: Ja, das geht.
Zur Definition von Checkboxen in HTML einfach mal das hier angucken: http://de.selfhtml.org/html/formulare/auswahl.htm#checkboxen
Zur Auswertung der Checkbox mit PHP ein Beispiel:
<input type="checkbox" name="Checkbox1">Klick mich an</input>
<?php
if (isset($_POST['Checkbox1'])) {
/* Häkchen wurde gesetzt */
... tue etwas ...
}
?>
Weitere Infos und wie man Checkboxen in Arrays gruppiert, gibt's hier:
http://www.php-faq.de/q-formular-checkbox.html
Aber die checkbox soll ja in jeder zeile stehn und wenn dann beispielsweise ein haken gesetzt wurde wird in der mysql tabelle ein ja eingetragen
tom-moeller schrieb:
felicius12 schrieb:
Eine frage noch gibt es eine einfache methode, mit der ich die Zeilen unterschiedlich einfärbe, sieht cooler aus.
Das könnte so aussehen:
<table width="100%" border="1" cellpadding="0" cellspacing="2"> <tr> <td class="zeile1">$row->id</td> <td class="zeile2">$row->Manschaft</td> <td class="zeile1">$row->Unentschieden</td> <td class="zeile2">$row->Gewinn</td> <td class="zeile1">$row->QuoteGewinn</td> <td class="zeile2">$row->Quote</td> <td class="zeile1"> </td> <td class="zeile2"> </td> </tr> </table>
Und die CSS dazu:
.zeile1 {background-color: #999;} .zeile2 {background-color: #CCC;}
Schonmal danke aber ich schrieb zeile und nicht spalte
mfg Felix -
Für Zeilen geht das genauso, musst nur das Class-Attribut beim TR statt beim TD reinpacken.
Checkboxen:
Du könntest den Namen variabel gestalten, z.B.
<table width="100%" border="1" cellpadding="0" cellspacing="2"> <tr class="zeile1"> <td><input type="checkbox" name="Checkbox<?php echo $row->id; ?>">Klick mich an</input> <td><?php echo $row->id; ?></td> <td><?php echo $row->id; ?></td> <td><?php echo $row->Manschaft; ?></td> <td><?php echo $row->Unentschieden; ?></td> <td><?php echo $row->Gewinn; ?></td> <td><?php echo $row->QuoteGewinn; ?></td> <td><?php echo $row->Quote; ?></td> <td> </td> <td> </td> </tr> </table>
Damit müsstest du später nur noch prüfen, wenn du einen Datensatz durchgehst, ob zu ID=5 auch ein Feld "Checkbox5" gesetzt ist:
<?php
$id = 5;
if (isset($_POST['Checkbox'.$id])) {
/* tue was */
....
}
?>
-
$abfrage = "SELECT id, Manschaft, Unentschieden, Gewinn, QuoteGewinn, Quote FROM $datum"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_object($ergebnis)) { echo " <form action=\"privat.php\" method=\"postß\"> <table width=\"100%\" border=\"1\" cellpadding=\"0\" cellspacing=\"2\"> <tr> <td class=\"zeile1\">$row->id</td> <td class=\"zeile2\">$row->Manschaft</td> <td class=\"zeile1\">$row->Unentschieden</td> <td class=\"zeile2\">$row->Gewinn</td> <td class=\"zeile1\">$row->QuoteGewinn</td> <td class=\"zeile2\">$row->Quote</td> <td class=\"zeile1\"><td><input type=\"checkbox\" name=\"Checkbox$row- >id;Klick mich an</td> <input type=\"Submit\" value=\"Absenden\">"; </form> } $id = 5; if (isset($_POST['Checkbox'.$id])) { echo " $id wurde gesetzt"; }
also so funktioniert das irgendwie nicht
iniquitius schrieb: Für Zeilen geht das genauso, musst nur das Class-Attribut beim TR statt beim TD reinpacken.
Wie soll das funktionieren die daten die in die Zeilen sollen, sind ja in der datenbank und woher soll php dann wissen welche er grau und welche weiß färben soll?`
mfg
Felix -
Vorsicht: Du hast da was drinnen stehen von method=\"postß\"> (ß zu viel)
Dazu kommt, dass du derzeit für jede Zeile eine neue Tabelle anlegst und ein neues Formular, weil beides in der While-Schleife steht (siehe Quellcode). Das darf nicht sein, weil das den Code unnötig aufbläht.
Am besten du machst erstmal Übungen mit HTML und Formularen an sich, um die Grundlagen rauszubekommen. Danach dann mit PHP.
Zur Zeilenhervorhebung: Nimm einfach eine Variable, die du in der While-Schleife hochzählst. Je nachdem, ob die Zahl grad gerade ist (Variable % 2 == 0) oder ungerade (Variable % 2 !=0) setzt du die CSS-Klasse für TR:
<form action="privat.php" method="post"> <table width="100%" border="1" cellpadding="0" cellspacing="2">' <?php $i = 0; while($row = mysql_fetch_object($ergebnis)) { $i++; echo '<tr class="zeile'.($i%2 + 1).'">'."\n"; echo .... /* hier Spalten einfuegen */ echo '</tr>'; } ?> </table> </form>
Wirst sicherlich Fragen zu dem Code haben -
iniquitius schrieb: Vorsicht: Du hast da was drinnen stehen von method=\"postß\"> (ß zu viel)
Da war ich wohl ne sekunde zu kurz au altgr
Aber nun zum code also wenn ichs richtig verstanden hab müsste der so aussehn:
<form action="privat.php" method="post"> <table width="100%" border="1" cellpadding="0" cellspacing="2">' <? $i = 0; $abfrage = "SELECT id, Manschaft, Unentschieden, Gewinn, QuoteGewinn, Quote FROM $datum"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_object($ergebnis)) { $i++; echo '<tr class="zeile'.($i%2 + 1).'">'."\n"; echo "<td>$row->id</td> <td>$row->Manschaft</td> <td>$row->Unentschieden</td> <td>$row->Gewinn</td> <td>$row->QuoteGewinn</td> <td>$row->Quote</td> <td><td><input type=\"checkbox\" name=\"Checkbox$row- >id;Klick mich an</td>"; echo '</tr>'; } ?> </table> </form>
Am besten du machst erstmal Übungen mit HTML und Formularen an sich, um die Grundlagen rauszubekommen. Danach dann mit PHP
Formulare und tabellen einzeln (html hab ich son bissel in der 6. gehabt und danach auf pixelkids weitergeübt) sind nich das problem
nur ich bekomm das in kombination nicht hinn.
EDIT:Sorry hab mich verklickt
mfg
Felix
Beitrag zuletzt geändert: 28.3.2010 13:15:04 von felicius12 -
Das sieht schonmal gut aus :)
Allerdings hast du unten bei der Checkbox einen Fehler drin. Dazu solltest du dir die fertig gerenderte Seite anschauen:
echo "<td><td><input type=\"checkbox\" name=\"Checkbox$row- >id;Klick mich an</td>";
1. TD doppelt
2. hinter dem $row->id steht ein Semikolon, ist überflüssig.
3. Dafür fehlt an der Stelle ein Anführungszeichen, um das Attribut "Name" zu beenden, und eine schließende Klammer.
Generell zu Formularen und PHP gibt's ne Menge Anleitungen im Web, falls du was dazu suchst. Z.B. hier: http://www.html-world.de/program/phpex_1.php -
<? $i = 0; $abfrage = "SELECT id, Manschaft, Unentschieden, Gewinn, QuoteGewinn, Quote FROM $datum"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_object($ergebnis)) { $i++; echo '<tr class="zeile'.($i%2 + 1).'">'."\n"; echo " <td>$row->id</td> <td>$row->Manschaft</td> <td>$row->Unentschieden</td> <td>$row->Gewinn</td> <td>$row->QuoteGewinn</td> <td>$row->Quote</td> <td><input type=\"checkbox\" name=\"Checkbox$row- >id\"Klick mich an</td> echo '</tr>' } ?>
Ich erhalte wenn ich diesen code aussführeTrotzdem die errormeldung
Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /home/webpages/lima-city/felicius12/... on line 18
kann abernichts finden was ich vergessen haben könnte (line 18 ist ja ganz am ende also deutet das ja darauf hinn das ich was vergessen hab)
mfg
Felix -
expecting ',' or ';' bedeutet, dass ein Komma oder Semikolon fehlt. Sehr häufiger Fehler.
In diesem Falle: Hinterm letzten Echo fehlt ein Semikolon. Schließende Klammer könnte auf die nächste Zeile, damit du den Block besser überblicken könntest. -
<? $i = 0; $abfrage = "SELECT id, Manschaft, Unentschieden, Gewinn, QuoteGewinn, Quote FROM $datum"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_object($ergebnis)) { $i++; echo '<tr class="zeile'.($i%2 + 1).'">'."\n"; echo " <td>$row->id</td> <td>$row->Manschaft</td> <td>$row->Unentschieden</td> <td>$row->Gewinn</td> <td>$row->QuoteGewinn</td> <td>$row->Quote</td> <td><input type=\"checkbox\" name=\"Checkbox$row- >id\"Klick mich an</td> echo '</tr>'; } ?>
jetz erhalt ich den error
Parse error: syntax error, unexpected $end in /home/webpages/lima-city/felicius12/... on line 19
EDIT: hab den error
<td><input type=\"checkbox\" name=\"Checkbox$row- >id\"Klick mich an</td> mussnoch " ;
mfg felix
Beitrag zuletzt geändert: 28.3.2010 14:00:09 von felicius12 -
Quellcode noch mal angucken und schauen, wo der Abschluss eines Befehls fehlt.
Kleiner Tipp: Ganz in der Nähe vom letzten Fehler.
Allgemein ist bei Fehlermeldungen folgende Seite ein guter Anlaufpunkt: http://www.php-error.de -
also irgendwas stimmt da immer noch nicht: http://files.felicius12.de/habkenelust/statistik.php
<form action="privat.php" method="post"> <table width="100%" border="1" cellpadding="0" cellspacing="2">' <? include("verbindung.php"); mysql_select_db("db_149696_3") or die ("Datenbank konnte nicht ausgewählt werden"); $i = 0; $abfrage = "SELECT id, Manschaft, Unentschieden, Gewinn, QuoteGewinn, Quote FROM $datum"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_object($ergebnis)) { $i++; echo '<tr class="zeile'.($i%2 + 1).'">'."\n"; echo " <td>$row->id</td> <td>$row->Manschaft</td> <td>$row->Unentschieden</td> <td>$row->Gewinn</td> <td>$row->QuoteGewinn</td> <td>$row->Quote</td> <td><input type=\"checkbox\" name=\"Checkbox$row->id\"Klick mich an</td>" ; echo '</tr>'; } ?> </table> </form>
mfg
Felix
Beitrag zuletzt geändert: 28.3.2010 14:28:35 von felicius12 -
Starte die Seite, geh danach in deinem Browser auf "Quelltext anzeigen" (oder so ähnlich) und kopier die Daten in einen Editor mit Syntaxhighlighting. Dann siehst du sehr schnell, dass beim Namen der Checkbox ein doppeltes Anführungszeichen fehlt.
-
Also so?
<td><input type=\"checkbox\" name=\"\"Checkbox$row->id\"\"Klick mich an</td>" ;
EDIT:9999999999999999999 fachen dank es futzt
Beitrag zuletzt geändert: 28.3.2010 14:47:39 von felicius12 -
Ääh, du hast zwar was geändert, und es könnte funktionieren, aber so richtig ist es nicht:
Jeder HTML-Tag beginnt mit einem < und endet mit einem >
Bei dir sieht es derzeit so aus:
<td><input type="checkbox" name=""Checkbox$row->id""Klick mich an</td>
2x doppelte Anführungsstriche brauchst du nicht. Dafür fehlt immer noch das >-Zeichen.
Kann dir nur empfehlen, Firefox zu installieren und dort das Plugin "HTML-Validator" reinzuhängen. Deine Seite hat nämlich noch massig mehr Fehler (kein HTML-Head-Bereich, kein Doctype ...) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage