![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Master
![]() Registriert seit: 29.07.2000
Alter: 62
Beiträge: 694
|
![]() Hallo Leute
Nachdem ich es jetzt geschafft habe, Formulardaten (Anmeldung zu einer Veranstaltung) mittels PHP Script auszulesen und an eine Sql DB (phpMyadmin) zu schicken stehe ich vor einem seltsamen Problem: für eine weitere Veranstaltung habe ich a) das Formular übernommen und adaptiert b) detto das Script angepasst und c) eine weitere Tabelle in meiner DB angelegt und configuriert. Zwar erhalte ich beim Versenden des Formulars die Bestätigung, dass alle Daten eingetragen wurden, aber in der DB kommen sie nie an. Kann es sein, dass zwei Tabellen in einer DB nicht mehr gültig sind? Früher (vor drei jahren) hatte ich da keine Probleme damit ![]() thx Klaus PS: nehmt bitte bei Antworten auf meinen "Laien-Status" rücksicht ![]()
____________________________________
![]() ![]() |
![]() |
![]() |
![]() |
#2 | |
Inventar
![]() |
![]() Zitat:
lg Matthias
____________________________________
„Das menschliche Gehirn ist eine großartige Sache. Es funktioniert vom Moment der Geburt an – bis zu dem Zeitpunkt, wo du aufstehst, um eine Rede zu halten.“ Mark Twain "Windle shook his head sadly. Four exclamation marks, the sure sign of an insane mind" Reaper Man, Terry Pratchett |
|
![]() |
![]() |
![]() |
#3 |
Master
![]() Registriert seit: 29.07.2000
Alter: 62
Beiträge: 694
|
![]() Hallo
Naja; eine Datenbank und darin zwei Tabellen (haben natürlich unterschiedliche Namen), in die jeweils die Anmeldedaten einfließen sollten. Bei dem einen Formular ist´s ja keine Problem .... Hier das Script: <?php error_reporting(E_ALL | E_STRICT); ini_set('display_errors', 1); $mysqlhost = "xxxxxxxxxxxx"; $mysqluser = "xxxxxxx"; $mysqlpwd = "xxxxx"; $mysqldb = "xxxx"; $mysqltabelle = "kids"; $vorname = $_POST["vorname"]; $name = $_POST["name"]; $ort = $_POST["ort"]; $plz = $_POST["plz"]; $strasse = $_POST["strasse"]; $jahr = $_POST["jahr"]; $geschlecht = $_POST["geschlecht"]; $kategorie = $_POST["kategorie"]; $verein = $_POST["verein"]; $uci = $_POST["uci"]; $email = $_POST["email"]; $telefon = $_POST["telefon"]; $resource = mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die ("Keine Verbindung zum Server moeglich"); mysql_select_db($mysqldb, $resource) or die ("Die Datenbank existiert nicht"); $eintrag = "INSERT INTO $mysqltabelle (vorname, name, ort, plz, strasse, jahr, geschlecht, kategorie, verein, uci, email, telefon) VALUES ('$vorname', '$name', '$ort', '$plz' '$strasse', '$jahr','$geschlecht', '$kategorie', '$verein', '$uci', '$email', '$telefon')"; $eintragen = mysql_query($eintrag); //echo $eintrag; { echo "<b>VIELEN DANK FÜR IHRE ANMELDUNG ZUM</b><p><b>xxxxxxxxxxxxx</b><p> Folgende Daten wurden gespeichert:</b><p>"; echo "<b>Vorname:</b> $vorname<p><b>Name:</b> $name<p><b>Ort:</b> $ort<p> <b>Postleitzahl:</b> $plz<p><b>Strasse:</b> $strasse<p><b>Geburtsjahr:</b> $jahr<p><b>Geschlecht:</b> $geschlecht<p><b>Kategorie:</b> $kategorie<p><b>Verein:</b> $verein<p><b>UCI Code:</b> $uci<p><b>E-Mail Adresse:</b> $email<p><b>Tel. Nr.:</b> $telefon<p>"; echo "Zahlung des Nenngelds direkt beim Start!";} //else {echo "Ihre daten wurden nicht gespeichert!!";} ?> die letzte Zeile steht deshalb unter //, da sie mir sonst eine Fehlermeldung erzeugt; das ist aber sekundär ![]() thx Honk
____________________________________
![]() ![]() |
![]() |
![]() |
![]() |
#4 |
Master
![]() Registriert seit: 13.08.2003
Beiträge: 624
|
![]() Auf den ersten Blick seh ich keinen Fehler, lass dir einfach mal den SQL-String ausgeben und führ ihn über PhpMyAdmin aus.
Ich würd dir dringend dazu raten folgendes zu lesen: http://de.wikipedia.org/wiki/SQL_Injection |
![]() |
![]() |
![]() |
#5 |
Master
![]() Registriert seit: 29.07.2000
Alter: 62
Beiträge: 694
|
![]() Danke T.Dot
Betreffend SQL_Injection: > ich bin PHP-Laie und froh, dass ich zumindest soweit gekommen bin. ![]() Ich bin jetzt beim Suchen nach Sicherheit auf auf "mysql_real_escape_string" gestoßen; nützt mir das was und wo bau ich das ein ![]() thx Honk
____________________________________
![]() ![]() |
![]() |
![]() |
![]() |
#6 |
Inventar
![]() |
![]() Ich verwende für SQL Abfragen meistens die adodb: http://adodb.sourceforge.net/
Ich sehe bei deinem Skript auf die schnelle auch keinen Fehler, ist natürlich schwern wenn man nicht auf den Server zugreifen kann. Query ausgeben und in phpMyAdmin eingeben ist aber immer eine einfache Möglichkeit rauszufinden was das Problem ist. SQL Error kann man sich auch ausgeben lassen: PHP-Code:
lg Matthias
____________________________________
„Das menschliche Gehirn ist eine großartige Sache. Es funktioniert vom Moment der Geburt an – bis zu dem Zeitpunkt, wo du aufstehst, um eine Rede zu halten.“ Mark Twain "Windle shook his head sadly. Four exclamation marks, the sure sign of an insane mind" Reaper Man, Terry Pratchett |
![]() |
![]() |
![]() |
#7 |
Master
![]() Registriert seit: 29.07.2000
Alter: 62
Beiträge: 694
|
![]() Danke Zappel
... hier das Ganze nun in PHP Tags ... und darunter die relevanten Zeilen aus dem HTML Formular PHP-Code:
HTML-Code:
<div id="content"> <h4 class="Stil3">ANMELDUNG</h4> <form id="form1" method="post" action="../kids/send_kids.php" target="_blank"> <table width="450" border="0"> <tr> <td><label> <div align="right">Vorname</div> </label></td> <td><input type="text" name="vorname" id="vorname" /></td> </tr> <tr> <td><label> <div align="right">Name</div> </label></td> <td><input type="text" name="name" id="name" /></td> </tr> <tr> <td><label> <div align="right">Ort</div> </label></td> <td><input type="text" name="ort" id="ort" /></td> </tr> <tr> <td><label> <div align="right">PLZ</div> </label></td> <td><input type="text" name="plz" id="plz" /></td> </tr> <tr> <td><label> <div align="right">Straße</div> </label></td> <td><input type="text" name="strasse" id="strasse" /></td> </tr> <tr> <td><label> <div align="right">Geburtsjahr</div> </label></td> <td><input type="text" name="jahr" id="jahr" /></td> </tr> <tr> <td><label> <div align="right">Geschlecht </div> </label></td> <td><select name="geschlecht" id="geschlecht"> <option>Bitte wählen Sie aus ...</option> <option>männlich</option> <option>weiblich</option> </select></td> </tr> <tr> <td><label> <div align="right">Kategorie</div> </label></td> <td><label> <select name="kategorie" id="kategorie"> <option>Bitte auswählen ...</option> <option>U 5</option> <option>U 7</option> <option>U 9</option> <option>U 11</option> <option>U 13</option> <option>U 15</option> <option>U 17</option> <option>Junioren (17 - 19)</option> <option>Hobby ohne Lizenz über 17</option> </select> </label></td> </tr> <tr> <td><label> <div align="right">Verein (falls vorhanden)</div> </label></td> <td><input type="text" name="verein" id="verein" /></td> </tr> <tr> <td><label> <div align="right">UCI Code </div> </label></td> <td><input type="text" name="uci" id="uci" /></td> </tr> <tr> <td><label> <div align="right">e-Mail </div> </label></td> <td><label> <input type="text" name="email" id="email" /> </label></td> </tr> <tr> <td height="10"><div align="right">Telefon</div></td> <td height="10"><label> <input type="text" name="telefon" id="telefon" /> </label></td> </tr> <tr> <td height="10" colspan="2"> </td> </tr> <tr> <td height="58" colspan="2">Durch das Abschicken der Nennung akzeptiert der Teilnehmer die <a href="ausschreibung.html" target="_blank">Ausschreibung</a> und die <a href="anmeldung.html" target="_blank">Teilnehmerinformation</a>. </td> </tr> <tr> <td colspan="2"> </td> </tr> <tr> <td colspan="2"><div align="center"> <input type="submit" name="Abschicken" value="Abschicken" /> <input type="reset" name="Abschicken2" value="Zurücksetzen" /> </div></td> </tr> </table> </form> <p> </p> <p align="center"> </div> Honk ![]()
____________________________________
![]() ![]() |
![]() |
![]() |
![]() |
#8 |
Senior Member
![]() Registriert seit: 05.10.2008
Alter: 49
Beiträge: 155
|
![]() Hallo!
Versuch ein Mal vor dem $eintrag ein echo hinzuschreiben, dann siehst, ob über die Variablen die Werte angenommen wurden. Wenn das funktioniert, solltest mal gucken, ob du die Dateitypen auch richtig vergeben hast. Hab jetzt zwar schon lang nix mehr mit PHP gmacht, aber kann mi no gut erinnern, dass i manchmal eine Ewigkeit gsessen bin und Fehler gsucht hab, weil ich in der Tabelle ein Integer vergeben hab, aber beim Eintragen ein Hochkomma verwendet hab. Aja, noch eines hätte ich fast vergessen. Nochmals nachsehen, ob die Variablen und die Tabellennamen eh gleich gschrieben sind. grüsse, jellyfish Geändert von {jellyfish} (15.01.2010 um 15:43 Uhr). |
![]() |
![]() |
![]() |
#9 |
Master
![]() Registriert seit: 29.07.2000
Alter: 62
Beiträge: 694
|
![]() also die Echoausgabe ist OK:
INSERT INTO kids (vorname, name, ort, plz, strasse, jahr, geschlecht, kategorie, verein, uci, email, telefon) VALUES ('klaus', 'xxxxx', 'xxxx', 'xxx' 'xxxxxx, 'xxxx','männlich', 'U 5', 'RC', '3434343', 'xxxxx@gmx.at', '343434343') saublöde Frage: die Tabelle die funktioniert habe ich als erstes bei myphpadmin eingetragen. die als zweite eingetragene (kids) steht aber in der Datenbank an erster Stelle (anscheinend alphabetisch gereiht) .... kanns daran liegen ![]() ![]()
____________________________________
![]() ![]() |
![]() |
![]() |
![]() |
#10 |
Senior Member
![]() Registriert seit: 05.10.2008
Alter: 49
Beiträge: 155
|
![]() Beim 4ten XXX felt das Hochkomma.
Wenns das nicht war -> Alle Felder deiner Tabelle sind danach varchar? Die Zeichenlänge auch lang genug gewählt? Das mit der Tabelle habe ich leider nicht verstanden, was du da genau meinst. grüsse, jellyfish |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|