MySql -> UNIQUE? und anderes.

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • MySql -> UNIQUE? und anderes.

    Hi,

    Ich muss euch nochmal bemühen:

    Ich speichere in die Tabelle drugs_drogen diverse Drogeninfos aus einem Formular. Danach verwende ich die eingegebenen Daten $name und $synonyme (array) um sie in drugs_lexikon zu speichern, und zwar ins Feld "name" (hier können auch Synonyme rein; das Feld ist UNIQUE) und "droge" (hier kommt die ID rein)

    Problem: $name wird immer gespeichert. Falls das Wort schon vorhanden ist, spuckt mein Script zwar eine Fehlermeldung aus, trotzdem wird es gespeichert.
    Synonyme werden grundsätzlich nicht gespeichert.

    Ich hoffe ich war halbwegs verständlich. Hier der Code:
    PHP-Code:
        // Name: ($name)
        
    echo "<h3>Eintrag in Lexikon:</h3>";
        if (
    $eintrag mysql_query("INSERT INTO drugs_lexikon (name,droge) 
                       VALUES ('
    $name','$id')")) {
            echo 
    "<b>".$name."</b> gespeichert<br />";
        } else {
            echo 
    "<font color=\"red\"><b>".$name."</b> konnte nicht gespeichert werden - scheinbar schon vorhanden.</font><br />";
        }
        
    // Synonyme ($synonyme_array);
        
    $synonyme_array explode ("\n",$synonyme);
        foreach (
    $synonyme_array as $synonym_aktuell) {
            
    $synonym_aktuell trim($synonym_aktuell);
            if (
    $synonym_aktuell != "") {
                if (
    $eintrag mysql_query("INSERT INTO drugs_lexikon (name,droge) 
                           VALUES ('
    $synonym_aktuell','$id')")) {
                    echo 
    "Synonym gespeichert: <b>".$synonym_aktuell."</b><br />";
                } else {
                    echo 
    "<font color=\"red\"><b>".$synonym_aktuell."</b> konnte nicht gespeichert werden</font><br />";
                }
            }
        } 
    Gruß,
    syco23
    Zuletzt geändert von syco23; 30.10.2005, 18:50.
    [COLOR=darkblue].: 1+1=23 :.[/COLOR]

  • #2
    Welcher Art ist das Feld ID?
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      int(4)
      [COLOR=darkblue].: 1+1=23 :.[/COLOR]

      Kommentar


      • #4
        evt auch unique oder primary?
        Beantworte nie Threads mit mehr als 15 followups...
        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

        Kommentar


        • #5
          Ja, Primary und autoincrement
          [COLOR=darkblue].: 1+1=23 :.[/COLOR]

          Kommentar


          • #6
            na dann is doch klar Du versuchst zweimal einen insert mit der gleichen $id
            Beantworte nie Threads mit mehr als 15 followups...
            Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

            Kommentar


            • #7
              Aber ich speichere doch den Wert $id ins Feld 'droge', nicht ins Feld 'id' - alles klar?
              [COLOR=darkblue].: 1+1=23 :.[/COLOR]

              Kommentar


              • #8
                und was is das Feld droge?
                Beantworte nie Threads mit mehr als 15 followups...
                Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                Kommentar


                • #9
                  CREATE TABLE drugs_lexikon (
                  id int(4) DEFAULT '0' NOT NULL auto_increment,
                  name varchar(255),
                  droge int(4),
                  sonstiges int(4),
                  inhalt text,
                  PRIMARY KEY (id)
                  );
                  $id ist auch ein int-Wert:
                  PHP-Code:
                  $id mysql_insert_id(); 
                  [COLOR=darkblue].: 1+1=23 :.[/COLOR]

                  Kommentar


                  • #10
                    also in deiner Tabelle steht nichts von unique bei name
                    und evt solltest Du mal Dein array mit den synonymen ausgeben lassen sicher dass das gefüllt ist?
                    print_r() hilft beim debuggen,
                    mysql_error() übrigens auch
                    Beantworte nie Threads mit mehr als 15 followups...
                    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                    Kommentar

                    Lädt...
                    X