php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 08.11.2011, 22:03  
Neuer Benutzer
 
Registriert seit: 08.11.2011
Beiträge: 21
PHP-Kenntnisse:
Anfänger
Wuestenfuchs befindet sich auf einem aufstrebenden Ast
Standard Neuen Datensatz erstellen (MySQL)

Hallo,

ich bin recht neu in MySQL und möchte gerne über MySQL neue Datensätze
in meine Datenbank schreiben können. Meine Datenbank heißt "test1" und meine
Tabelle dort "testtabelle". Ich habe schon gegoogelt, aber bei mir kommt kein
Error, das Formular wird geleert, aber es steht kein neuer Datensatz in meiner
Tabelle. Hier mal mein Code:

Code:
<?php
 $db=mysql_connect("localhost","root","")
 or die("Fehler bei der Verbindung zur Datenbank.");

 mysql_select_db("test1")
 or die("Fehler beim Öffnen der DB.");

 // Prueft, ob der Submit Button gedrueckt wurde
 if(isset($_POST['abschicken']))
 {
  // Variablen von dem Formular uebertragen
  $frage = $_POST['frage'];
  $fach = $_POST['fach'];
  $thema = $_POST['thema'];
  $unterthema = $_POST['unterthema'];
  $punkte = $_POST['punkte'];
  $antwort = $_POST['antwort'];

   // Schreibt in die Datenbank
   $eintrag=mysql_query("INSERT INTO testtabelle (frage,fach,thema,unterthema,punkte,antwort)VALUES('$frage','$fach','$thema','$unterthema','$punkte','$antwort'");

   mysql_close($db);
 }
 echo "$eintrag";
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
<meta name="author" content="Autor">
<meta name="editor" content="html-editor phase 5">
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
<form action"" method="post">
<p>Frage:        <input type="text" size="20" maxlength="250" name="frage"></p>
<p>Fach:        <input type="text" size="20" maxlength="250" name="fach"></p>
<p>Thema:        <input type="text" size="20" maxlength="250" name="thema"></p>
<p>Unterthema:        <input type="text" size="20" maxlength="250" name="unterthema"></p>
<p>Punkte:        <input type="text" size="20" maxlength="250" name="punkte"></p>
<p>Antwort:        <input type="text" size="20" maxlength="250" name="antwort"></p>
<p>
<input type="submit" name="abschicken" value="Speichern">
</p>

</form>
</body>
</html>
Ich hätte auch noch die Frage, ob es egal ist, ob man den PHP Code in den
Body oder ganz oben schreibt und wenn nicht, worauf es ankommt.
Vielen Dank schonmal im voraus!
Wuestenfuchs ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 08.11.2011, 22:13  
Erfahrener Benutzer
 
Registriert seit: 28.06.2009
Beiträge: 109
PHP-Kenntnisse:
Fortgeschritten
eisenhans befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Wuestenfuchs Beitrag anzeigen
Code:
<?php
... // Prueft, ob der Submit Button gedrueckt wurde
 if(isset($_POST['abschicken']))
 {
  // Variablen von dem Formular uebertragen
  $frage = $_POST['frage'];
  $fach = $_POST['fach'];
  $thema = $_POST['thema'];
  $unterthema = $_POST['unterthema'];
  $punkte = $_POST['punkte'];
  $antwort = $_POST['antwort'];

   // Schreibt in die Datenbank
   $eintrag=mysql_query("INSERT INTO testtabelle (frage,fach,thema,unterthema,punkte,antwort)VALUES('$frage','$fach','$thema','$unterthema','$punkte','$antwort'");

   mysql_close($db);
 }
 echo "$eintrag";
...
könntest Du ersetzen mit:
Code:
<?php
... // Prueft, ob der Submit Button gedrueckt wurde
 if(isset($_POST['abschicken']))
 {
  // Variablen von dem Formular uebertragen
  $frage = $_POST['frage'];
  $fach = $_POST['fach'];
  $thema = $_POST['thema'];
  $unterthema = $_POST['unterthema'];
  $punkte = $_POST['punkte'];
  $antwort = $_POST['antwort'];

  $sql = "INSERT INTO testtabelle (frage,fach,thema,unterthema,punkte,antwort)VALUES('$frage','$fach','$thema','$unterthema','$punkte','$antwort'";
  echo $sql; 
   // Schreibt in die Datenbank
   $eintrag=mysql_query($sql);
   mysql_close($db);
 }
...
Dann weißt Du
a.) Welche Variablen bei Dir angekommen sind
b.) Kannst Du das SQL-Statement über phpmyadmin oder sonstwie austesten
c.) Weißt Du auch, ob der Aufruf vorgenommen wird.


Zitat:
Zitat von Wuestenfuchs Beitrag anzeigen
Ich hätte auch noch die Frage, ob es egal ist, ob man den PHP Code in den
Body oder ganz oben schreibt und wenn nicht, worauf es ankommt.
Vielen Dank schonmal im voraus!
Falls Du die eingegebenen Variablen wieder ausgeben möchtest (Stichwort Affenformular), macht es Sinn, sie erst auszuwerten, um sie danach auszugeben ...
__________________
Webstammtisch Oldenburg
eisenhans ist offline   Mit Zitat antworten
Alt 08.11.2011, 22:24  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von Wuestenfuchs Beitrag anzeigen
aber bei mir kommt kein
Error, das Formular wird geleert, aber es steht kein neuer Datensatz in meiner
Tabelle.
http://www.php.de/wiki-php/index.php...ging:Leitfaden
http://www.php.de/wiki-php/index.php/Debugging:SQL
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 08.11.2011, 22:44  
Neuer Benutzer
 
Registriert seit: 08.11.2011
Beiträge: 21
PHP-Kenntnisse:
Anfänger
Wuestenfuchs befindet sich auf einem aufstrebenden Ast
Standard

Danke für die Antworten!
Also eisenhans, genau das habe ich ja versucht mit dem Code,
allerdings wird auch mit dem Code von dir nichts ausgegeben.
D.h. es muss wohl an der Liste von den Variablen liegen, oder?
Code:
  $frage = $_POST['frage'];
  $fach = $_POST['fach'];
  $thema = $_POST['thema'];
  $unterthema = $_POST['unterthema'];
  $punkte = $_POST['punkte'];
  $antwort = $_POST['antwort'];
Ich habe das hier als Vorlage genommen:
Code:
<?php
    
  // prueft ob der submit button gedrueckt wurde
  if(isset($_POST['sender']))
  {
      
      // trim() entfernt die whitespaces vor und hinter dem string
      $vorname = trim($_POST['vorname']);
      $nachname = trim($_POST['nachame']);    
      
      // ueberpruefung ob die werte nicht leer sind
      if(!empty($vorname) && !empty($nachname))
      {
          // schreibe in die datenbank mysql_real_escape_string ist empfehlenswert um seine daten gegen sql injections abzusichern 
          mysql_query("INSERT INTO tabelle (vorname, nachname) VALUES ('".mysql_real_escape_string($vorname)."', '".mysql_real_escape_string($nachname)."')");
      }
  }
  
?>
Dieses tirim braucht man anscheinend nicht unbedingt, und der Rest ist
doch genau gleich :/

Danke für die Links ChrisB!
Wuestenfuchs ist offline   Mit Zitat antworten
Alt 08.11.2011, 23:45  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Hallo,

es ist leider haeufig zu sehen, dass ein abgeschicktes Formular ueber den Submit-Button festgestellt wird. Das ist aber nur die halbe Miete, denn du kannst ein Formular auch per ENTER-Befehl auf deiner Tastatur abschicken, wenn du dich in einem einfachen Texteingabefeld befindest. Zwei Loesungen sind bei prozeduralem Code wie deinem ueblich: Du pruefst mit !empty($_POST), ob die Anfrage als POST-Request gesendet wurde oder du definierst im Formular ein verstecktes Eingabefeld, dass du explizit abfragen kannst: !empty($_POST["name_des_versteckten_feldes"]). Das Ausrufezeichen negiert einen Wert, aus empty ("ist leer") wird also not empty ("ist nicht leer").

