Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] 2 Tabellen mit selber Insert ID

Einklappen

Neue Werbung 2019

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

  • [Erledigt] 2 Tabellen mit selber Insert ID

    Hi Leute,

    ich hoffe ich habe keinen bereits bestehenden Thread mit diesem Thema übersehen. Gesucht habe ich jedenfalls. Ich plage mich seit Tagen mit einem Problem herum und habe zwar eine Lösung, die mir allerdings nicht gefällt

    Also zu meinem Problem...

    Ich erstelle momentan eine Seite, wo man sich online regestrieren lassen kann. Ich habe hierfür 2 Tabellen. Eine heißt "register_member" mit den Stammdaten und eine Tabelle "register_responsible" mit weiteren Eingaben.
    Ich habe eine Datei, wo ich die SQL Strings definiert habe, damit ich sie bei einer Struckturänderung der Tabelle nicht in jeder Datei ändern muss. Dies sieht so aus...

    sql.inc
    Code:
    <?
    
    //-------------------------------------------- Tabellennamen
    $table_member		= "member";
    $table_responsible  = "register_responsible";
    
    
    //-------------------------------------------- MYSQL Strings
    $sql_member_insert = "insert $table_member ";
    $sql_member_insert .= "(id, name, first_name, street, zip_code, place, country, email, username, password, timestamp, active)";
    $sql_member_insert .= " values ";
    $sql_member_insert .= "('', '$name', '$first_name', '$street', '$zip_code', '$place', '$country', '$email', '$username', '$password', '', '')";
    
    $sql_responsible_insert = "insert $table_responsible ";
    $sql_responsible_insert .= "(id, birthyear, responsible_kind, last_club, experience, other, timestamp)";
    $sql_responsible_insert .= " values ";
    $sql_responsible_insert .= "('$insert_id', '$birthyear', '$responsible_kind', '$last_club', '$experience', '$other', '')";
    
    
    ?>
    diese Datei wird dann mit include_once in die Indexdatei eingefügt. Die Anderen Seiten wirden dann über if Abfragen auch in die Indexdatei implementiert.

    Dann habe ich eine Datei namens register_responible.php hier sieht der Code so aus...

    Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    
    <body><form name="form1" method="post" action="../ama_draft/index.php?site_var=register_send">
    <table width="674" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td width="15"></td>
        <td width="659"><table width="659" border="0" cellspacing="0" cellpadding="0" class="main_text">
          <tr>
            <td></td>
            <td></td>
          </tr>
          <tr>
            <td width="176" class="kategorie">Name:</td>
            <td width="483">
              <input name="name" type="text" size="50">
            </td>
          </tr>
          <tr>
            <td class="kategorie">Vorname:</td>
            <td><input name="first_name" type="text" size="50">
            </td>
          </tr>
          <tr>
            <td class="kategorie">Geburtsjahr:</td>
            <td><select name="birthyear">
    		<option>- - -</option>
            <option>1940</option>
            <option>1941</option>
            <option>1942</option>
            <option>1943</option>
            <option>1944</option>
            <option>1945</option>
            <option>1946</option>
            <option>1947</option>
            <option>1948</option>
            <option>1949</option>
            <option>1950</option>
            <option>1951</option>
            <option>1952</option>
            <option>1953</option>
            <option>1954</option>
            <option>1955</option>
            <option>1956</option>
            <option>1957</option>
            <option>1958</option>
            <option>1959</option>
            <option>1960</option>
            <option>1961</option>
            <option>1962</option>
            <option>1963</option>
            <option>1964</option>
            <option>1965</option>
            <option>1966</option>
            <option>1967</option>
            <option>1968</option>
            <option>1969</option>
            <option>1970</option>
            <option>1971</option>
            <option>1972</option>
            <option>1973</option>
            <option>1974</option>
            <option>1975</option>
            <option>1976</option>
            <option>1977</option>
            <option>1978</option>
            <option>1979</option>
            <option>1980</option>
            <option>1981</option>
            <option>1982</option>
            <option>1983</option>
            <option>1984</option>
            <option>1985</option>
            <option>1986</option>
            <option>1987</option>
            <option>1988</option>
            <option>1989</option>
            <option>1990</option>
            </select></td>
          </tr>
          <tr>
            <td class="kategorie">Stra&szlig;e:</td>
            <td><input name="street" type="text" size="50">
            </td>
          </tr>
          <tr>
            <td class="kategorie">PLZ:</td>
            <td><input name="zip_code" type="text" size="50">
            </td>
          </tr>
          <tr>
            <td class="kategorie">Ort:</td>
            <td><input name="place" type="text" size="50">
            </td>
          </tr>
          <tr>
            <td class="kategorie">Land:</td>
            <td><select name="country">
                <option>- - -</option>
                <option>Deutschland</option>
                <option>&Ouml;sterreich</option>
                <option>Schweiz</option>
              </select>
            </td>
          </tr>
          <tr>
            <td class="kategorie">eMail:</td>
            <td><input name="email" type="text" size="50">
            </td>
          </tr>
          <tr>
            <td></td>
            <td></td>
          </tr>
          <tr>
            <td colspan="2">[img]../ama_draft/images/line.gif[/img]</td>
            </tr>
          <tr>
            <td></td>
            <td></td>
          </tr>
          <tr>
            <td class="kategorie">Posten als:</td>
            <td><select name="responsible_kind">
                <option>- - -</option>
                <option>Physiotherapoit</option>
                <option>Sonstiges</option>
              </select>
            </td>
          </tr>
          <tr>
            <td class="kategorie">letzter od. aktueller Verein:</td>
            <td><input name="last_club" type="text" size="50">
            </td>
          </tr>
          <tr>
            <td valign="top" class="kategorie">Erfahrungen als Betreuer:</td>
            <td><textarea name="experience" cols="38" id="experiences"></textarea></td>
          </tr>
          <tr>
            <td valign="top" class="kategorie">Sonstiges:</td>
            <td><textarea name="other" cols="38"></textarea>
            </td>
          </tr>
          <tr>
            <td></td>
            <td></td>
          </tr>
          <tr>
            <td colspan="2">[img]../ama_draft/images/line.gif[/img]</td>
            </tr>
          <tr>
            <td></td>
            <td></td>
          </tr>
          <tr>
            <td class="kategorie">Username:</td>
            <td><input type="text" name="username">
            </td>
          </tr>
          <tr>
            <td class="kategorie">Passwort:</td>
            <td><input type="password" name="password">
            </td>
          </tr>
          <tr>
            <td></td>
            <td></td>
          </tr>
          <tr>
            <td></td>
            <td><input type="submit" name="register_responsible" id="register_responsible" value="Speichern">
            </td>
          </tr>
          <tr>
            <td></td>
            <td></td>
          </tr>
        </table></td>
      </tr>
    </table>
    </form>
    </body>
    </html>



    Mit klicken auf den Submit Button wird die register_send.php aufgerufen. Hier entsteht nun das Problem. Ich möchte das er mir in die Tabelle "register_responsible" die Insert-ID von "register_member" als ID einträgt, damit ich weiß das diese zwei Datensätze zusammengehören.
    Es funktioniert bisher nur, wenn ich den SQL String direkt in die "register_send.php" eintrage. Dies ist aber die Lösung die mir (wie oben gesagt nicht so gefällt). Sobald ich nur die Variable des Strings aus "sql.inc" aufrufe, trägt er mir die ID nicht ein.
    Das ID Feld in der Tabelle "register_resposible" ist ein Varchar Feld.


    Hier noch der Code von register_send.php


    Code:
    <?
    
    mysql_query($sql_member_insert);
    
    $insert_id = mysql_insert_id();
    
    echo $insert_id;
    
    if ($register_responsible){
    mysql_query($sql_responsible_insert);
    }
    
    
    ?>
    <table width="659" border="0" cellspacing="0" cellpadding="0" class="main_text">
          <tr>
            <td width="15"></td>
            <td width="644"></td>
          </tr>
          <tr>
            <td class="kategorie"></td>
            <td class="text">Ihre Daten wurden erfolgreich gespeichert...</td>
          </tr>
        </table>

    Ich hoffe ich habe es einigermassen verständlich erklärt. Aber das glaube ich ehrlich gesagt nicht. Bitte fragt mich wenn Ihr was wissen und mir helfen wollt.


    Vielen herzlichen Dank das Ihr euch meinen Text bis zum Schluss durchgelesen habt!!!!!!!!

    ciao stiffler2000

  • #2
    Naja ist ja klar, dass es nicht funktioniert, denn du setzt die $insert_id ja
    schon viel früher ein. Bevor sie überhaupt definiert wurde. Das Skript
    arbeitet von oben nach unten alles durch. Das musst du als
    Programmierer lernen und solltest du als Fortgeschrittener auch wissen
    (also poste nicht gleich im Fortgeschrittenen Forum, nur weil du das
    Problem schwierig findest ).
    Wie wäre es du benutzt statt $insert_id ein %s oder %u als Platzhalter.
    Diese Platzhalter werden nämlich von der Funktion
    sprintf verstanden und du kannst sie
    danach bequem einsetzen.

    Ein Beispiel:
    PHP-Code:
    <?php
    // sql.inc
    $sql_responsible_insert "INSERT INTO tabelle SET id = %u";
    ?>
    PHP-Code:
    <?php
    // register_send
    mysql_query($sql_member_insert);
    $insert_id mysql_insert_id();
    //echo $insert_id;
    if (isset($register_responsible)){ // isset hinzugefügt
    mysql_query(sprintf($sql_responsible_insert$insert_id)); // sprintf hinzugefügt
    }
    ?>
    IDs sind übrigens (positive) Zahlen, kein Grund dafür ein VARCHAR Feld
    zu nehmen. Ein Computer kann viel schneller mit Zahlen rechnen als mit
    Buchstaben o.ä.
    Ich benutze dafür meist UNSIGNED INT, da IDs ja auch nicht negativ sein
    können.

    Kommentar


    • #3
      ja, hast du natürlich recht. danke für deine hilfe! manchmal ist es halt so das man die einfachsten sachen übersieht...

      Kommentar

      Lädt...
      X