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

sql einträge über php

phoenix_hgw

Neues Mitglied
moin,

ich hab ein problem mit php und mysql

ich habe vor so eine art virtuelles schwarzes brett zu erzeugen! nun ging es jetzt darum über ein formular einträge in einer sql datenbank zu erstellen!
hier liegt auch das problem .. er übernimmt die einträge aus dem formular nicht in die datenbank! wenn ich über phpmyadmin einträge in die datenbank schreibe .. gibt er sie mir auf meiner seite jedoch korrekt aus! was mache ich falsch? kann mir bitte jemand helfen?

mein skript sieht folgendermaßen aus:

PHP:
<?PHP
        if ($button==" OK ") {
        include("db.php");
        mysql_query("INSERT INTO
        inserate('name','email','telefon','rubrik','art','betreff','beschreibung')VALUES('$name','$email','$telefon','$rubrik','$art','$betreff','$beschreibung')") or die ("Ungültige Anweisung");
        mysql_close();
        ?>
        Die Daten wurden eingetragen<br><br>
        <a href="neu.php"> --> neuer Eintrag <-- </a><br>
        <a href="uebersicht.php"> --> zur Übersicht <-- </a><br>

        <?PHP
        } else { ?>
        <fieldset>
            <legend>Ihr Inserat</legend>
            
            <form method="post" action="neu.php" target="">
        <table>
        <tr>
        <td><label for="name">Vorname, Name: </label></td>
        <td><input name="name" type="text" maxlength="30" size="30"></td>
        </tr>
        <tr>        
        <td><label for="email">E-Mail: </label></td>
        <td><input name="email" type="text" maxlength="30" size="30"></td>
        </tr>
        <tr>
        <td><label for="telefon">Telefon: </label></td>
        <td><input name="telefon" type="text" maxlength="30" size="30"></td>
        </tr>
        <tr>
        <td><label for="rubrik">Rubrik: </label></td>
        <td><form action="select.htm"><p>
            <select name="rubrik" size="4">
            <option>Freizeitgestaltung</option>
            <option>Wohnen</option>
            <option>Multimedia</option>
            <option>Sonstiges</option>
            </select>
        </p></form></td>
        </tr>
        <tr>
        <td><label for="art">Art des Inserats: </label></td>
        <td>
            <input type="radio" name="art" value="Bieten"> Bieten
            <input type="radio" name="art" value="Suche"> Suchen
        </td>
        </tr>
        <tr>
        <td><label for="betreff">Betreff: </label></td>
        <td><input name="betreff" type="text" maxlength="53" size="53"></td>
        </tr>
        <tr>
        <td><label for="beschreibung">Beschreibung: </label></td>
        <td><textarea name="beschreibung" cols="40" rows="6"></textarea></td>
        </tr>
        <tr>
        <td><input type="reset" value="zurücksetzen"></td>
        <td><input type="submit" name="button" value=" OK "></td>
        </table>
        </form>
        </fieldset>
        <?PHP    
        } ?>

Mod-Edit: Code-Tags jinzugefügt - Beim nächsten Mal bitte dran denken (XraYSoLo)
 
Zuletzt bearbeitet von einem Moderator:
Hallo phoenix,

gewöhne Dir bitte das nächste mal an, den Code-Tag (in diesem Fall PHP) zu nutzen, macht die Sache übersichtlicher.

Vermutlich sind die Variablen einfach leer. mit z.B. $_POST['name'] statt $name usw. sollte die Datentabelle gefüllt werden.

Gruß thuemmy
 
oh sorry! das hab ich total vergessen! ich werd nächstes mal dran denken!

hab den vorschlag von thuemmy mal umgesetzt .. geht aber immernoch nich!

fehlermeldung sieht jetzt so aus:
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'

ich verzweifel hier langsam echt! andere ideen vllt?
 
fehlermeldung sieht jetzt so aus:
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'
Jede Wette, dass die nicht so aussieht. Zumindest eine Zeilennummer und einen Dateiname muss er mit ausgeben, damit Du weißt, wo Du in Deinen Code schauen musst, um den Fehler zu finden. Da hast Du möglicherweise einen String nicht wieder geschlossen, also ein Anführungszeichen (") oder SingelQuote (') zu viel oder zu wenig oder rgendwas in der Art.
 
Jede Wette, dass die nicht so aussieht. Zumindest eine Zeilennummer und einen Dateiname muss er mit ausgeben, damit Du weißt, wo Du in Deinen Code schauen musst, um den Fehler zu finden. Da hast Du möglicherweise einen String nicht wieder geschlossen, also ein Anführungszeichen (") oder SingelQuote (') zu viel oder zu wenig oder rgendwas in der Art.


ja na sicher sind zeilennummer und dateiname mitangegeben .. nur brauchten die hier ja net rein ..

problem, wenn ich die anführungszeichen/singlequotes wegnehme .. zeigt er fehler nicht mehr an, trägt aber trotzdem nix in die datenbank ein!
mit anführungszeichen/singlequotes tritt immer wieder dieser error auf ...
 
Wieso brauchen dir hier nicht rein? Damit wir raten dürfen?

Spalten- und Tabellennamen gehören nicht in ' sondern in `
 
Wieso brauchen dir hier nicht rein? Damit wir raten dürfen?

Spalten- und Tabellennamen gehören nicht in ' sondern in `

also der error ist auch hier nach noch:

Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in C:\Documents and Settings\fxw\Desktop\schwarzes brett\neu.php on line 51

hier im skript ist es line 5
 
Da Du anscheinend an der Zeile 5/51 was geändert hast, wäre es doch gut, dass Du hier nochmal Dein Script postest, oder zumindest den Bereich, den es betrifft.

Gruß thuemmy
 
Zeile 5 ist diese:

mysql_query("INSERT INTO inserate('name','email','telefon','rubrik','art','betreff','beschreibung')VALUES('$name','$email','$telefon','$rubrik','$art','$betreff','$beschreibung')") or die ("Ungültige Anweisung");

Da seh ich jetzt keinen Fehler (wenn das okay ist, dass da keine Leerzeichen drin sind, hinter dem Tabellenname und vor und hinter values). Aber vielleicht ist einer in db.php, das vorher included wird. Fehlt da am Ende vielleicht ein Semikolon oder fehlt in der Datei ein "?
 
Davon gehe ich auch aus, dass das die Zeile ist. In meinem ersten Post habe ich ihm aber geraten, die Variablennamen von z.B. $email in $_POST['email'] abzuändern. Deswegen die Bitte den entsprechenden Codeabschnitt nochmal zu posten.

Gruß thuemmy
 
gut also der geänderte bereich sieht nun so aus:

PHP:
        <?PHP
        if ($button==" OK ") {
        include("db.php");
        mysql_query("INSERT INTO
        inserate(`name`,`email`,`telefon`,`rubrik`,`art`,`betreff`,`beschreibung`)VALUES($_POST[`name`],$_POST[`email`],$_POST[`telefon`],$_POST[`rubrik`],$_POST[`art`],$_POST[`betreff`],$_POST[`beschreibung`])") or die ("Ungültige Anweisung");
        mysql_close();
        ?>
und die db.php:

PHP:
 <?PHP
        $dbname="blackboard";
        $dbhost="localhost";
        $dbuser="root";
        $dbpass="";
        mysql_connect($dbhost,$dbuser,$dbpass);
        mysql_select_db($dbname);
        ?>
 
Die Indizes des assoziativen Arrays werden mit einfachen Anführungszeichen eingeschlossen, nicht mit dem Apostroph.

Also so
PHP:
$_POST['name']
// und nicht
$_POST[`name`]
Gruß thuemmy
 
Und nochmal: Strings gehören in einem SQL-Query in einfache Anführungszeichen ' . Tabellen- und Spaltennamen dagegen in Backticks ` .

PHP:
<?php
$sql = "INSERT INTO
               inserate (`name`,`email`,`telefon`,`rubrik`,`art`,`betreff`,`beschreibung`)
         VALUES
               ('" . $_POST['name'] . "','" . $_POST['email'] . "','" . $_POST['telefon'] . "','" . $_POST['rubrik'] . "','" . $_POST['art'] . "','" . $_POST['betreff'] . "','" . $_POST['beschreibung'] . "')
         ";

//Zusätzlich zu "Ungültige Anweisung" solltest du noch mysql_error() ausgeben!
$result = mysql_query($sql) OR die ("Ungültige Anweisung" . mysql_error());
?

Ich persönlich finde diese INSERT INTO - Syntax schlecht! Schau dir hier mal die zweite Variante an. Sie ist viel übersichtlicher!
 
soo danke für eure anteilnahme und hilfe diesbezüglich .. problem wurde gelöst! viel spaß weiterhin ..

kann geclosed werden!!!
 
Zurück
Oben