Weiterhin solltest du Werte, die du in die DB schreibst maskieren, mit mysql_real_escape_string. Andernfalls erzeugst du im harmlosesten Fall einen SQL-Syntaxfehler, im schlimmsten Fall ist deine Anwendung kompromitiert (siehe SQL-Injections). Schau dich doch mal zu dem Thema in unserem Wiki/Forum um. Themen: SQL-Injections und Affenformular.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 09.11.2011, 09:38  
Erfahrener Benutzer
 
Registriert seit: 02.09.2009
Beiträge: 1.019
PHP-Kenntnisse:
Fortgeschritten
mquadrat befindet sich auf einem aufstrebenden Ast
Standard

Schau dir den Quelltext der Seite im Browser an. Ausgaben vor dem <html> werden zum Teil nicht gerendert.
__________________
Wir suchen PHP Entwickler (Vollzeit) im Raum Darmstadt / Rhein-Main. Infos via E-Mail mueller@new-frontiers.de
mquadrat ist offline   Mit Zitat antworten
Alt 09.11.2011, 17:44  
Neuer Benutzer
 
Registriert seit: 08.11.2011
Beiträge: 21
PHP-Kenntnisse:
Anfänger
Wuestenfuchs befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

ich habe jetzt folgenden Code unter dem Query Befehl eingefügt:

Code:
   if(!empty($_POST))
   {
    echo "Anfrage wurde gesendet";
    echo "$frage <br>";
    echo "$fach <br>";
    echo "$thema <br>";
    echo "$unterthema <br>";
    echo "$punkte <br>";
    echo "$antwort <br>";
   }
Und wenn ich auf den Button drücke erscheint nun die Meldung und alle
Variablen erscheinen genau wie ich sie eingegeben habe, aber sie stehen
noch nicht in der Datenbank bzw. Tabelle.
Außerdem habe nich nun die Variablen mit diesem real escape maskiert:
Code:
  // Variablen von dem Formular uebertragen
  $frage = mysql_real_escape_string($_POST['frage']);
  $fach = mysql_real_escape_string($_POST['fach']);
  $thema = mysql_real_escape_string($_POST['thema']);
  $unterthema = mysql_real_escape_string($_POST['unterthema']);
  $punkte = mysql_real_escape_string($_POST['punkte']);
  $antwort = mysql_real_escape_string($_POST['antwort']);
Das muss dann doch an dem query Befehl liegen, oder?
Code:
 mysql_query("INSERT INTO testtabelle (frage,fach,thema,unterthema,punkte,antwort)VALUES('$frage','$fach','$thema','$unterthema','$punkte','$antwort'");
Aber ich weiß nicht, was daran falsch sein soll :/
Und wie kann ich mir den den Quellcode im Brower anzeigen lassen?
Benutze Mozilla Firefox.
Wuestenfuchs ist offline   Mit Zitat antworten
Alt 09.11.2011, 18:12  
Erfahrener Benutzer
 
Benutzerbild von Delirius
 
Registriert seit: 07.07.2009
Beiträge: 215
PHP-Kenntnisse:
Anfänger
Delirius wird schon bald berühmt werden
Standard Neuen Datensatz erstellen (MySQL)

