![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
Neuer Benutzer
Registriert seit: 11.06.2007
Beiträge: 10
|
Ich habe da ein kleines Problem mit einem (selbstprogrammierten) PHP-Script.
Das Script ist eigentlich ganz simpel (und doch habe ich mehr als zweieinhalb Stunden gebraucht). Drei for schleifen, die Daten in einem Array speichern und eine, die das ganze dann ausgibt (Vielleicht hat hier jemand eine Idee, wie man das vereinfachen kann?). Das funktioniert allerdings nicht korrekt. Scheinbar wird nach dem 3. Durchlauf durch irgendwas gestoppt. Ausserdem habe ich nervige Notices weil ich angeblich einen 11. Offset anspreche. Wo liegt das? Klar, ich könnte einfach die error_reporting Stufe runterstellen, aber das ist ja nicht der Zweck meiner "kleinen" Übung. Hier das Script, die Datenbank ist im Anhang und mit SQLite 2 erzeugt worden. Die echos in den for-Schleifen sind zu Debugzwecken: Intressanterweise klappt es hier auch. PHP-Code:
Fabio Geändert von Fabio (11.06.2007 um 17:32 Uhr). |
|
|
|
|
|
Nach oben #2 |
|
Mensch
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
|
Du hast in allen drei for-Schleifen einen kapitalen Fehler, denn du weist einen Wert zu, anstatt dass du ihn vergleichst. Du nutzt also = statt ==
Dann noch ne kleine Anmerkung für bessere Lesbarkeit im Quellcode: Sogenanntes CamelCase nutzen. Sprich aus $rundisplay wird $runDisplay. Das liest sich gerade bei längeren Variablennamen deutlich leichter.
__________________
I did it my way - Senseless-Blog Geändert von WarrenFaith (11.06.2007 um 17:30 Uhr). |
|
|
|
|
|
Nach oben #3 | |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
|
Zitat:
Er will doch gar nichts vergleichen, er will doch zuweisen! Wobei das $number = array_chunk(..) nicht ganz sauber ist. Hab mir den Code jetzt aber nicht genauer angeschaut, gerade nicht den Kopf dafür |
|
|
|
|
|
|
Nach oben #4 |
|
Neuer Benutzer
Registriert seit: 11.06.2007
Beiträge: 10
|
Meine Überlegung war, dass die Schleife ausgeführt wird, solange das noch funktioniert und das auch gleich noch ausführen. Aber irgendwie muss man das verhindern können.
In welcher Weise "nicht ganz sauber"? Mir ist schlichtweg keine andere Methode eingefallen. Was gäbe es dann da? |
|
|
|
|
|
Nach oben #5 | |
|
Mensch
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
|
Zitat:
Ich meine nicht innerhalb der for-Schleife sondern im for-Schleifenkopf. for(Wertzuweisung für Start; Vergleich bis wann die Schleife gilt; Was machen nach Schleifendurchlauf) Er macht an 2. Stelle aber eine Wertzuweisung. *update* deutlicher und richtig: for($runos = 0; $stepos == $number[0][$runos][1]; $runos++) { $tmparray[1][] = $stepos; echo $stepos."<br>"; } (ohne php-tags, da sonst das fette hervorheben nicht geht)
__________________
I did it my way - Senseless-Blog Geändert von WarrenFaith (11.06.2007 um 17:36 Uhr). |
|
|
|
|
|
|
Nach oben #7 |
|
Neuer Benutzer
Registriert seit: 11.06.2007
Beiträge: 10
|
Wie schon gesagt, meine Überlegung war, dass die Schleife ausgeführt wird, solange das noch funktioniert und dass das auch gleich ausgeführt wird.
Gibt es so etwas wie "As_long_this_works_errorless()" oder so? Ansonsten müsste ich mein Programm nochmal komplett neu schreiben Edit: Ich werde mal deine Variante ausprobieren und neu verwerten. Edit 2: Scheinbar wird mit deiner Variante gar nichts zurückgegeben. Absoulut keine Ausgabe mehr. Geändert von Fabio (11.06.2007 um 17:42 Uhr). |
|
|
|
|
|
Nach oben #8 |
|
Mensch
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
|
Ich muss ganz ehrlich sagen, dass ich kaum nachvollziehen kann was dein Programm eigentlich machen soll?!
Versuch mir das bitte nochmal zu erklären. Also welche Daten sind in der Tabelle, was soll am ende rauskommen?
__________________
I did it my way - Senseless-Blog |
|
|
|
|
|
Nach oben #9 |
|
Neuer Benutzer
Registriert seit: 11.06.2007
Beiträge: 10
|
Am Ende sollte eine HTML Tabelle ausgegeben werden, die so aussieht:
|Partitionsid|System, dass die Partition verwendet|Wie wird es verwendet| |1|Ubuntu|/boot| usw. Das könnte man auch einfach mit einer Query lösen und auf dem Terminal ausgeben, aber dann ist es ja keine PHP-Übung mehr. Struktur der Datenbank: sda(nr integer, system varchar(20), use varchar(20)) (Eine Nummer als Integer, das System als Varchar und die Verwendung als varchar) Inhalt der DB: 1|Ubuntu|/boot 2|All Linux|SWAP 3|All Linux|/home 5|Ubuntu|/tmp 6|Ubuntu|/ 7|Gentoo|/ 8|Fedora|/ 9|All Linux|DiskIMG Parallels 10|All Linux|Games 11|CentOS|/ 12|SuSE|/ |
|
|
|
|
|
Nach oben #12 |
|
Mensch
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
|
Ok verstehe.
Ich würde sagen, du gehst da definitiv zu kompliziert heran PHP-Code:
__________________
I did it my way - Senseless-Blog |
|
|
|
|
|
Nach oben #13 |
|
Neuer Benutzer
Registriert seit: 11.06.2007
Beiträge: 10
|
Du hast dies wirklich ums vielfache einfacher gemacht.
Einfacher geht's nicht, dankeschön. Den Code hab ich verstanden und daraus gelernt, dass das KISS Prinzip in der Programmierung Fehler vermeidet. Tatsächlich: Die Ausgabe stimmt auch. Noch ein wenig angepasst. Möchte jemand noch die Endgültige Version sehen? |
|
|
|
|
|
Nach oben #14 |
|
Mensch
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
|
Ja hau rein, kann für andere nicht schaden
Sagst mir noch schnell was KISS ist? Dann hab ich auch was gelernt
__________________
I did it my way - Senseless-Blog |
|
|
|
|
|
Nach oben #16 |
|
Neuer Benutzer
Registriert seit: 11.06.2007
Beiträge: 10
|
Es waren vor allem Fehler in den Funktionen für SQLite. Steht alles in den Kommentaren.
PHP-Code:
Geändert von Fabio (11.06.2007 um 19:56 Uhr). |
|
|
|
|
|
Nach oben #17 | |
|
Mensch
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
|
Zitat:
Irgendwo hab ich mal gelesen, dass ein guter Programmierer auf 1000 Codezeilen 1 bis 3 Fehler macht...
__________________
I did it my way - Senseless-Blog |
|
|
|
|
|
|
Nach oben #18 | |
|
Mensch
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
|
Zitat:
Demzufolge ist $sqlite_fetch_array($query, 3) falsch, denn damit gibst du nicht die Anzahl der Parameter an, sondern wie das Array gestaltet sein soll. Das solltest du beachten
__________________
I did it my way - Senseless-Blog |
|