es werden keine Daten eingefügt in die DB

StefanR

Erfahrenes Mitglied
Hy Leute ich bin im Moment dabei mir ein kleines DB gestützes GB zu schreiben, aber irgendwie werden die Daten die ich in die Formularfelder eingebe nicht in die Tabelle eingetragen was ich nicht verstehe, da für mich der Quellcode eindeutug ist oder sehe ich den Wald vor lauter Bäumen nicht mehr?

Hier mal das Form:
PHP:
<form action="*****.php" method="get">
  <table width="100%" border="0" cellpadding="1" cellspacing="1">
    <tr> 
      <td width="50%"><p>Name:</p></td>
      <td width="50%"> <input name="name" type="text" class="form" tabindex="1" value="Stefan" size="17" maxlength="25"> 
      </td>
    </tr>
    <tr> 
      <td width="50%"><p>E-Mail:</p></td>
      <td width="50%"> <input name="mail" type="text" class="form" tabindex="2" value="*****@pixel4me.de" size="17"> 
      </td>
    </tr>
    <tr> 
      <td width="50%"><p>Website:</p></td>
      <td width="50%"> <input name="website" type="text" class="form" tabindex="3" value="www.pixel4me.de" size="17">
      </td>
    </tr>
    <tr> 
      <td width="50%" valign="top"> <p>Dein Eintrag:</p></td>
      <td width="50%"> <textarea name="eintrag" cols="30" rows="5" wrap="PHYSICAL" class="form" tabindex="4">sdfkagfhghjgsadgfasd</textarea> 
      </td>
    </tr>
    <tr> 
      <td width="50%"> <br> 
        <input name="senden" type="submit" class="form" id="senden" tabindex="5" 
value="abschicken"> 
      </td>
      <td width="50%"> <br> <input tabindex="6" type="reset" class="form"> </td>
    </tr>
  </table>
</form>

Die Methode wird später noch geändert, was aber nicht am Fehler liegen sollte.

So und hier der Part der die Daten in die Tabelle tragen soll:
PHP:
if ($senden) {
		$name=strip_tags($name);
  		$email=strip_tags($email);
  		$website=strip_tags($website);
  		$eintrag=strip_tags($eintrag);

  		//Konvertiere Zeilenumbrüche in HTML-<br>-Umbrüche
  		$eintrag=nl2br($eintrag);
		
		if (strlen($name)<3) {
		//Name falsch
			$error = "&nbsp;&nbsp;&nbsp;Bitte gebe deinen Namen an.<br><br>\n";
		}
		if (strlen($eintrag)<3) {
		//Eintrag falsch
			$error .= "&nbsp;&nbsp;&nbsp;Dein Gästebucheintrag ist leider zu kurz.<br><br>\n";
		}
		if(ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$",$mail)) {
			//Mail korrekt Namen verlinken
			$name = "Name:&nbsp;&nbsp;&nbsp; <a href=mailto:" . $mail . ">" . $name . "</a>\n";
		}
		
		//Es wurde auch eine websiteadresse angegeben - entsprechende Formatierung vornehmen
		if(ereg("^([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$",$website)){
  		if(!ereg("^http:////",$website)){
   		 //http:// fehlt in der Angabe der Adresse - hier ergänzen
   		 $website="http://" . $website;
   		 }
 		 $web_format="<br>Homepage: <a href=" . $website . " target='_new'>" . $website . "</a>";
		}
		if (isset($error)) {
			//min. eine Eingabe ist falsch
			$msg = "<br>Dein Gästebuch eintrag konnte aus folgenden Gründen nicht vorgenommen werden: <br>\n";
			$msg .= "<br><strong>" . $error . "</strong>\n\n";
			$msg .= "<br> Klicke bitte auf <a href=\"javascript:history.back(1)\">zurück</a>.<br><br>\n";
			} 
		else {
			//neuen Gästebuch eintrag vornehmen
		$now=date("Y-m-d H:i:s");
		$guestbook_SQL_insert="INSERT INTO gb (gb_name,gb_website,gb_text,gb_date) VALUES ($name,$web_format,$eintrag,$now)";
			mysql_query($guestbook_SQL_insert);
	
		//Mail an Webmaster
			//$empf = "****@pixlem4.de";
			//$subject = "Neuer Eintrag im GB";
			//$header = "Wrom: FXISHJEXXI
			//body = "$name hat einen neuen Eintrag im GB getätigt.\n";
		}
	}
 
