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

Formular mit Übertragung auf Datenbank

Status
Für weitere Antworten geschlossen.

bettie

Neues Mitglied
Hallo,

ich bin neu hier und habe gleich ein Problem. Ich habe aus einem Buch über MySQL einen Code abgetippt und will ihn für meine Seite benutzten, aber wenn ich mir das Formular im Web ansehen will, erscheint gar nichts.
Brauche Hilfe, dankeschön!!

PHP:
<html>
<head></head>
<body>
<?php 
if($_POST['flag']==1)
{
$_POST['name']=trim($_POST['name']);
$_POST['email']=trim($_POST['email']);
$_POST['farbe']=trim($_POST['farbe']);
$_POST['geburt']=trim($_POST['geburt']);
$_POST['name']=strip_tags($_POST['name']);
$_POST['email']=strip_tags($_POST['email']);
$_POST['farbe']=strip_tags($_POST['farbe']);
$_POST['geburt']=strip_tags($_POST['geburt']);
if(!$_POST['name']){$fehler.="Bitte gib einen Namen an! <br>";}
if(!$_POST['email']){$fehler.="Bitte gib eine eMail an! <br>";}
if(!$_POST['geburt']){$fehler.="Bitte gib dein Geburtsdatum an! <br>";}
if($fehler)
{
$meldung=".fehler.";
unset($_POST['flag']);
}
else
{
$tab="schueler";
$sql="INSERT INTO $tab (name, email, farbe, geburt)
values ('".$_POST['name']."', '".$_POST['email']."', '".$_POST['farbe']."', '".$_POST['geburt']."', now())";}
include("mysql.inc");
if(!$_POST['flag'])
{
 ?>
<form action="<?php  echo $_SERVER['PHP_SELF']?>" method="post">
<input type="hidden" name="flag" value="1">
<table border="1">
    <tr>
        <td width="483">
            <p>Name</p>
        </td>
        <td width="483">
                <p><input value="<?php echo $_POST['name']; ?>" type="text" name="name"></p>
        </td>
    </tr>
    <tr>
        <td width="483">
            <p>eMail</p>
        </td>
        <td width="483">
                <p><input value="<?php echo $_POST['email']; ?>" type="text" name="email"></p>
        </td>
    </tr>
    <tr>
        <td width="483">
            <p>Lieblingsfarbe</p>
        </td>
        <td width="483">
                <p><select value="<?php echo $_POST['farbe']; ?>" name="farbe" size="1">
                <option>Blau</option>
                <option>Rosa</option>
                <option>Rot</option>
                <option>Gelb</option>
                <option>Grün</option>
                <option>Weiß</option>
                <option>Schwarz</option>
                </select></p>
        </td>
    </tr>
    <tr>
        <td width="483">
            <p>Geburtstag</p>
        </td>
        <td width="483">
                <p><input type="text" name="geburt" value="<?php echo $_POST['geburt']; ?>" size="11"></p>
        </td>
    </tr>
</table>
    <p><input type="submit" value="SENDEN">
            </form>
     <?php 
}
mysql_close($dz); }?>
     </body></html>
 
Werbung:
so wie das aussieht, musst du zuerst mal ein formular erstellen, wo du die daten eingeben kasst, bevor die überhaupt angezeigt werden können.

Nils aka XraYSoLo
 
Werbung:
SQL-tabelle erstellt?
zugriff auf den DB-server?

und der submit-button sollte, so wie das aussieht, "flag" heißen...

irgendwie ergibt das da oben für mich keinen sinn. mach' das lieber getrennt, eine seite konsequent nur formular, die andere nur auswertung mit code.

Nils aka XraYSoLo
 
Ja, alles erstellt.
Okay, werde es getrennt versuchen, so stand es halt nur in einem Buch :)
Danke, melde mich, wenn ich wieder ein Problem habe oder wenn's dennoch nicht klappt x)

Okay, jetzt habe ich wieder ein Problem.

Also, bei mir wollen die Daten nicht auf die Datenbank übertragen werden.

Hier das Formular:

PHP:
<html>
<head></head>
<body>
<form action="senden2.php" method="post">
<input type="hidden" name="flag" value="1">
<table border="1">
    <tr>
        <td width="483">
            <p>Name</p>
        </td>
        <td width="483">
                <p><input value="<?php echo $_POST['name']; ?>" type="text" name="name"></p>
        </td>
    </tr>
    <tr>
        <td width="483">
            <p>eMail</p>
        </td>
        <td width="483">
                <p><input value="<?php echo $_POST['email']; ?>" type="text" name="email"></p>
        </td>
    </tr>
    <tr>
        <td width="483">
            <p>Lieblingsfarbe</p>
        </td>
        <td width="483">
                <p><select value="<?php echo $_POST['farbe']; ?>" name="farbe" size="1">
                <option>Blau</option>
                <option>Rosa</option>
                <option>Rot</option>
                <option>Gelb</option>
                <option>Grün</option>
                <option>Weiß</option>
                <option>Schwarz</option>
                </select></p>
        </td>
    </tr>
    <tr>
        <td width="483">
            <p>Geburtstag</p>
        </td>
        <td width="483">
                <p><input type="text" name="geburt" value="<?php echo $_POST['geburt']; ?>" size="11"></p>
        </td>
    </tr>
</table>
    <p><input type="submit" name="flag" value="SENDEN">
            </form>
     </body></html>

und hier senden2.php

PHP:
<?php 
if($_POST['flag']==1)
{
$_POST['name']=trim($_POST['name']);
$_POST['email']=trim($_POST['email']);
$_POST['farbe']=trim($_POST['farbe']);
$_POST['geburt']=trim($_POST['geburt']);
$_POST['name']=strip_tags($_POST['name']);
$_POST['email']=strip_tags($_POST['email']);
$_POST['farbe']=strip_tags($_POST['farbe']);
$_POST['geburt']=strip_tags($_POST['geburt']);
if(!$_POST['name']){$fehler.="Bitte gib einen Namen an! <br>";}
if(!$_POST['email']){$fehler.="Bitte gib eine eMail an! <br>";}
if(!$_POST['geburt']){$fehler.="Bitte gib dein Geburtsdatum an! <br>";}
if($fehler)
{
$meldung=".fehler.";
unset($_POST['flag']);
}
else
{
$tab="schueler";
$sql="INSERT INTO $tab (name, email, farbe, geburt)
values ('".$_POST['name']."', '".$_POST['email']."', '".$_POST['farbe']."', '".$_POST['geburt']."', now())";}
include("mysql.inc");
if(!$_POST['flag'])
mysql_close($dz); }
?>
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
Überhauptnichts!
Es wird weitergeleitet, wenn man auf das Formular klickt, aber dann erscheint nur eine weiße Seite und es wurde nichts auf die Datenbank übertragen.
 
mach mal nachdem du dein SQL-Erstellt hast eine Ausgabe der Variable.

Code:
echo $sql;

Diesen fügst du dann mal im phpmyadmin ein, und kannst dann kontrollieren ob die Syntax korrekt ist.
 
Ausgeben kann es ja, also habe ich Verbindung. Das klappt, aber ich kann nichts "rübertransportieren". Habe ich vielleicht irgendetwas im Code falsch gemacht?
 
Werbung:
1) Prüfen, ob dein mysql_connect() und mysql_use_db() richtig sind.
2) Syntax von deinem SQL-Query prüfen. Dafür gibst du ein Beispiel ein, und lässt dir den von deinem PHP-Skript gebauten Statement ausgeben.
3) Das Statement im PhpMyAdmin testen
4) Wenn das Statement funktioniert, ist die Datenbank Verbindung nicht richtig. Wenn das Statement nicht funktioniert, reparieren ;)
 
o_O
Du musst den auch ausführen im PHP-Code ^^

Code:
...
$tab="schueler";
$sql="INSERT INTO $tab (name, email, farbe, geburt)
values ('".$_POST['name']."', '".$_POST['email']."', '".$_POST['farbe']."', '".$_POST['geburt']."', now())";
[b]mysql_query($sql);[/b] }
include("mysql.inc");
if(!$_POST['flag'])
mysql_close($dz); }
 
Werbung:
Also, ich habe meinen Code jetzt etwas abgeändert.
Nun sieht er so aus:

