php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 06.11.2007, 16:23  
Erfahrener Benutzer
 
Benutzerbild von Toby
 
Registriert seit: 26.09.2007
Beiträge: 117
PHP-Kenntnisse:
Anfänger
Toby befindet sich auf einem aufstrebenden Ast
Toby eine Nachricht über MSN schicken
Standard MySql - Daten übers Formular einfügen?

Hallo Profis, ich bins wieder mal.

Also: Ich bin dran ein kleines Newsscript zu programmieren, welches über ein Formular Einträge speichern soll...

Nun geht das aber nich so ganz:
Hier ma der wichtigste Codeschnipsel:

PHP-Code:
<?php
if(isset($_POST['submit'])) {    // Wenn das Formular abgeschickt wurde mache folgendes:
        
$title    $_POST['title'];    // Post Variabeln umschreiben
        
$msg    $_POST['msg'];
        
        
/*unset($_POST['submit']);
        $array = implode(", ",$_POST);
        print_r($array);*/
        
        
if($title "" ||  $msg "") {            // Wenn ein Feld im Formular nicht ausgefühlt wurde (also title oder msg is leer)
            
echo "Sie müssen einen Titel und eine Nachricht eingeben...";
        }
        else {
            
$sql "
                INSERT INTO $table
                    (title, date, msg)
                VALUES
                    ('$title', now(), '$msg')
            "
;
        
            
mysql_query($sql) or die("Folgender Fehler ist beim einfügen der Daten aufgetreten:<br />".mysql_error());    // Mach oder gib Fehler
            
echo "Folgender Newseintrag eingefügt: <pre>"$sql ."</pre>";
        }
    
    }
?>
Nun gibt er mir eine Fehlermeldung, was logisch ist, da ich keine Arrays in die DB schreiben kann.. Glaub ich jedenfalls....

Blöderweise ist mir entfallen, wie ich das lösen kann..
Hab irgendwas über Implode und Serialize gelesen doch, dass hat nicht so ganz funktioniert und versteh ich auch nich ganz...

Kann mir das jemand erklährn?

Dankeschön Gruss
Toby
__________________
hofoa.ch
----------------------------
Toby ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 06.11.2007, 17:36  
Erfahrener Benutzer
 
Benutzerbild von Montellese
 
Registriert seit: 30.07.2007
Beiträge: 541
Montellese befindet sich auf einem aufstrebenden Ast
Montellese eine Nachricht über MSN schicken
Standard

