Datenbank Tabelle in besonderer Form ausgeben
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
array
ausgeben
aussehen
code
datenbank
datum
fehler
http
image
problem
projekt
re
reihe
schleife
standard
tabelle
text
url
verwendung
zeile
-
Danke dafür, allerdings find ich persönlich den ref="/tag/code">Code deutlich verwirrender, ist aber nicht weiter schlimm, ich hab mal wieder das Problem das ich mit Fehlermeldungen bombardiert werde die auf mich keinen Sinn ergeben,
Parse error: syntax error, unexpected T_STRING in Zeile 3, hab ich dann mal raus genommen, da war der Fehler immer noch in Zeile 3, hab dann einen Absatz raus genommen da war der Fehler dann in Zeile 5.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
jhb schrieb:
in zeile 3 kann die besagte meldung nur dann kommen, wenn du den kode geändert hast. zeig deine version und dan sehen wir mal weiter.
Danke dafür, allerdings find ich persönlich den Code deutlich verwirrender, ist aber nicht weiter schlimm, ich hab mal wieder das Problem das ich mit Fehlermeldungen bombardiert werde die auf mich keinen Sinn ergeben,
Parse error: syntax error, unexpected T_STRING in Zeile 3, hab ich dann mal raus genommen, da war der Fehler immer noch in Zeile 3, hab dann einen Absatz raus genommen da war der Fehler dann in Zeile 5.
nebenbei: der kode ist kristall klar strukturiert ;) was findest daren verwirrend?
Beitrag zuletzt geändert: 19.7.2012 14:43:53 von czibere -
Naja deine Art zu Programmieren kann man nicht als Standard bezeichnen.
Durch den Einsatz von ? anstatt if oder <<< EOT anstatt echo leidet sehr die Lesbarkeit. Du solltest davon ausgehen das hier Anfänger am basteln sind. Dehalb sollte man auch einen Code aus meiner Sicht, nicht nur jemanden vor den Latz knallen, sondern auch ein paar Erklärungen beifügen. Fass das nicht lass Beleidigung auf, es soll nur ein Denkanstoß sein.
Beitrag zuletzt geändert: 19.7.2012 15:42:18 von vctb -
vctb schrieb:
du schmeichelst mich direkt ;)
Naja deine Art zu Programmieren kann man nicht als Standard bezeichnen.Durch den Einsatz von ? anstatt if oder <<< EOT anstatt echo leidet sehr die Lesbarkeit.
so '?' (kurzschreibweise fon 'if ... else ...') wie '<<<' (heredoc) gehören zu php standard (apropo, definiere standard).
Du solltest davon ausgehen das hier Anfänger am basteln sind. Dehalb sollte man auch einen Code aus meiner Sicht, nicht nur jemanden vor den Latz knallen, sondern auch ein paar Erklärungen beifügen.
ok. ich verchuche es kurz:
1. '?' ist oft (nicht immer [warum?]) praktischer als 'if ... else ...'. im obigen beispiel gibt mysql_connect je nach ergebnis false oder #resource zurück. der rest sollte selbstredend sein. (ich teste alle mysql_... (aber andere dinge auch), die ergebnis oder false zurückgeben können auf diese art. es ist schon fast ein debuger. für geplagte progger ein segen, wenn etwas daneben geht, landest automatisch mit abbruch in der erklärung des fehlers + zeilenangabe. schöner könnte es kaum sein ;)
2. heredoc ist praktisch weil - wie du im oberen beispiel sehen kannst - ganz schnell und ohne viel ', " und " . " ... 'vorformatierte'(!) texte auch gleich mit wariablen-inhalte aufnehmen kann. außerdem die geschwindigkeit gegenüber 'etwas in die variable, echo <variable>' ist geradeaus atemberaubend. also ganz schön resource-schonend.
nebenbei: ich gebe nie und nirgendst in meinen php seiten irgendwas mit echo aus. echo mal da mal dort ist der beste weg zum spaghetti-code. das schlimmse ist allerdings zwischen html und php zu wechseln - echt spaghetti. ich fasse php so auf, dass es mir über den webserver html generiert! und weder umgekehrt noch gemischt. (es geht einiges richtung klarheit. html wird durch css vom style bereinigt &c.)
3. ich strukturiere meine php-codes so, dass ich der reihe nach alle aufgaben erledige, die ergebnisse in (möglichst) eine einzige variable (wie im beispiel oben in $res [als result]) kumulativ abspeichere, füge in die seite ein (da kommt wieder heredoc) und vertschüse ich mich mit einem exit (was mir ja in einem ruck die ganze - noch so komplizierte seite - ausgibt und beendet sauber das ganze brimborium).
Fass das nicht lass Beleidigung auf, es soll nur ein Denkanstoß sein.
ich bin schwer zu beleidigen und denkanstöße sind immer gut ;)
Beitrag zuletzt geändert: 19.7.2012 16:36:33 von czibere -
Als Standard würde ich den Programmierkodex für sauberes Programmieren ansehen.
Ich kann zumindest verstehen wenn man die ? Anweisung verwendet, da sie viel Tiparbeit spart. Heredoc kann ich aber nichts abverlangen, da ich sie vollkommen unlesbar und als fehleranfälliger erachte zudem ist echo" "; kürzer und hat das selbe Ergebnis. Liegt aber wohl daran, dass ich sie auch noch nie benutzt habe.
Beitrag zuletzt geändert: 19.7.2012 17:09:14 von vctb -
Naja ich habe eigendlich nix geändert, bloß den Pfad in "Localhost" Nutzer in "root" und im query dann Datenbankname und Tabellenname angegeben.
Mehr hab ich nicht geändert, hab es wahrscheinlich irgendwie falsch gemacht deshalb hier mal der Code:
<?php error_reporting(E_ALL | E_STRICT); // ---- connect ---------------------------------------------------------------- $conn = ($c = mysql_connect('localhost', 'root', ';) ;) ;)')) ? $c: sql_error(__LINE__); // ---- query ------------------------------------------------------------------ $q = <<< EOT select concat('<td>', <col_1>, '<br />', <col_2>, '<br />', <col_3>, '</td>') from <homepage>.<projekte> EOT; $r = ($r = mysql_query($q)) ? $r: sql_error(__LINE__); // ---- get resultset into php-var --------------------------------------------- $count = 0; $cols = 4; // number of cols $res = "<table border=\"1\"><br />\n"; while($row = mysql_fetch_assoc($r)) { $res .= (($cc = $count % $cols) === 0) ? '<tr>': ''; foreach($row as $k => $v) {$res .= "$v";} $res .= (($count % $cols) === ($cols - 1)) ? '</tr>': ''; $res .= "\n"; $count++; } $res .= "\n</table>"; // ---- show site -------------------------------------------------------------- exit(<<< EOT <!DOCTYPE html> <html> <head> <title>table view</title> </head> <body> <header> <h3>table view</h3> </header> <section> $res </section> </body> </html> EOT ); // ---- sqlerror() ------------------------------------------------------------- function sql_error($l) { $res = print_r(array("<strong>mysql_error in line $l</strong>", mysql_errno(), mysql_error()), true); exit(<<< EOT <!DOCTYPE html> <html> <head> <title>mysql_error</title> </head> <body> <header> <h3>mysql_error</h3> </header> <section> <pre> $res </pre> </section> </body> </html> EOT ); }
-
$conn = ($c = mysql_connect('localhost', 'root', ';) ;) ;)'))
In dem Teil mit
';) ;) ;)' <-------- dort das SQL-Passwort also nach 'root',
musst du dein Passwort einfügen.
Mir fällt gerade auf die query mit Concat ist wirklich eine nette Sache, so hab ich die Funktion noch nie benutzt. Wäre ich auch nie drauf gekommen.
Beitrag zuletzt geändert: 19.7.2012 20:19:01 von vctb -
Naja, die Lokale Datenbank von Xampp hat kein Passwort, und bei mir hat es immer funktioniert wenn ich es einfach weggelassen habe, wenn ich es so ändere das dort kein "leerer Bereich" mehr ist also sprich die Entsprechenden Zeichen entferne ändert das auch nichts,
-
jhb schrieb:
du hast grobe mängel an deiner editierarbeit!
Naja, die Lokale Datenbank von Xampp hat kein Passwort, und bei mir hat es immer funktioniert wenn ich es einfach weggelassen habe, wenn ich es so ändere das dort kein "leerer Bereich" mehr ist also sprich die Entsprechenden Zeichen entferne ändert das auch nichts,
richtig heißt die zeile$conn = ($c = mysql_connect('localhost', 'root', '')) ?
und daran ist nichts zu diskutieren (ich hoffte, du übersiehst meinen groben unfug nicht ;). ich würde es aber nicht dabei belassen! lese nach, wie du root einen ordentlichen passwd verpassen kanst!
was noch zu ersetzen ist im query
<col_1>, <col_2>, <col_3>. das sind die spaltennamen, die du abfragst.
außerdem hatte ich 2 flüchtigkeitsfehler eingebaut: <homepage>.<projekte>. also die query sollte eher so aussehen:select concat('<td>', <col_1>, '<br />', <col_2>, '<br />', <col_3>, '</td>') from <db_name>.<table_name>
und natürlich <db_name> und <table_name> müssen an deine situation angepasst - sprich - überschrieben werden.
vctb schrieb:
'Programmierkodex für sauberes Programmieren' hat schon aus dem grund keine globale gültigkeit, weil es von dem zeug etliche gibt (sogar allein für php auch). daher sollte man statt kodex kodices sagen (was ja an der sache nichts ändert ;).
Als Standard würde ich den Programmierkodex für sauberes Programmieren ansehen.
Ich kann zumindest verstehen wenn man die ? Anweisung verwendet, da sie viel Tiparbeit spart. Heredoc kann ich aber nichts abverlangen, da ich sie vollkommen unlesbar und als fehleranfälliger erachte zudem ist echo" "; kürzer und hat das selbe Ergebnis. Liegt aber wohl daran, dass ich sie auch noch nie benutzt habe.
vctb schrieb:
löbliche tendenz! (siehe vorige worte von dir) flexibilität ist wichtiger für einen progger als starre kodices ;)
... Mir fällt gerade auf die query mit Concat ist wirklich eine nette Sache, so hab ich die Funktion noch nie benutzt. Wäre ich auch nie drauf gekommen.
kodices haben auf eine saubere arbeit nur bedingt eine einwirkung. sie werden kreiert, dass eine gruppe von progger eine arbeit einheitlich anfertigen kann (sonst kennt sich kein aas mehr aus, was wo ist und warum). saubere arbeit braucht viel mehr viel erfahrung und ordentliche progstrukturen. -
Das stimmt aber man eignet sich natürlich selber marotten an (auf mich bezogen), die will man eigentlich nicht groß ändern. Ich habe kein Problem damit wenn jemand in einem anderen Stil programmiert. Ich sehe es halt aus der Sicht des Anfängers, da sind unkonventionellere Programmierstile teilweise schwer zu verstehen.
Das mit den Kodexen oder wie auch immer ist mir klar :), aber die meisten haben doch parallele Ansätze.
PS: ich hoffe es ist diesmal nicht negativ rüber gekommen, sollte es vorher auch nicht.
Wenn du mein Beispiel mit einer festen Breite für die Tabellen angibst müsste es ungefähr so aussehen.
http://vctb.lima-city.de/images/tabellen.png
Beitrag zuletzt geändert: 19.7.2012 23:38:10 von vctb -
vctb schrieb:
ja!
... Ich sehe es halt aus der Sicht des Anfängers, da sind unkonventionellere Programmierstile teilweise schwer zu verstehen.
und das ist richtig so!
der anfänger soll dor hin kommen, wo der erfahrene ist! sonst werden wir wieder affen, vom baum runterhängend ;)
also fange nicht an, sondern fahrevort(schmunzel! also doch lieber) fort!
das ist aber 'ot'!
Beitrag zuletzt geändert: 20.7.2012 12:16:21 von czibere -
Okay, tut mir leid das die Antwort etwas auf sich warten ließ. Hab selbst noch n bisschen rumprobiert (Mit nem eigenen Script) aber das ist alles nichts geworden)
Hab jetzt nochmal das von hier genommen und so geändert wie gesagt, und ich kann mir einfach immer noch nicht erklären wie dort vollgender Fehler auftreten kann:
http://emil-online.square7.ch/Sonstiges/fehler.png
Wenn ich Zeile Zeile 3 Komplett raus nehme ist der Fehler in Zeile 4
Und mehr als in dem Script zu sehen ist hab ich auch noch nicht geändert, Ich Arbeite in der Regeleinfach die Fehler in Chronologischer Reihenfolge ab
-
Schalt mal in Notepad++ unter Ansicht -> Nicht druckbare Zeichen -> Alle Zeichen anzeigen an. Ich hatte mal ein Problem mit einem kopierten Sonderzeichen.
Ansonsten könnte es an der von dir verwendeten PHP-Version liegen, da E_Strict die PHP Version 5 benötig und auch aktivert sein muss.
Falls du möchtest kannst du den Programmcode als Datei hier anhängen (gepackt oder umbenannt als .txt) dann kann man ihn sich mal angucken wo Fehler sind.
-
Also bei mir ist Version 5.3.8 aktiviert.
Versteckte Sonderzeichen sind dort nicht vorhanden.
Hier ist die Datei:
Klick mich -
jhb schrieb:
ja und ich muss noch immer auf das hinweisen!!!! bitte mache endlich die query fertig! gut, das hat mit dem seltsamen fehler nichts zu tun, aber trotzdem.
... Hier ist die Datei:
Klick mich
am computer können immer wieder seltsame dinge passieren. probiere mal aus, eine neue datei zu erzeugen und dort das ganze von hand eintippen. es ist nicht so tragisch groß. sonst kann ich dir nichts raten. bin kein windows mann. -
Okay, dann besteht doch nochmal erklärungs- bedarf was an der Query angepasst werden muss.
-
jhb schrieb:
;o)) ok
Okay, dann besteht doch nochmal erklärungs- bedarf was an der Query angepasst werden muss.
gib mir bitte die drei spaltennamen die du abfragen willst, den namen der database und den namen der tabelle. -
Hmm also im grunde sind es:
name
image
description
link
Link soll benutzt werden um die 3 anderen als ganzes zu verlinken (Divbox um die Tabelle, Link um die Divbox) Hoffe die information kommt nicht zu spät.
Datenbank: homepage
Tabelle: projekte
Dabei noch eine kleine frage am rande, kann man die Datenbank bei limacity auch umbenennen? Also nicht den Pfad sondern naja, Den Datenbanknamen. -
jhb schrieb:
also dann die query sieht so aus
Hmm also im grunde sind es:
name
image
description
link
Link soll benutzt werden um die 3 anderen als ganzes zu verlinken (Divbox um die Tabelle, Link um die Divbox) Hoffe die information kommt nicht zu spät.
Datenbank: homepage
Tabelle: projekte
Dabei noch eine kleine frage am rande, kann man die Datenbank bei limacity auch umbenennen? Also nicht den Pfad sondern naja, Den Datenbanknamen.select concat('<td>', name, '<br />', image, '<br />', desription, '<br />', link, '</td>') td from homepage.projekte
damit überschreibst also die alte query.
bist du sonst sicher, dass das stimmt?
Datenbank: homepage
Tabelle: projekte
das ist mir leider unklar:
Divbox um die Tabelle, Link um die Divbox
das hieße ja link um die ganze tabelle? oder??
-
jhb schrieb:
Nein, das kannst du nicht, aber wozu auch?
Dabei noch eine kleine frage am rande, kann man die Datenbank bei limacity auch umbenennen? Also nicht den Pfad sondern naja, Den Datenbanknamen.
czibere schrieb:
Er meint vermutlich eher:
das ist mir leider unklar:
Divbox um die Tabelle, Link um die Divbox
das hieße ja link um die ganze tabelle? oder??
Divbox zum die Zelle, Link um die Divbox
Aber wozu braucht er dann die Divbox? Ein Link um den Content reicht doch dann auch... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage