php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 10.06.2008, 20:26  
Neuer Benutzer
 
Registriert seit: 10.06.2008
Beiträge: 2
sorry1212
Standard PHP und MySQL verbinden

Probleme mit dem Verbinden von PHP und MySQL? Kenn ich, hab ich!
sorry1212 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 10.06.2008, 20:43  
Neuer Benutzer
 
Registriert seit: 10.06.2008
Beiträge: 2
sorry1212
Standard

Hallo alle zusammen,

Folgendes Problem:
Ich soll für den Informatikunterricht eine Datenbank für ein Süßwarengeschäft erstellen. In dieser Datenbank sollen alle Daten, die über Sortiment, Kunden und deren Bestellungen bekannt sind, gespeichert werden, sodass die Geschäftsleitung (also ich) sie einsehen kann.
Im Moment hänge ich noch bei den Kunden fest: Ich habe ein Formular erstellt -


Code:
<form action="kundenauswert.php" method="post">
 
E-Mail-Adresse: <input type="text" size="20" name="EMailAdresse" maxlength="100">



 Name: <input type="text" size="20" name="Name" maxlength="100">



 Vorname: <input type="text" size="20" name="Vorname" maxlength="100">



 Geburtsdatum: <input type="text" size="20" name="Geburtsdatum" maxlength="100"> 
 jjjj-mm-tt

 


 Ort: <input type="text" size="20" name="Ort" maxlength="100">



 PLZ: <input type="text" size="20" name="PLZ" maxlength="100">



 Straße: <input type="text" size="20" name="Straße" maxlength="100">



 Hausnummer: <input type="text" size="20" name="Hausnummer" maxlength="100">



 Telefonnummer: <input type="text" size="20" name="Telefonnummer" maxlength="100">

 


 <input type="submit" value="Registrieren">
 <input type="reset" value="Verwerfen"></form>
-

Und natürlich auch die dazugehörige Seite zum Auswerten der eingegebenen Daten des Kunden, sprich zum Übertragen der Formulardaten in die Datenbank -


PHP-Code:
<?php

    $db_link 
= @mysql_connect("localhost""info10c""passwort");
    
$Auswahl = @mysql_select_db("info10c"$db_link);
    
$Kundeneintrag mysql_query("INSERT INTO Kunden values ('$EMailAdresse', '$Name', '$Vorname', '$Geburtsdatum', '$Ort', '$PLZ', '$Straße', '$Hausnummer', '$Telefonnummer')");


    if(
$db_link) {
        echo 
"Verbindung wurde aufgebaut.
\n"
;
        echo 
"<pre>\n";
        
var_dump($db_link);
        echo 
"</pre>\n";
          } else {
        echo 
"Es konnte keine Verbindung aufgebaut werden.";
    }

                 if(
$Auswahl) {
            echo 
"Die Datenbank ".info10c." wurde ausgewählt.";
                        } else {
            echo 
"Datenbank ".info10c." wurde nicht gefunden.";
        }


        if(
$Kundeneintrag) {
                echo 
"

Ihre Daten wurden in die Kartei aufgenommen."
;
                } else {
                echo 
"

Bei der Eingabe Ihrer Daten ist ein Fehler aufgetreten. Bitte überprüfen Sie Ihre Eingabe auf Ihre Richtigkeit wie z.B. Vergessen einer Eingabe oder unzulässige Sonderzeichen. Sollte das Problem weiterhin bestehen, wenden Sie sich an den Systemadmisnistrator."
;
                }
        
    
?>
-

Das Problem - oh welch ein Wunder -: Es geht nicht.
Wenn ich die Daten sende, erhalte ich immer nur die Fehlermeldung: Bei der Eingabe Ihrer Daten ist ein Fehler aufgetreten. Bitte überprüfen Sie Ihre Eingabe auf Ihre Richtigkeit wie z.B. Vergessen einer Eingabe oder unzulässige Sonderzeichen. Sollte das Problem weiterhin bestehen, wenden Sie sich an den Systemadmisnistrator.
Ist ja schön und gut, dass er das ausgibt, aber ich hätte die Daten trotzdem ganz gern in der Datenbank. Mittlerweile sitze ich seit gut 2 Wochen daran und komme nicht weiter. Und da ich in ca. 1 Woche abgeben muss, mach ich mir langsam echt Sorgen.
Ich habe zwar schon etliche Male gegoogelt und Foren durchwühlt, komme aber zu nichts, das mir hilft.

