tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
7
ZUGRIFFE
329
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    KickBoxxer KickBoxxer ist offline Grünschnabel
    Registriert seit
    Jan 2012
    Beiträge
    4
    Hallo zusammen

    Ich probiere mich gerade daran, ein PHP-Script zu schreiben welches folgendes tun soll:

    Durch ein Formular wird ein Eintrag in einer DB erstellt, falls dieser noch nicht vorhanden ist. Ist dieser Vorhanden, soll nur ein Datenfeld übearbeitet werden.

    Das habe ich bis jetzt:
    PHP-Code:

                    
    if($postBeschreibung != "") {
                    if(
    $postMenge !="") {
                    if(
    $postPersonen !="") {
                    if (
    $postDurchschnitt !="")
                    {
                        
    $verbindung mysql_connect ("localhost",
                        
    "root""lk.lk$")
                        or die (
    "keine Verbindung möglich.
                        Benutzername oder Passwort sind falsch"
    );

                        
    mysql_select_db("zettel")
                        or die (
    "Die Datenbank existiert nicht.");
        
                           
    $query "SELECT beschreibung FROM artikel WHERE   beschreibung='$postBeschreibung'";

                        
    $result mysql_query($query);

                        if (
    mysql_num_rows($result))
                        {    
                            
    $query2 "Update `artikel` set `menge` = `$postMenge` WHERE `beschreibung` = `$postBeschreibung` ";
                            echo 
    "Menge wurde geaendert.";
                        
                            
    mysql_query($query2)
                            or die (
    "MySQL-Error: " mysql_error());
                        }
                        
                        else
                        {
                            
                            
    $eintrag "INSERT INTO artikel
                        (beschreibung, menge, personen, durchschnitt)
                        VALUES
                        ('
    $postBeschreibung', '$postMenge', '$postPersonen', '$postDurchschnitt')";
                        
    $eintragen mysql_query($eintrag);
                        }
                                        
                        echo 
    "<p>Eintrag war erfolgreich</p>";
                        exit();
                    }}}} 

    Doch bei mir wird als Fehler angezeigt:
    MySQL-Error: Unknown column 'Brot' in 'where clause'

    Wobei Brot der Variablen $postBeschreibung entspricht

    Kann mir jemand helfen?
     

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Geht direkt mit SQL in MySQL
    Suche mal nach:
    INSERT INTO .... ON DUPLICATE KEY UPDATE ......
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  3. #3
    KickBoxxer KickBoxxer ist offline Grünschnabel
    Registriert seit
    Jan 2012
    Beiträge
    4
    Danke für den Hinweis, ich habe es jetzt so probiert:


    PHP-Code:
    $eintrag "INSERT INTO artikel
    (beschreibung, menge, personen, durchschnitt)
    VALUES
    ('
    $postBeschreibung', '$postMenge', '$postPersonen', '$postDurchschnitt')"
    ON DUPLICATE KEY UPDATE `menge`=$postMenge;

    $eintragen mysql_query($eintrag); 
    Nun wird zwar kein Fehler mehr angezeigt, und der DB eintrag funktioniert auch, aber er macht kein "Update" sondern macht einen neuen Datensatz, warum?
     

  4. #4
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    In deiner Feldliste sehe ich keine ID oder sonstwas. Der KEY ist der PRIMARY KEY der Tabelle. Wenn der schon vorhanden ist, dann gibts ein UPDATE
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  5. #5
    KickBoxxer KickBoxxer ist offline Grünschnabel
    Registriert seit
    Jan 2012
    Beiträge
    4
    Ah, danke..
    Der KEY ist bei mir id, gleichzeit Primary Key, dieser ist auf auto_increment gestellt.
    Wie füge ich dort etwas anderes ein?
    Also falls die Beschreibung schonmal vorhanden ist, dann....?
    Geändert von KickBoxxer (07.01.12 um 21:47 Uhr) Grund: Hinzugefügt
     

  6. #6
    KickBoxxer KickBoxxer ist offline Grünschnabel
    Registriert seit
    Jan 2012
    Beiträge
    4
    Hat sich erledigt, das Problem war, hatte statt ' ` gemacht.
    Wobei ich nicht weiss, wann was kommt...
     

  7. #7
    DirkHo DirkHo ist offline Mitglied Gold
    Registriert seit
    Jul 2003
    Beiträge
    223
    Hi,

    meiner Meinung nach ist das aber nicht der Fehler, sondern das falsche " am Ende der 4.Zeile. Das muss vor den ;.
    PHP-Code:
    $eintrag "INSERT INTO artikel
    (beschreibung, menge, personen, durchschnitt)
    VALUES
    ('
    $postBeschreibung', '$postMenge', '$postPersonen', '$postDurchschnitt')"
    ON DUPLICATE KEY UPDATE `menge`=$postMenge
    Grüße,

    Dirk
     

  8. #8
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Zitat Zitat von KickBoxxer Beitrag anzeigen
    Hat sich erledigt, das Problem war, hatte statt ' ` gemacht.
    Wobei ich nicht weiss, wann was kommt...
    Den Backtick (`) macht man, wenn man die Spalten-, Tabellen- und Datenbank-Namen als solche kennzeichnen will.

    Die Single-Quotes (') - manche sagen auch "einfache Gänsefüsschen" - werden verwendet, um Zeichenketten zu definieren.

    Hier mal ein Beispiel zur Veranschaulichung:

    Code mysql:
    1
    
    INSERT INTO users (`name`, `email`, `passwd`) VALUES ('hansdampf', 'hans@dampf.de', 'super_secret');
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

Ähnliche Themen

  1. PGSQL: Falls kein Eintrag vorhanden was anderes annehmen
    Von hugo1981 im Forum Relationale Datenbanksysteme
    Antworten: 6
    Letzter Beitrag: 05.04.08, 20:43
  2. PGSQL: Falls kein Eintrag vorhanden was anderes annehmen
    Von hugo1981 im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 30.03.08, 23:45
  3. per batch dateien kopieren falls vorhanden
    Von xlanhackerx im Forum Sonstige Sprachen
    Antworten: 1
    Letzter Beitrag: 29.09.07, 11:50
  4. Datei löschen, falls vorhanden
    Von the snake II im Forum C/C++
    Antworten: 6
    Letzter Beitrag: 24.08.05, 15:55
  5. Falls dateiname.php vorhanden....
    Von Templorials im Forum PHP
    Antworten: 6
    Letzter Beitrag: 01.09.04, 18:08