• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Datenspeicherung auf mysql schlägt fehl: Keine Fehlermeldung

sofarocker

Neues Mitglied
Hallo allezusammen,
ich bin totaler dummy und versuche mich grade mit php/mysql. Mein Problem ist, das ich keine Daten in die Tabelle eintragen kann. hierzu hatte ich mir ein Formular gebaut, das leider nicht funktioniert. Es werden keine Daten in die Tabelle übernommen aber auch keine Fehlermeldung rausgegeben (trotz Verwendung von mysql_error() )
Über hilfreiche Tipps von Euch wäre ich euch dankbar.

hier mein Code:
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">


<html>
<head>
<title> Testasuwertung </title>
</head>

<body>
<?php

$host = "localhost";
$user = "root";
$db_name = "iag_hb";

$connection = mysql_connect ($host,$user);
if (!$connection)
{
echo "Verbindung auf Server <b>".$host." nicht moeglich!</b>Fehler:".mysql_error();
}else{
echo "Erfolgreich mit dem Server <b>".$host."</b> verbunden!";

    $selecting = mysql_select_db($db_name);
    if (!$selecting){
    
    echo "Datenbank <b>".$db_name."</b> konnte nicht ausgwaehlt werden!<br />Fehler:".mysql_error();    
}else{
echo "Datenbank <b>".$db_name."</b> erfolgreich ausgwaehlt!";
}     
}

//Formular auswerten
if (isset($_POST['send'])){

    if(isset($_POST['Name'])){
    $name = $_POST['label'];
    if(isset($_POST['Alter'])){
    $alter = $_POST['profilmd'];
    
    
    $mysql_befehl = "INSERT INTO profil('label','profilmd') VALUES ('$name','$alter')";
    $mysql_input = mysql_query($mysql_befehl);
    
    if(!$mysql_input) {
    echo $name." und ".$alter." erfolgreich eingetragen!"; 
    

    }else{
    echo "Keine Daten aufgenommen! Fehler:".mysql_error();
    }
    

}
}
}


echo "
<form method ='POST' action='index.php'>
<p>Name: <input type='text' label='name'>   </p>
<p>Alter: <input type='text' profilmd='text'> </p>
<p><input type='submit' value='Absenden' name ='send'></p>

 </form>

";



//Datensaetze ausgeben
$content = "SELECT label,profilmd FROM profil";
$mysql_content = mysql_query($content);

while ($into = mysql_fetch_array($mysql_content)){
echo "<p><b>".$into['label']." </b>:<br />".$into['profilmd']."</p>";

}
?>
</body>
</html>
 
Ändere mal

