WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 15.01.2010, 10:32   #1
Honk
Master
 
Registriert seit: 29.07.2000
Alter: 62
Beiträge: 694


Standard Und wiedereinmal PHP / Mysql

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
____________________________________
Ich lebe über meine Verhältnisse aber unter meinem Niveau!
Honk ist offline   Mit Zitat antworten
Alt 15.01.2010, 10:39   #2
zAPPEL
Inventar
 
Registriert seit: 07.11.2001
Ort: Perchtoldsdorf
Alter: 45
Beiträge: 2.085

Mein Computer

Standard

Zitat:
Zitat von Honk Beitrag anzeigen
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
Was genau meinst du denn damit? Zwei Tabellen in einer Datenbank sind kein Problem, der Fehler muss woanders liegen. Wie heißen die Tabellen? Wie sieht dein Code aus? Nach dem Insert-Statement schon ein "echo mysql_error()" reingetan?

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
zAPPEL ist offline   Mit Zitat antworten
Alt 15.01.2010, 11:25   #3
Honk
Master
 
Registriert seit: 29.07.2000
Alter: 62
Beiträge: 694


Standard

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
____________________________________
Ich lebe über meine Verhältnisse aber unter meinem Niveau!
Honk ist offline   Mit Zitat antworten
Alt 15.01.2010, 12:50   #4
T.dot
Master
 
Registriert seit: 13.08.2003
Beiträge: 624


Standard

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
T.dot ist offline   Mit Zitat antworten
Alt 15.01.2010, 14:36   #5
Honk
Master
 
Registriert seit: 29.07.2000
Alter: 62
Beiträge: 694


Standard

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
____________________________________
Ich lebe über meine Verhältnisse aber unter meinem Niveau!
Honk ist offline   Mit Zitat antworten
Alt 15.01.2010, 14:59   #6
zAPPEL
Inventar
 
Registriert seit: 07.11.2001
Ort: Perchtoldsdorf
Alter: 45
Beiträge: 2.085

Mein Computer

Standard

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:
$eintragen mysql_query($eintrag)
or die (
mysql_error()); 
Btw. pack PHP Code in PHP Tags im Forum, das macht das ganze viel besser lesbar.

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
zAPPEL ist offline   Mit Zitat antworten
Alt 15.01.2010, 21:22   #7
zAPPEL
Inventar
 
Registriert seit: 07.11.2001
Ort: Perchtoldsdorf
Alter: 45
Beiträge: 2.085

Mein Computer

Standard

Die ist im myAdmin weiter oben weil die alphabetisch sortiert werden - das kanns also nicht sein. Ich weiß, dass man Strings in Komma setzen muss in der query, aber einem Integer-Feld kann man doch auch ein '1' übergeben.
Gerade in einer Datenbank getestet: INSERT INTO table1 (name,lastactivity,createdby) VALUES ('test','1','1') funktioniert, wobei createdby und lastactivity INT Felder sind. Das kanns also nicht sein

Wenn die Zeichenlänge zu gering ist funktioniert der INSERT trotzdem, aber der Text wird abgeschnitten.

Was sag phpMyAdmin wenn du die Echo-Ausgabe dort ausführst?

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
zAPPEL ist offline   Mit Zitat antworten
Alt 15.01.2010, 22:25   #8
{jellyfish}
Senior Member
 
Benutzerbild von {jellyfish}
 
Registriert seit: 05.10.2008
Alter: 49
Beiträge: 155


Standard

Ok, auch gut. Hat bei mir oft troubles geben wegen den Datentypen.
Dann weiß ich leider auch nix mehr, zumindest fällt mir momentan nix ein.

grüsse, jellyfish
{jellyfish} ist offline   Mit Zitat antworten
Alt 17.01.2010, 09:28   #9
zAPPEL
Inventar
 
Registriert seit: 07.11.2001
Ort: Perchtoldsdorf
Alter: 45
Beiträge: 2.085

Mein Computer

Standard

Die Anführungszeichen sollten kein Problem sein, ein \" macht das ganze imho nur unleserlicher.

lg
____________________________________
„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
zAPPEL ist offline   Mit Zitat antworten
Alt 18.01.2010, 14:11   #10
Honk
Master
 
Registriert seit: 29.07.2000
Alter: 62
Beiträge: 694


Standard

Hallo
Danke für eure bisherige Mithilfe

Ich habe jetzt
$eintragen = mysql_query($eintrag)
or die (mysql_error());

eingetragen und bekomme folgende Meldung:

"Anzahl der Felder stimmt nicht mit der Anzahl der Werte in Zeile 1 überein"

Äh ... was??

Ich habe jeweils 12 Felder (Formular, Script und DB; siehe Bild)
.... was will mysql von mir

____________________________________
Ich lebe über meine Verhältnisse aber unter meinem Niveau!
Honk ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:44 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag