Eintragen in Datenbank scheitert

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

  • Eintragen in Datenbank scheitert

    Liebe PHP-Profis

    Auf die Gefahr hin, dass ich mich Hohn und Spott preisgebe und auf Grundlagenforschung verwiesen werde, poste ich hier ein kleines Script, dass meine Haare grau werden lässt.

    Ich möchte Daten, die ich aus der Tabelle «shopkeeper» hole und per Drop-Down darstelle, in die Tabelle «main» schreiben. Der Eintrag in die Datenbank «main», ganz unten im Script, scheitert immerzu.

    Die Variabeln werden erfolgreich aus der DB «shopkeeper» geholt, das sehe ich an der Ausgabe, die ich vor dem Eintrag in die Datenbank machen lasse.

    Wenn jemand einen Hinweis hätte, was hier krumm gehen könnte, wäre ich sehr dankbar,
    m.


    PHP-Code:

    <?
    $db = mysql_connect("127.0.0.1", "root");
    mysql_select_db("bazaar",$db)or die ("connect fehlgeschlagen");
    $ergebnis = mysql_query("SELECT * FROM shopkeeper ORDER BY Nachname",$db);
    $anzahl_zeilen = mysql_num_rows($ergebnis);
    $beziehung_ergebnis = mysql_query("SELECT * FROM relations",$db);
    $beziehung_anzahl_zeilen = mysql_num_rows($beziehung_ergebnis);
    ?>

    <form name="abfrage_form" method="post">

    <!-- Shopname -->
        <b>Befragter Shop:</b><br>
        <select name="Shop_Nr">
        <option></option>
            <? for ($i=0; $i < $anzahl_zeilen; $i++)
            { $row = mysql_fetch_row($ergebnis);?>
        <option value="<? echo $row[0]; ?>"><? echo "$row[1] $row[2] - $row[0]"; ?></option>
         <? } ?>
        </select>
    <p>    

    <!-- Textil Shop -->

    <?
    $db = mysql_connect("127.0.0.1", "root");
    mysql_select_db("bazaar",$db)or die ("connect fehlgeschlagen");
    $ergebnis = mysql_query("SELECT * FROM shopkeeper ORDER BY Nachname",$db);
    $anzahl_zeilen = mysql_num_rows($ergebnis);
    $beziehung_ergebnis = mysql_query("SELECT * FROM relations",$db);
    $beziehung_anzahl_zeilen = mysql_num_rows($beziehung_ergebnis);
    ?>

    Textil-Shop: 
        <select name="Tex_Nr">
        <option></option>
            <? for ($i=0; $i < $anzahl_zeilen; $i++)
            { $row = mysql_fetch_row($ergebnis);?>
        <option value="<? echo $row[0]; ?>"><? echo "$row[1] $row[2] - $row[0]"; ?></option>
         <? } ?>
        </select>
    Beziehung: 
           <select name="Tex_Rel">
        <option></option>
            <? for ($i=0; $i < $beziehung_anzahl_zeilen; $i++)
            { $row = mysql_fetch_row($beziehung_ergebnis);?>
        <option value="<? echo $row[0]; ?>"><? echo "$row[1]"; ?></option>
         <? } ?>
        </select>
    <p>


    <input name="submit" type="submit" value="In Datenbank eintragen">
    </form>

    <?

    if(isset($_POST["submit"]))  $submit = $_POST["submit"]; else $submit = "";
    if ($submit) 
        
        {

        $db = mysql_connect("127.0.0.1", "root");
        mysql_select_db("bazaar",$db)or die ("connect fehlgeschlagen"); 

      
        if(isset($_POST["Shop_Nr"]))  $Shop_Nr = $_POST["Shop_Nr"]; else $Shop_Nr = "";
        if(isset($_POST["Tex_Nr"]))  $Tex_Nr = $_POST["Tex_Nr"]; else $Tex_Nr = "";
        if(isset($_POST["Tex_Rel"]))  $Tex_Rel = $_POST["Tex_Rel"]; else $Tex_Rel = "";
      
        echo "<p>";
            echo "$Shop_Nr $Tex_Nr $Tex_Rel";
        echo "<p>";
            
        $eintrag = "INSERT INTO main (Shop_Nr,Tex_Nr,Tex_Rel) VALUES ('$Shop_Nr','$Tex_Nr','$Tex_Rel$')";


          $eintragen = mysql_query($eintrag);
          if ($eintragen == FALSE)
            {
            die("Datenschreiben gescheitert");
            }
            else
            {
            printf("Die Daten wurde in die DB eingetragen");
            }
         
        }

    ?>

  • #2
    was spricht mysql_error() ?
    mfG
    Corpse

    www.fh-hagenberg.at

    Kommentar


    • #3
      anstatt
      PHP-Code:
      $eintrag "INSERT INTO main (Shop_Nr,Tex_Nr,Tex_Rel) VALUES ('$Shop_Nr','$Tex_Nr','$Tex_Rel$')"
      PHP-Code:
      $eintrag "INSERT INTO main (Shop_Nr,Tex_Nr,Tex_Rel) VALUES ('$Shop_Nr','$Tex_Nr','$Tex_Rel')"
      (Ein Dollarzeichen zu viel am Ende)
      [Test] MySQL cli Emulator

      Kommentar


      • #4
        ganz ehrlich hab ich deinen code nur mal eben überflogen, aber mach mal mysql_error(), das sagt dir in der regel schon was los ist.

        Und denn ist hier nen $ zuviel
        PHP-Code:
        $eintrag "INSERT INTO main (Shop_Nr,Tex_Nr,Tex_Rel) VALUES ('$Shop_Nr','$Tex_Nr','$Tex_Rel$')" 
        ..und connecten brauchst du die Datenbank im übrigen auch nicht ständig neu

        Aber wie gesagt. Schau ersteinmal was mysql_error() sagt bevor du Hohn und Spott ernten wirst

        Kommentar


        • #5
          Jungs, es ist mir so peinlich...



          Ich habe
          PHP-Code:
          echo mysql_errno() . ": " mysql_error() . "\n"
          gemacht, und mir wurde gesagt:

          1062: Duplicate entry '16' for key 1
          Ich hatte die Tabelle vorher schon gefüllt... Mann, mann, mann.

          Aber nun kenne ich mysql_error()

          Kommentar

          Lädt...
          X