PHP:
<?php
if($_POST['flag']==1)
{
$_POST['name']=trim($_POST['name']);
$_POST['email']=trim($_POST['email']);
$_POST['farbe']=trim($_POST['farbe']);
$_POST['geburt']=trim($_POST['geburt']);
$_POST['name']=strip_tags($_POST['name']);
$_POST['email']=strip_tags($_POST['email']);
$_POST['farbe']=strip_tags($_POST['farbe']);
$_POST['geburt']=strip_tags($_POST['geburt']);
$_POST['name']=htmlentities($_POST['name']);
$_POST['email']=htmlentities($_POST['email']);
$_POST['farbe']=htmlentities($_POST['farbe']);
$_POST['geburt']=htmlentities($_POST['geburt']);
if(!$_POST['name']){$fehler="Bitte gib einen namen ein.<br>";}
if(!$_POST['email']){$fehler="Bitte gib eine eMail ein.<br>";}
if(!$_POST['geburt']){$fehler="Bitte gib dein Geburtsdatum ein.<br>";}
if($fehler)
{
$meldung=".$fehler.";
unset($_POST['flag']);
}
else
{
$link = mysql_connect("XXX", "XXX", "XXX");
mysql_select_db("XXX", $link);
$tabellenname="schueler";
$sql="INSERT INTO $tabellenname (name, email, farbe, geburt) values ( '".mysql_real_escape_string($_POST['name'], $link)."', '".mysql_real_escape_string($_POST['email'], $link)."', '".mysql_real_escape_string($_POST['farbe'], $link)."', '".mysql_real_escape_string($_POST['geburt'], $link)."', now() )";
mysql_query($sql, $link) 
 or die(mysql_error().'<hr />'.'INSERT INTO schueler (name, email, farbe, geburt) values ( '.mysql_real_escape_string($_POST['name'], $link).', '.mysql_real_escape_string($_POST['email'], $link).', '.mysql_real_escape_string($_POST['farbe'], $link).', '.mysql_real_escape_string($_POST['geburt'], $link).', now()'.'<hr />');
$meldung="Okay!";

}
echo $meldung;
}
if(!$_POST['flag'])
{
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="hidden" name="flag" value="1">
        <table border="1" width="290" align="center">
            <tr>
                <td width="130">
                    <p align="center">name</p>
                </td>
                <td width="144">
                    <p align="center"><input type="text" value="<?php echo $_POST['name']; ?>" name="name">&nbsp;</p>
                </td>
            </tr>
            <tr>
                <td width="130">
                    <p align="center">eMail</p>
                </td>
                <td width="144">
                    <p align="center"><input type="text" name="email" value="<?php echo $_POST['email']; ?>">&nbsp;</p>
                </td>
            </tr>
            <tr>
                <td width="130">
                    <p align="center">Lieblingsfarbe</p>
                </td>
                <td width="144">
                <p><select value="<?php echo $_POST['farbe']; ?>" name="farbe" size="1">
                <option>Blau</option>
                <option>Rosa</option>
                <option>Rot</option>
                <option>Gelb</option>
                <option>Grün</option>
                <option>Weiß</option>
                <option>Schwarz</option>
                </select></p>
                </td>
            </tr>
            <tr>
                <td width="130">
                    <p align="center">Geburtsdatum</p>
                </td>
                <td width="144">
                    <p align="center"><input type="text" name="geburt" value="<?php echo $_POST['geburt']; ?>"></p>
                </td>
            </tr>
        </table>
        <p align="center">
        <input type="submit" name="senden" value="SENDEN">&nbsp;</p>
    </form>
<?php
}
?>

Und als Fehlermeldung kommt: "Column count doesn't match value count at row 1"
 
dann passt was beim eintragen nicht. spalte zu viel/ zu wenig, eintrag zu viel/zu wenig, eines von beiden.

Nils aka XraYSoLo
 
Seltsam o_O
Ich habe alle Spalten, die ich hatte in den Code eingefügt und in der Datenbank habe ich auch nur "ID (soll ja automatisch ordnen), name, email, farbe, geburt".
 
Werbung:
PHP:
$sql="
INSERT INTO 
     $tabellenname (
             name,                                                       
             email,                                                  
             farbe,                                                        
             geburt                                                        
     ) values ( 
             '".mysql_real_escape_string($_POST['name'], $link)."',
             '".mysql_real_escape_string($_POST['email'], $link)."', 
             '".mysql_real_escape_string($_POST['farbe'], $link)."', 
             '".mysql_real_escape_string($_POST['geburt'], $link)."', 
             ".now()." 
)";

Zähl mal jetzt nach, es müsste dir eigentlich auffallen
 
Zuletzt bearbeitet von einem Moderator:
Schrieb an der 1. Linie ein PHP Code:
PHP:
<?php
 error_reporting(E_ALL);
?>

So würde es dir alle Fehler anzeigen. Hab das in deinem Code nicht gesehen -.-
Kann sein, dass was an dem PHP Code flasch ist und net in der DB. Hatte auch mal so'n Fall.


MfG, matibaski
 
Werbung:
Sicher ist etwas am Code falsch - nur was?

Es erscheint immer und immer wieder diese Meldung:
Column count doesn't match value count at row 1

Aber ich habe doch immer die gleiche Anzahl genommen.
Mann, ich versteh' grad' gar nichts @_@...
 
PHP:
$sql = "INSERT INTO
     $tabellenname (
             name,                                                       
             email,                                                  
             farbe,                                                        
             geburt                                                        
     ) values (
             '".mysql_real_escape_string($_POST['name'], $link)."',
             '".mysql_real_escape_string($_POST['email'], $link)."',
             '".mysql_real_escape_string($_POST['farbe'], $link)."',
             '".mysql_real_escape_string($_POST['geburt'], $link)."',
             ".now()."
)";
Zähl nochmal nach!
Du versuchst 5 Werte in 4 Spalten einzutragen, das kann nicht funktionieren!
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben