Eintragen in Datenbank scheitert

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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

    Comment


    • #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

      Comment


      • #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

        Comment


        • #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()

          Comment

          Working...
          X