Ich hoffe, irgendeiner von euch kann mir weiterhelfen!

Vielen Dank auch schon mal im Voraus und Gruß Hauke

P.S.: 1) Ich hoffe, ich bin hier überhaupt richtig.
2) Bei "values" hab ich sowohl mit als auch ohne "$" rumprobiert. Aber geholfen hat's bis jetzt leider nichts. Also hoffe ich, dass ihr mir sagen könnt, wo ich meine Fehler gemacht hab.
sorry1212 ist offline   Mit Zitat antworten
Alt 10.06.2008, 21:07  
Erfahrener Benutzer
 
Registriert seit: 27.08.2004
Beiträge: 239
vollkommenegal
Standard

Damit sich das ausgleicht, von mir nur eine kurze Antwort zu Deinem riesigen Post: Dein INSERT INTO ist falsch. Vor dem "VALUES" musst Du die jeweiligen Feldnamen nennen.

cya
vollkommenegal ist offline   Mit Zitat antworten
Alt 10.06.2008, 21:40  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Richtig. Und hier noch nen kurzes Beispiel:

Code:
INSERT INTO tabelle (id, email, name) VALUES ('1', 'blub@bla.bli', 'ich halt')
Oder alternative Syntax die ich bevorzuge:

Code:
INSERT INTO tabelle SET
    id = '1',
    email = 'blub@bla.bli',
    name = 'ich'
Übrigens ist das mal eine Anfängerfrage! Also wenn die Syntax nicht stimmt kann man wirklich nicht von fortgeschritten reden.
Flor1an ist offline   Mit Zitat antworten
Alt 11.06.2008, 08:58  
Erfahrener Benutzer
 
Benutzerbild von phpdummi
 
Registriert seit: 06.06.2008
Beiträge: 1.631
PHP-Kenntnisse:
Anfänger
phpdummi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo sorry1212,

um einen Fehler in einem Programm zu finden (bzw. das Programm zu "debuggen") sollte man gewisse Dinge beachten.
Du stellst zum Beispiel die Datenbankverbindung mit @mysql_connect her und wählst danach mit @mysql_select_db die Datenbank aus.
Wie du sicher weißt, unterdrückt das @-Zeichen jegliche Fehlermeldungen. Mag sein dass dein Lehrer oder ein Buch das du verwendest
dies so Vorschreibt, dennoch ist dies FALSCH!!! Um überhaupt zu wissen ob eine Verbindung zu Stande kommt bzw. die Datenbank
ausgewählt wurde, musst du dir etwaige Fehlermeldungen ausgeben lassen.
Um den Query, den du an die Datenbank sendest, auf Fehler zu überprüfen, solltest du immer folgendes Konstrukt verwenden:
PHP-Code:
mysql_query($sql) or die(mysql_error()); 
Damit kann dir auch ein Fehler im Query - wie dein aktueller z.B. - angezeigt werden.

Weitere Standard-Dinge, die in jedes Script gehören findest du bspw. hier:
http://www.php.de/php-einsteiger/announcements.html

Viel Erfolg!
phpdummi ist offline   Mit Zitat antworten
Alt 11.06.2008, 13:10  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Einiges wurde hier schon gesagt. Da aber bei dir, wie in jedem andern vernünftigen System, wahrscheinlich register_globals auf off stehen, wist du auch nie etwas in die DB kriegen. Suche mal nach diesem Begriff, ich werde es dir bei den Fortgeschrittenen sicher nicht erklären. Das sind eigentlich Pre-Anfänger Grundlagen.
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 11.06.2008, 13:41  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

@Razor: Ich finde die zweite Variante die du gepostet hast auch ganz praktisch und hab sie auch schon öfters benutzt, aber das lässt sich sicher nicht auf andere SQL-Datenbanken portieren oder?
cycap ist offline   Mit Zitat antworten
Alt 11.06.2008, 14:55  
there's only one psycho
 
