jo edit übersehen.....
war kein doppelpost, beim 2. mal mit Fehlerkennzeichnung
Script - Funktionalität
-
-
Die Notice-Meldungen kommen, weil das Script schlampig programmiert wurde, aber wo sind jetzt die MySQL-Fehler? Plötzlich weg?
-
Moin moin,
ein Fehler war ganz am Anfang im HTML - Code,
Die anderen Fehler sind in line 35 + 53, also hier:
Ich überlege ob ich das Ding nicht ummodel mit Installation create table usw. anstatt der hier verwendeten setup.php.
Und vor allem dann mit einer include.php bei den anderen Dateien, ist eh nicht so toll in ausgabe.php und eingabe.php jedesmal die Zugangsdaten drin zu haben oder ?Gruß Nobbi.
-
Also die setup.php umgemodelt, Tabellen sind erstellt...
und funzt trotzdem nix.
Die Eintragungen kommen nicht an.... -
Und was sollen wir jetzt machen? Oder glaubst du wirklich, dass wir mit den Infos irgendetwas anfangen könnten?
-
soll ich das absende script mal posten ?
-
Nee, besser wäre dein letzter Deutsch-Aufsatz
Hallloooooo? Jemand zu Hause? Was denn sonst????
-
-
ok, dann hätten wir das eintragen-script
PHP
Alles anzeigen<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <h1>Biete:</h1> <form name="form1" method="post" action="absenden.php"> <input type="hidden" name="formular" value="biete"> Von: <input type="text" name="von"><br><br> Nach: <input type="text" name="nach"><br><br> evtl. Zwischenstationen: <input type="text" name="zwischenstopps"><br><br> Wieviele Personen haben noch Platz: <input type="text" name="personen"><br><br> Hin und Zurück? <select name="hin_ret"> <option value="1" selected>Nur Hinfahrt</option> <option value="2">Hin und Retour</option> </select><br><br> Datum der Fahrt: <input type="text" name="datum"> <span class="footer">Aus Einheitlichkeitsgründen bitte alles im Format <b>TT.MM.JJJJ</b> eingeben.</span><br><br> Datum der Rückfahrt: <input type="text" name="datum2"><br><br> Meine Kontaktadresse (E-Mail): <input type="text" name="email"><br><br> Meine E-Mailadresse darf veröffentlicht werden: <input type="checkbox" name="oeffentlich" value="ja"><br> <span class="footer">Wird nicht empfohlen. Benutzer können so über ein Online-Formular wie dieses Kontakt mit Ihnen aufnehmen, ohne Ihre E-Mail-Adresse zu sehen.<br> Sollten Sie den Haken setzen wird ihre Emailadresse veröffentlicht und die Benutzer können Ihnen eine E - Mail über ihr Mailprogramm schreiben.</span><br><br> <input type="submit" value="Eintragen"> </form> </body> </html>
wo das absenden-script drin liegt
PHP
Alles anzeigen<?php mysql_connect("host","benutzer","passwort"); mysql_select_db("datenbank"); ?> <?php switch($formular) { case "biete": if ($hin_ret == 1) $datum2 = "0"; if (isset($oeffentlich)) { $oe = 1; } else { $oe = 0; } $befehl = "INSERT INTO `boerse_b` (`id`, `von`, `nach`, `zwischenstopps`, `personen`, `hin_ret`, `datum`, `datum2`, `email`, `oeffentlich`) VALUES ('', '$von', '$nach', '$zwischenstopps', '$personen', '$hin_ret', '$datum', '$datum2', '$email', '$oe');"; mysql_query($befehl); break; case "suche": if (isset($oeffentlich)) { $oe = 1; } else { $oe = 0; } $befehl = "INSERT INTO `boerse_s` (`id`, `von`, `nach`, `datum`, `personen`, `email`, `oeffentlich`) VALUES ('', '$von', '$nach', '$datum', '$personen', '$email', '$oe');"; mysql_query($befehl); break; } echo '<script language="JavaScript">location.href="ausgabe.php";</script>'; ?>
welches wiederum das ausgeba-script ausgibt
PHP
Alles anzeigen<?php mysql_connect("host","benutzer","passwort"); mysql_select_db("datenbank"); $ordnen = $_GET['ordnen']; switch($ordnen) { case "vASC": $link = 'DESC'; $biete = "SELECT * FROM boerse_b ORDER BY `von` ASC"; $suche = "SELECT * FROM boerse_s ORDER BY `von` ASC"; break; case "nASC": $link = 'DESC'; $biete = "SELECT * FROM boerse_b ORDER BY `nach` ASC"; $suche = "SELECT * FROM boerse_s ORDER BY `nach` ASC"; break; case "vDESC": $link = 'ASC'; $biete = "SELECT * FROM boerse_b ORDER BY `von` DESC"; $suche = "SELECT * FROM boerse_s ORDER BY `von` DESC"; break; case "nDESC": $link = 'ASC'; $biete = "SELECT * FROM boerse_b ORDER BY `nach` DESC"; $suche = "SELECT * FROM boerse_s ORDER BY `nach` DESC"; break; default: $link = 'DESC'; $biete = "SELECT * FROM boerse_b ORDER BY `von` ASC"; $suche = "SELECT * FROM boerse_s ORDER BY `von` ASC"; break; } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <h1>Angebotene Fahrten:</h1> <table width="95%" border="1"> <tr> <th scope="col"><a href="ausgabe.php?ordnen=v<?php echo $link; ?>">Von</a></th> <th scope="col"><a href="ausgabe.php?ordnen=n<?php echo $link; ?>">Nach</a></th> <th scope="col">Zwischenstopps</th> <th scope="col">Personen</th> <th scope="col">Richtung</th> <th scope="col">Datum Hinfahrt </th> <th scope="col">Datum Rückfahrt </th> <th scope="col">Kontaktadresse</th> </tr> <?php $abfrage = mysql_query($biete); while ($row = mysql_fetch_object($abfrage)) { if ($row->hin_ret == 1) { $richtung = "Nur Hinfahrt"; $datum2 = " "; } else { $richtung = "Hin und Retour"; $datum2 = $row->datum2; } if ($row->oeffentlich == 1) { $oef = '<a href="mailto:'.$row->email.'">'.$row->email.'</a>'; } if ($row->oeffentlich == 0) { $oef = '<a href="mailform.php?kommt=b&id='.$row->id.'">Den Benutzer kontaktieren</a>'; } echo '<tr> <td>'.$row->von.'</td> <td>'.$row->nach.'</td> <td>'.$row->zwischenstopps.'</td> <td>'.$row->personen.'</td> <td>'.$richtung.'</td> <td>'.$row->datum.'</td> <td>'.$datum2.'</td> <td>'.$oef.'</td> </tr>'; } ?> </table> <br><br><br> <h1>Gesuchte Fahrgemeinschaften</h1> <table width="95%" border="1"> <tr> <th scope="col"><a href="ausgabe.php?ordnen=v<?php echo $link; ?>">Von</a></th> <th scope="col"><a href="ausgabe.php?ordnen=n<?php echo $link; ?>">Nach</a></th> <th scope="col">Datum</th> <th scope="col">Personen</th> <th scope="col">Kontaktadresse</th> </tr> <?php $abfrage = mysql_query($suche); while ($row = mysql_fetch_object($abfrage)) { if ($row->oeffentlich == 1) { $oef = '<a href="mailto:'.$row->email.'">'.$row->email.'</a>'; } if ($row->oeffentlich == 0) { $oef = '<a href="mailform.php?kommt=s&id='.$row->id.'">Den Benutzer kontaktieren</a>'; } echo '<tr> <td>'.$row->von.'</td> <td>'.$row->nach.'</td> <td>'.$row->datum.'</td> <td>'.$row->personen.'</td> <td>'.$oef.'</td> </tr>'; } ?> </table> </body> </html>
die Frage ist jetzt warum kommt in der Datenbank keine Eintragung an ....... hab ich was vergessen ?
Gruß Nobbi.
-
Für jedes mal 1 Euro, und ich würde in Urlaub fahren:
Richtig debuggen:
- Man bemerkt, dass ein Skript nicht das tut, was es soll.
- Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(E_ALL);
- Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
- Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
- An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysql_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
- Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
- Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
- Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
- Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
Dass bei dir nix eingetragen wird, ist kein Wunder, denn du greifst auf Variablen zu, die es nicht gibt. Außerdem sind Insert's ohne ein mysql_real_escape_string auf die Werte sehr gefährlich und an jedes mysql_query gehört auch eine Fehlerüberprüfung. Und dann dieses elendige "Select *", was anscheinend auch nicht auszurotten ist!
Warum soll ich nicht SELECT * schreiben?
http://www.php-faq.de/q-sql-select.html -
1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
jep
2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(E_ALL);
ok
3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
wußte ich nicht, danke für den Tip
4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
so seh ich das auch... "lö schrott".
5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysql_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
was es nicht alles gibt, ich muß noch viel lernen.
6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
ok
7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
ok
8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
ok
9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
ok
Dass bei dir nix eingetragen wird, ist kein Wunder, denn du greifst auf Variablen zu, die es nicht gibt.
Hatte ich mir fast gedacht, war aber extrem verunsichert
Außerdem sind Insert's ohne ein mysql_real_escape_string auf die Werte sehr gefährlich
Wußte ich, hätte ich noch geändert
und an jedes mysql_query gehört auch eine Fehlerüberprüfung.Wußte ich nicht, werde ich mich drum kümmern
Und dann dieses elendige "Select *", was anscheinend auch nicht auszurotten ist!Warum soll ich nicht SELECT * schreiben?
http://www.php-faq.de/q-sql-select.htmlKrass, hör ich zum ersten mal....
Also erstmal: vielen Dank für die Tips, jetzt hab ich gut was zu tun :-).
Die Denk- und Vorgehensweise von (mehr oder weniger) Anfängern ist leider häufig eine andere als die von "alten Hasen".
Kommt auch daher das Dinge, die nicht funktionieren, manchmal wirklich nur kleinste Ursachen haben.
Muß man drauf kommen, was nicht immer auf anhieb gelingt.
Daß allerdings das Script so fehlerhaft ist finde ich doch ein bissl erschreckend.
Danke und viele Grüße, Nobbi. -
mal ganz am rande nobbi...
in der ganzen zeit der diskussion und reparaturversuche bei einem fremden script, wäre, wie ich glaube, die effizienz wesentlich erhöht, wenn du es selber geschrieben hättest -
jo, das habe ich nachher auch gedacht.
Dagegen sprach erstmal das ich gehofft hatte es funktioniert auf anhieb bzw.nach der setup.php Änderung.
Und komplett selber schreiben "KÖNNEN" muß man das ja auch.
Ich denke ich werde mir irgendwas zurecht biegen :-).
Was ich komisch finde:Habe im Dezember überhaupt erst angefangen (und wußte bis dahin nicht mal was ein Editor ist ).
Ich fand HTML angennehm, CSS spannend, MySQL ging auch....
Nur bei PHP, was angeblich eine einfache Sprache ist, platzt einfach der Knoten nicht.
Selbst nach mehrmaligen durcharbeiten von 2 verschiedenen Büchern und "unzähligen" Internetseiten und Tutorials dazu.
Tja, man kann nicht alles haben :-o. -
Nur bei PHP, was angeblich eine einfache Sprache ist, platzt einfach der Knoten nicht.
PHP ist einfach, ohne Zweifel. Und nur Geduld, der Knoten wird schon noch platzen, und wenn nicht, auch nicht schlimm. Nicht jeder ist zum Programmieren geeignet. -