Schau´ dir den query bitte nochmal genau an...wenn dies exakt der Gleiche ist, den du auch verwendet, dann kann das nicht funktionieren.
PHP-Code:
mysql_query("
    INSERT INTO
          testtabelle (frage,fach,thema,unterthema,punkte,antwort)
    VALUES
          ('$frage','$fach','$thema','$unterthema','$punkte','$antwort'"
); 
Fällt dir was auf?

Und verwende am Besten mysql_error, um dir Fehler in Abfragen anzeigen zu lassen.

Zitat:
Zitat von Wuestenfuchs
Und wie kann ich mir den den Quellcode im Brower anzeigen lassen?
PHP-Quellcode? Wenn ja mit show_source.

PHP-Code:
show_source("datei.php"); 
__________________
LG Delirius

Ein Ring Sie zu knechten...

Geändert von Delirius (09.11.2011 um 18:18 Uhr). Grund: Code angepasst
Delirius ist offline   Mit Zitat antworten
Alt 09.11.2011, 19:34  
Neuer Benutzer
 
Registriert seit: 08.11.2011
Beiträge: 21
PHP-Kenntnisse:
Anfänger
Wuestenfuchs befindet sich auf einem aufstrebenden Ast
Standard

Danke, habe das jetzt so wie von dir abgeändert.
Wusste nicht, dass das ein Unterschied macht, wie das da
drin steht^^ Aber da scheint was in dem Befehl immernoch nicht
zu stimmen, da mysql error einen Syntax Error ausgibt near ".
Und ich benutze Phase 5 und da sind Klammern und Simikolon normal
blau nur die Klammer und das Simikolon hinter '$antwort' sind rot
wie die Variablen. Aber das lustige ist, er sagt der Syntax Error liegt
in Zeile 4, dabei sehen Zeilen 1-6 so aus:
Code:
<?php
 $db=mysql_connect("localhost","root","")
 or die("Fehler bei der Verbindung zur Datenbank.");

 mysql_select_db("test1")
 or die("Fehler beim Öffnen der DB.");
1064: 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 '' at line 4
Wuestenfuchs ist offline   Mit Zitat antworten
Alt 09.11.2011, 21:18  
Neuer Benutzer
 
Registriert seit: 08.11.2011
Beiträge: 11
PHP-Kenntnisse:
Anfänger
schreifisch befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
mysql_query("
    INSERT INTO
          testtabelle (frage,fach,thema,unterthema,punkte,antwort)
    VALUES
          ('$frage','$fach','$thema','$unterthema','$punkte','$antwort'"
); 
Zähl doch mal die Klammern... (Nase drauf stoß)

Nachsatz: at line 4 betrifft, wie die Fehlermeldung bereits verkündet, Zeile 4 deiner SQL-Syntax, nicht deines Scriptes.

Geändert von schreifisch (09.11.2011 um 21:21 Uhr). Grund: Begründung
schreifisch 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 Datenbank erstellen, nur wie? Datenbanken 9 24.04.2012 15:04
MySQL: Datensatz aus zwei Tabellen löschen Schraubendreher Datenbanken 4 16.04.2011 12:50
pro datensatz eine tabelle erstellen uncharted PHP Tipps 2010 35 15.09.2010 15:36
neuen Datensatz in der gleichen Seite laden saki81 PHP Tipps 2010 5 17.04.2010 17:53
Datensatz editieren / neuen anlegen Timetrinus PHP Tipps 2009 2 14.01.2010 11:05
[Erledigt] Tabelle automatisch generieren scheffie PHP Tipps 2009 18 07.06.2009 16:17
mysql dump erstellen PHP Tipps 2005-2 4 03.09.2005 22:02
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
datenbanken in mysql erstellen??? PHP Tipps 2005-2 0 05.08.2005 19:41
MySQL PrimaryKey von erstellen Datensatz? PHP Tipps 2005 2 09.05.2005 02:31
[Erledigt] MySQL User erstellen Datenbanken 2 17.02.2005 17:23
mit mysql und php eine datenbank erstellen? Großes Problem PHP Tipps 2004-2 1 16.12.2004 14:53
Erstellen spalten in MySQL tabelle Datenbanken 7 14.11.2004 19:53
[Erledigt] Neuen Benutzer mittels PHP in MYSQL Anlegen PHP-Fortgeschrittene 1 28.10.2004 17:22

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql neuer datensatz, mysql datensatz erstellen, php mysql tabellen editor, php neuen datensatz anlegen, php formular neuen datensatz, datenbankentwurf thema unterthema, wie datensatz erstellen, php datensatz erstellen form text, kann keinen neuen datensatz anlegen mysql, php button neuer datensatz, mysql neuen datensatz anlegen, mysql daten erstellen, schreifisch

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