PHP:
if(!$mysql_input) {

in

PHP:
if($mysql_input!=false) {

Außerdem würde ich dir raten mysql_real_escape_string() zur Maskierung von Variablen vor dem Speicherung in der MySQL-DB zu verwenden. So wie es jetzt da steht wäre das SQL-Statement tatsächlich fehleranfällig.

Und lass dir mit var_dump() auch mal an einigen Stellen die Inhalte von Variablen ausgeben. Klassisches Debugging.
 
Hallo Threadi,
vielen Dank für deine schnelle Antwort. ich habe den Code geändert.

Außerdem würde ich dir raten mysql_real_escape_string() zur Maskierung von Variablen vor dem Speicherung in der MySQL-DB zu verwenden.
ich weiss leider überhaupt nicht, was ich wo machen soll. :-/ sorry

Und lass dir mit var_dump() auch mal an einigen Stellen die Inhalte von Variablen ausgeben. Klassisches Debugging.
Damit kann ich auch leider nichts anfangen....

Könntest Du es mir bitte erklären oder an meinem Code zeigen?
 
PHP:
//Formular auswerten
if (isset($_POST['send']))
{
    if(isset($_POST['Name']))
    {
       $name = mysql_real_escape_string($_POST['label']);
       if(isset($_POST['Alter']))
       {
         $alter = mysql_real_escape_string($_POST['profilmd']);
 
         $mysql_befehl = "INSERT INTO profil(`label`,`profilmd`) VALUES ('$name','$alter')";
         
         $mysql_input = mysql_query($mysql_befehl);
    
         if(!$mysql_input) 
         {
            echo $name." und ".$alter." erfolgreich eingetragen!"; 
         }
         else
         {
            echo "Keine Daten aufgenommen! Fehler:".mysql_error();
         }
      }
      else
         echo '$_POST[Alter] fehlt';
    }
    else
      echo '$_POST[Name] fehlt';
}
 
Beispiele für mysql_real_escape_string() findest Du im Manual:
PHP: mysql_real_escape_string - Manual
Vor allem Beispiel #1 ist für dich interessant.

var_dump() wird auch im Manual detailliert beschrieben:
PHP: var_dump - Manual
In Bezug auf deinen Code könntest Du z.B. folgendermaßen prüfen, ob das MySQL-Result überhaupt korrekt gesetzt ist (also nicht Boolean false):
PHP:
$mysql_befehl = "INSERT INTO profil('label','profilmd') VALUES ('$name','$alter')";
$mysql_input = mysql_query($mysql_befehl);
var_dump($mysql_input);
 
Vielen Dank an Euch.

@bdt600: Habe mein Code geändert. nun kommt (wenigstens das) eine Fehlermeldung:
HTML:
$_POST[Name] fehlt
. Der Name fehlt doch aber nicht. Den trage ich im Formular als Text ein???

@threadi: Danke für die Links. Die ziehe ich mir mal rein.
Ich habe deinen Code an die entsprechende Stelle eingetragen. Leider bekam überhaupt keine Rückmeldung von mysql?
 
Hallo, danke an Euch.
ich hatte zwar schon was geschrieben, aber es nicht mehr da???

Ich bekomme nun folgende Fehlermeldung:
PHP:
   echo '$_POST[Name] fehlt';
Kann aber damit nichts anfangen, da ich doch einen Namen in das Formular eingebe...?

 
Nun verstehe ich nichts mehr.
Also
PHP:
//Formular auswerten

if (isset($_POST['send'])) //Wenn ich Senden drücke
{
    if(isset($_POST['Name'])) //und im Namenfeld etwas steht
    {
       $name = mysql_real_escape_string($_POST['label']); //dann trage es in die Spalte label ein
      

      if(isset($_POST['Alter'])) //wenn hier was steht
       {
         $alter = mysql_real_escape_string($_POST['profilmd']); //dann trage es in die Spalte "profilmd" ein
 
         $mysql_befehl = "INSERT INTO profil('label','profilmd') VALUES ('$name','$alter')";
$mysql_input = mysql_query($mysql_befehl);


    var_dump($mysql_input);  
         
         $mysql_input = mysql_query($mysql_befehl);
    
         if(!$mysql_input) 
         {
            echo $name." und ".$alter." erfolgreich eingetragen!"; 
         }
         else
         {
            echo "Keine Daten aufgenommen! Fehler:".mysql_error();
         }
      }
      else
         echo '$_POST[Alter] fehlt';
    }
    else
      echo '$_POST[Name] fehlt';
}


Sorry, aber ich weiss nun wirklich nicht wo ich einen Fehler mache und wo nicht. Ich habe mal die entsprechenden Stellen oben im Code kommentiert. Ich verstehe es im moment gar nicht mehr.....
 
Gebe deinen Eingabefelder Namen und dann schreibst du mal ins Script vor
PHP:
if(isset($_POST['Name']))
diese Zeile
PHP:
print_r($_POST);
Dann wird dir vielleicht klar, welche Daten du geliefert bekommst.
 
Habe ich gemacht... Es werden keinerlei Daten in die Tabelle übernommen :sad::sad:


Das kann doch nicht so schwer sein.,,. stehe ich so auf dem Schlauch.-!
 
Folgendes habe ich eingegeben:

PHP:
//Formular auswerten
if (isset($_POST['send'])){
print_r($_POST); 
if (isset($_POST['name'])){
print_r($_POST); 
    $label = $_POST['name'];
if (isset ($_POST['text'])){
print_r($_POST); 
    $profilmd = $_POST['text'];
    
//Name und Alter in Tabelle profil eintragen
$mysql_befehl = "INSERT INTO profil(label,profilmd) VALUES ('$label,$profilmd')";

$mysql_input = mysql_query(mysql_befehl);

if ($mysql_input ==true) {
    echo $label." und ".$profilmd." erfolgreich eingetragen!";
    
    
}
}
}
}
echo "
<form method ='POST' action='index.php'>
<p>Name: <input type='text' label='name'>   </p>
<p>Alter: <input type='text' profilmd='text'> </p>
<p><input type='submit' value='Absenden' name ='send'></p>

 </form>

Dann kommt Folgende Meldung: Array ( [send] => Absenden )
 
Danke für den LinK.

PHP:
//Formular auswerten
if (isset($_POST['send'])){
 
if (isset($_POST['name'])){
 
    $label = $_POST['name'];
if (isset ($_POST['text'])){

    $profilmd = $_POST['text'];

//Name und Alter in Tabelle profil eintragen
$mysql_befehl = "INSERT INTO profil(label,profilmd) VALUES ('$label,$profilmd')";

$mysql_input = mysql_query($mysql_befehl);

if ($mysql_input ==true) {
    echo $label." und ".$profilmd." erfolgreich eingetragen!";
    
    
}
}
}
}
echo "
<form method ='POST' action='index.php'>
<p>Name: <input type='text' name='name'>   </p> /Hier geändert
<p>Alter: <input type='text' name='text'> </p> //Hier geändert
<p><input type='submit' value='Absenden' name ='send'></p>

 </form>
 
Dir wurde etwas von mysql_real_escape_string erzählt, ich habe dir ein Beispiel dazu gegeben, und was machst du? Du ignorierst das einfach mal!? Das heißt für mich: ich bin hier raus!
 
Zurück
Oben