Zuletzt bearbeitet:
Zeichenketten müssen auch in SQL als solche gekennzeichnet werden:
[color="2c2c8c"]
&nbsp;&nbsp;$guestbook_SQL_insert="INSERT INTO gb (gb_name,gb_website,gb_text,gb_date) VALUES ([color="2c8c2c"]`".[/color]$name[color="2c8c2c"]."`[/color],[color="2c8c2c"]`".[/color]$web_format[color="2c8c2c"]."`[/color],[color="2c8c2c"]`".[/color]$eintrag[color="2c8c2c"]."`[/color],[color="2c8c2c"]`".[/color]$now[color="2c8c2c"]."`[/color])";
[/color]


Achja, ich würd dir ausserdem empfehlen den sog. "Vereinigungs-Operator" zu verwenden.
 
Hmm danke,

aber das hat auch nichts gebracht, er trägt immer noch nichts in die Tabelle ein, obwohl das plausibel klinkt, was du angefügt hast. :(
 
Wenn du das vor dein Script setzt sollte es funktionieren.
PHP:
$senden = $_GET['senden'];
$name = $_GET['name'];
$email = $_GET['email'];
$website = $_GET['website'];
$eintrag = $_GET['eintrag'];
if ($senden) {
        $name=strip_tags($name);
          $email=strip_tags($email);
          $website=strip_tags($website);
          $eintrag=strip_tags($eintrag);
...
[...]Seit PHP 4.2.0 wurde register_globals in der php.ini per Default abgeschaltet. Die Option war dafür zuständig, dass ein Parameter an das Script automatisch in eine entsprechend genannte Variable kopiert wurde. Ein Angreifer hat damit jedoch die Möglichkeit, Variablen, die der Programmierer versehentlich uninitialisiert ließ, mit beliebigen Werten vorzubelegen.[...]
Die passenden Links dazu :)
Warum funktionieren meine Formulare nicht?
Verwendung von Register Globals

mfg
roflma0
 
PHP:
$guestbook_SQL_insert="INSERT INTO gb (gb_name,gb_website,gb_text,gb_date) VALUES (`".$name."`,`".$web_format."`,`".$eintrag."`,`".$now."`)";
Was zum... soll das sein? ^^ Da kann man richtig böhse werden und auskennen tut man sich bei dem String verhau dann trotzdem nicht ^^
' <- ist für Zeichen/ketten --> ` das ist für Spalten namen falls der mal reserviert ist!
PHP:
$name       = $_REQUEST['name'];
$web_format = $_REQUEST['web_format'];
$eintrag    = $_REQUEST['eintrag'];
$now        = time();

$guestbook_SQL_insert  = "";
$guestbook_SQL_insert .= "INSERT INTO gb (`gb_name`, `gb_website`, `gb_text`, `gb_date`) ";
$guestbook_SQL_insert .= "VALUES ('$name', '$web_format', '$eintrag', '$now')";
Das ist erstens schön Formatiert und auch dazu Syntaktisch so wie es vorgesehen ist!

Nebenbei je leichter man den Code lesen kann je leichter tut man sich später dann mit dem debugen!
 
Zuletzt bearbeitet:
@SonicBe@m

Es ist aber mitunter gar nicht mal so unklug, auch über die korrekte Schreibweise von Stringverbindungsoperatoren im MySQL Query zu sprechen (was ein Satz).

Dies kann vor allem dann interessant sein, wenn man nicht erst $var = $_REQUEST['var'] machen möchte. Da in die Elementklammern der superglobalen Arrays ebenso ' kommen wie um die Variablen die in die DB eingetragen werden, kommt man um eine solche Schreibeweise
PHP:
$query = "INSERT INTO tabelle (spalte1,spalte2) VALUES ('".$_REQUEST['var1']."','".$_REQUEST['var2']."')";
mysql_query($query);
kaum drum herum.

mfG
Tim
 
Hmm ihr werdet es net glauben, aber es klappt immer noch nicht, kann das auch ein "Idiotenfehler" sein, den ich einfach nur übersehe. Weil ich habe noch ein script, dort werden über die gleiche Art und weise über ein Formular Eingaben in die Datenbank gepackt. Nur hier klappt es irgendwie net.

Falls mal einer Lust hat sich das Script anzuschauen, ob er da was hinbekommt, der kann es sich ja saugen. Ich versuche aber weiter den fehler zu finde, das kann ja net sein. :(

http://www.pixel4me.de/works/gb.zip
 
Zuletzt bearbeitet:
Hi, habe genau das gleiche Problem...

Code:
$insert = "INSERT INTO vendors (L_ID, password, name) VALUES (`".$_POST['user']."`, `".$_POST['pass']."`, `".$_POST['name']."`)";
mysql_query($insert);

Es kommt keine Fehlermeldung aber in die DB wird NICHTS eingetragen...
 
Jo genau das gleich Prob wie bei mir ich weiß aber auch net woran das liegt.

Hast du das Ganze "nur" lokal getestet oder auch auf einem Live Server?
 
Zurück