Benutzerbild von PsychoEagle
 
Registriert seit: 21.08.2007
Beiträge: 1.283
PHP-Kenntnisse:
Anfänger
PsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer Mensch
PsychoEagle eine Nachricht über ICQ schicken PsychoEagle eine Nachricht über Skype™ schicken
Standard

Ich hatte mal irgendwo inoffiziell gelesen, dass die zweite Variante zwar funktioniert, aber nicht sonderlich so gedacht und valide ist. Ob das Offiziell so ist, kann ich aber leider nicht sagen, drum is ja egal

Aber so nebenbei @ Topic Ersteller: Debuggen

Nicht einfach prüfen auf "true" und "false", sondern auch mal gern Fehler ausgeben lassen

Code:
mysql_error()
mysql_errno()
Und sinnvoll finde ich auch mal ein SQL-Statement ausgeben zu lassen, welches nicht funktioniert

Code:
echo $Kundeneintrag;
Das Problem wurde schon gefunden: Falsche SQL Anweisung, Spaltennamen (= Attribute) fehlen, sowie schauen was mit register_globals los ist. Sonst haste entweder Sicherheitsprobleme oder leere Eintragungen in der DB.

So nebenbei, schreibe niemals (!!) ungeprüfte Eingaben eines Benutzers in eine Datenbank oder eine Datei. Das heisst, $_POST, $_REQUEST, $_GET, ...

Nie!!

Stichwort hier auch "SQL-Injections"

Grüße
__________________
"Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)
PsychoEagle ist offline   Mit Zitat antworten
Alt 11.06.2008, 15:04  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Wobei die SQL Anweisung hier nicht unbedingt falsch sein muss, man muss nicht unbedingt die Feld-Namen angeben, solange man in ALLE Felder was reinschreibt. Aber auch das würde mit einem einfachen mysql_error() beanstandet werden. Außerdem dient es doch sehr der übersicht wenn man die Feldnamen ins SQL-Statement mit reinschreibt und wenn man es nicht tun sollte und will mal eine Spalte anfügen die man nicht überall braucht, dann heisst es jedes Insert-Statement im Code überarbeiten.
cycap ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

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

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] MySQL - ERROR 1044 bei erstellen einer Datenbank _youngenterpriser_ Datenbanken 2 05.02.2008 17:56
mit mysql verbinden hexla Datenbanken 5 20.08.2007 15:37
Mysql Server Einstellunen Optimieren pchero Datenbanken 3 01.05.2007 19:50
[Erledigt] not allowed to connect to this MySQL server PHP Tipps 2005-2 2 23.09.2005 18:34
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
Kann mich nicht mit MySQL verbinden! PHP Tipps 2005-2 8 23.07.2005 09:38
Suche MySQL Funktion zum Verbinden 2er Felder R4v3r Datenbanken 2 12.07.2005 23:49
MySQL - mehrere tabellen verbinden freitz PHP Tipps 2005-2 1 02.07.2005 15:44
mysql root passwort vergessen Datenbanken 1 29.05.2005 11:33
[Erledigt] Ausgelesende Daten in MySQL Tabellen mit Links verbinden Datenbanken 8 15.01.2005 20:50
Access denied for user: '@localhost' / SYSTEM@localhost Datenbanken 0 10.11.2004 20:35
mysql anweisungen verbinden Anuschka Datenbanken 3 15.09.2004 11:50
MySQL - Abfragen verbinden Anuschka Datenbanken 4 20.08.2004 11:37
[Erledigt] PHP5 &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;a m p; MySQL Datenbanken 5 01.08.2004 05:47
[Erledigt] Mysql und Microsoft Access verbinden Datenbanken 4 20.07.2004 18:14

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php mit mysql verbinden, php und mysql verbinden, systemadmisnistrator, mysql_query(\insert into kunden values()\) or die (mysql_error());, sicher zur sql datenbank verbinden, eigenen mysql server verbinden razor sql, php mysql insert datenbank verbinden, php mit mysql verbinden sicherheit

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:30 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.