1. Diese Frage gehört ins Board MySQL!
2. Welche Fehlermeldung kriegst du? SQL-Fehlermeldungen haben es an sich, dass der Fehler genau vor der Stelle liegt, wo der Teil des Queries in der Fehlermeldung angegeben wird.
3. Schreibe nie irgendwelche Daten, die du von einem Formular gekriegt hast, direkt in eine Datenbank (SQL-Injections).
4. Ich vermute schwer, dass der Fehler bei dem $table und dem "now()" liegt. MySQL versucht, den Wert now() direkt in die Datenbank zu speichern, was aber so nur bei Zahlen funktioniert. Funktionen werden dabei nicht ausgewertet. Dafür musst du folgendes schreiben:
PHP-Code:
INSERT INTO ".$table." (titledatemsgVALUES ('$title'".now()."'$msg'
Durch das "escapen" (so wird die Aktion mit dem ". ." genannt), wird der Wert der Variable oder der Rückgabewert einer Funktion direkt in den String geschrieben. Und die Ausgabe des Queries ($sql) nach dem Einfügen ist auch ziemlich gefährlich. Aber ich gehe mal davon aus, dass du das nur zu Testzwecken so hattest.
Montellese ist offline  
Alt 06.11.2007, 20:09  
Erfahrener Benutzer
 
Benutzerbild von Toby
 
Registriert seit: 26.09.2007
Beiträge: 117
PHP-Kenntnisse:
Anfänger
Toby befindet sich auf einem aufstrebenden Ast
Toby eine Nachricht über MSN schicken
Standard

Tag auch,

1. Oh, entschuldige, werds mir merken!

2. Ich habe gemerkt, dass ich die Fehlermeldung nur krieg, wenn ich VALUES ($title, now(), $msg) anstatt VALUES ('$title', now(), '$msg') schreibe.
Diese sieht dann so aus:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' now(), )' at line 4

3. Joa, werds mir merken, ich machs aber sowieso nur für Testzwecke..
Was meinst du denn mit nicht direkt in die DB schreiben? Was soll ich den sonst mit ihnen machen... Ich muss sie ja dort reinschreiben, um sie später (also in den News) wieder ausgeben zu können!? Oder wie meinst du das?

4. Wie du bei 2. schon gesehen hast, hattest du recht ^^
Jedoch, wenn ich das now() escape, dann sagt er mir, es sei ne undefienierte Funktion und bricht ab...

So, herzlichen Dank für deine Hilfe...
MFG Toby
__________________
hofoa.ch
----------------------------
Toby ist offline  
Alt 06.11.2007, 20:49  
Erfahrener Benutzer
 
Benutzerbild von Montellese
 
Registriert seit: 30.07.2007
Beiträge: 541
Montellese befindet sich auf einem aufstrebenden Ast
Montellese eine Nachricht über MSN schicken
Standard

@3.: Man sollte jede Eingabe zuerst überprüfen und dann z.B. mit mysql_real_escape_string() in die Datenbank schreiben. Das gewährt dir, dass niemand so einfach Unsinn mit deiner Datenbank treiben kann.

@4.: Oh sorry das mit dem now() ist natürlich korrekt. Ist ja eine SQL-Funktion. Habs mit der PHP-Funktion time() verwechselt! Das wäre dann so doch ok
Montellese ist offline  
Alt 06.11.2007, 20:59  
Erfahrener Benutzer
 
Benutzerbild von Toby
 
Registriert seit: 26.09.2007
Beiträge: 117
PHP-Kenntnisse:
Anfänger
Toby befindet sich auf einem aufstrebenden Ast
Toby eine Nachricht über MSN schicken
Standard

Joa stimmt auch wieder... Danke ^^

Hmm.. Aber wenn die Funktion stimmt, warum funktionierts dann nich??...
Dann muss der Fehler ja irgendwo anders sein?

Danke für die Hilfe
MFG Toby
__________________
hofoa.ch
----------------------------
Toby ist offline  
Alt 06.11.2007, 22:34  
Erfahrener Benutzer
 
Benutzerbild von Montellese
 
Registriert seit: 30.07.2007
Beiträge: 541
Montellese befindet sich auf einem aufstrebenden Ast
Montellese eine Nachricht über MSN schicken
Standard

Kriegst du überhaupt keine Fehlermeldung? Weder von PHP noch über mysql_error() ??? Wenn nicht, schreib mal ganz oben in die Datei folgendes:
PHP-Code:
error_reporting(E_ALL); 
Dann sollten dir jegliche Notices, Warnings und Errors angezeigt werden.
Montellese ist offline  
Alt 06.11.2007, 22:43  
Erfahrener Benutzer
 
Benutzerbild von Toby
 
Registriert seit: 26.09.2007
Beiträge: 117
PHP-Kenntnisse:
Anfänger
Toby befindet sich auf einem aufstrebenden Ast
Toby eine Nachricht über MSN schicken
Standard

Doch ich krieg ja ne Fehlermeldung.. Siehe hier:

Zitat:
Zitat von Toby Beitrag anzeigen
2. Ich habe gemerkt, dass ich die Fehlermeldung nur krieg, wenn ich VALUES ($title, now(), $msg) anstatt VALUES ('$title', now(), '$msg') schreibe.
Diese sieht dann so aus:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' now(), )' at line 4
EDIT:
Achja und wenn ichs so mach, dass ich sie nich krieg, denn wird einfach nleerer String übergeben (also bei $title und $msg)...
__________________
hofoa.ch
----------------------------
Toby ist offline  
Alt 06.11.2007, 23:14  
Erfahrener Benutzer
 
Registriert seit: 14.10.2007
Beiträge: 306
PHP-Kenntnisse:
Fortgeschritten
Papst befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
<?php
if($title "" ||  $msg "")
?>

du ersetzt mit der "abfrage" den inhalt von $title und $msg
Papst ist offline  
Alt 06.11.2007, 23:29  
Erfahrener Benutzer
 
Benutzerbild von Toby
 
Registriert seit: 26.09.2007
Beiträge: 117
PHP-Kenntnisse:
Anfänger
Toby befindet sich auf einem aufstrebenden Ast
Toby eine Nachricht über MSN schicken
Standard

Oha... Danke... ich dachte mir schon, dass es irgendwie daran liegen könnte...
Ich werd das ma noch ändern..

Dankeschön

Gruss Toby
__________________
hofoa.ch
----------------------------
Toby ist offline  
Alt 07.11.2007, 09:51  
Benutzer
 
Registriert seit: 02.10.2007
Beiträge: 52
DJ Nuno befindet sich auf einem aufstrebenden Ast
Standard

passt ja zu meinem neuen beitrag, die POST daten ungefiltert in den SQL Befehl zu schreiben ist nicht die beste idee oder?
__________________
MFG
DJ Nuno
DJ Nuno ist offline  
 


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
Über Formular mysql daten ändern? incubo PHP Tipps 2008 6 18.03.2008 04:11
Zugriff auf eine ORACLE DB die Daten in eine MYSQL schreiben Cheesy PHP Tipps 2007 5 12.06.2007 15:36
Mysql daten wieder hochladen Matthiasnet Datenbanken 0 14.08.2006 15:25
Einlesen von Daten in Formular Fragenfrager PHP Tipps 2006 3 14.08.2006 10:11
POST Daten ohne Formular übergeben? &lt;Daniel&gt; PHP Tipps 2006 8 19.06.2006 14:34
MySQL Server startet nicht mehr richtig... Datenbanken 16 03.03.2006 19:40
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
mysql daten ohne html formatierung ausgeben wizzardxx PHP Tipps 2005 2 28.03.2005 00:56
Mysql daten in Selct element einfügen PHP Tipps 2005 4 08.03.2005 17:44
Mysql daten in Selct element einfügen PHP Tipps 2005 5 08.03.2005 16:48
[Erledigt] MYSQL Daten im Formular ändern Datenbanken 1 01.03.2005 08:15
[Erledigt] Daten via Formular in MySql eintragen Datenbanken 2 11.02.2005 14:03
[Erledigt] PHP Formular - Daten an nächsten Schritt weiter geben - Wie? PHP Tipps 2005 14 02.01.2005 20:05
[Erledigt] Daten in einem Formular ausgeben und ändern PHP Tipps 2004-2 7 07.12.2004 17:22
[Erledigt] Wer kann mir ein Formular mit MySQL erstellen? Off-Topic Diskussionen 2 06.07.2004 13:13

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php form datensatz hinzufügen, mehrere datensätze mit formular einfügen mysql, mysql daten eingeben, php formular date now, fomrular mit now() php an sql übergeben, mysql daten umschreiben php, mehrere datensätze array formular einfügen mysql, mehrere datensätze über formular php einfügen, daten in formular eingeben mysql, \mehrere datensätze\ \ein formular\ php einfügen, mysql textfeld formular editieren speichern, wenn ein oder mehrere formularfelder nicht ausgefüllt sind, dann schreibe nciht in die db sql php, php formular datensatz eingeben, php mysql daten formular einfügen, php datenin sql tabelle einfügen formulardaten, php ausgefuehlte formular auf die naechste seite anzeigen, daten aus form in mysql einfügen, formular datensätze in mysql einfügen, php mysql datensatz einfügen, mysql daten in formular einfügen

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:00 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