Ankündigung

Einklappen
Keine Ankündigung bisher.

auto increment

Einklappen

Neue Werbung 2019

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

  • auto increment

    im php myadmin kann man ja leider nur ein feld als auto_increment definieren, das ist bei mir die 'ID'.
    ich möchte aber, dass nicht nur bei 'ID', sondern auch bei 'Pos' immer automatisch eine Zahl höher als die höchste, bestehende Zahl eingefügt wird.

    Sorry, etwas kompliziert erklärt, hoffe jemand hat es verstanden...

  • #2
    also von myphpadmin aus gehts nicht.
    da autoincrement einen primärschlüssel verlangt.
    Primär geht aber wie der name schon sagt nur mal.

    du kannst aber ne vorschleife basteln und denn den wert automatisch immer um 1 erhöhen.
    ist also keine schwierigkeit

    Kommentar


    • #3
      Ich würde auch eine Schleife vorschalten:
      PHP-Code:
      $result mysql_query("select MAX(position) from table");
      while(
      $row mysql_fetch_array($result))
        
      $max $row['position']
      $max++;
      $result $mysql_query("insert table set position=$max...."); 

      Kommentar


      • #4
        sorry, aber 2 auto_increment schlüssel machen keinen sinn .. weil die beide immer den
        gleichen wert anzeigen werden ..

        willst du pos immer id+1 haben? dann könntest du direkt nach dem insert nen update
        durchführen. ist zwar wieder eine operation mehr .. aber anders wird's nicht laufen.

        Kommentar


        • #5
          > sorry, aber 2 auto_increment schlüssel machen keinen sinn .. weil die beide immer den
          > gleichen wert anzeigen werden ..

          doch das macht einen sinn, denn ich will die datensätze nach belieben verschieben können.
          damit brauche ich die ID die immer gleich bleibt und die pos die sich dann an den verschiebenden datensätzen anpasst... auch etwas kompliziert erklärt...

          okay versuche es mit der schleife.

          Kommentar


          • #6
            Zitat von jen
            damit brauche ich die ID die immer gleich bleibt
            Dafür bietet sich auto_increment an.

            Zitat von jen
            und die pos die sich dann an den verschiebenden datensätzen anpasst...
            Dann pass sie eben an... wozu auto_increment?
            mod = master of disaster

            Kommentar


            • #7
              ich passe sie ja an, aber die positionen müssen zuerst einen wert erhalten...

              Kommentar


              • #8
                @Klabauter

                warum funktioniert es nun nicht? bitte verständlich erklären, bin ein richtiger anfänger...

                Code:
                $db = MYSQL_CONNECT($db_server,$db_user,$db_passwort);
                $result = mysql_query("SELECT Pos FROM $table ORDER BY Pos desc LIMIT 0,1"); 
                while($row = mysql_fetch_array($result)) {
                	$max = $row['Pos'];
                	$max++; 
                }
                			
                $insert = "INSERT INTO Notruf ( `ID` , `Pos` , `Notruf` , `Nummer` ) SET Pos = $max
                VALUES ('', '$Pos', '$Notruf', '$Nummer');";

                Kommentar


                • #9
                  Warum nimmst du nicht die Abfrage von Klabauter? Allerdings genügt dann ein einzelner fetch_*(), da max() immer nur eine Zeile zurück liefert:
                  PHP-Code:
                  $result mysql_query("select MAX(position) from table") or die(mysql_error());
                  $row mysql_fetch_array($result)
                  $max $row['position'] + 1;
                  $insert "INSERT INTO Notruf ( Pos , Notruf , Nummer) 
                                 VALUES ( 
                  $max, '$Notruf', '$Nummer')"
                  mysql_query($insert) or die(mysql_error()); 
                  Beim INSERT musst du entweder VALUES benutzen oder die Form SET attribut = wert, aber nicht beides. Ich bevorzuge die oben stehende Version, welche auch alle andern DBMS verstehen.
                  Denn Sinn des Ganzen verstehe ich allerdings immer noch nicht, du kannst ja die Attribute auch leer lassen, bis du sie benötigst.
                  Gruss
                  L

                  Kommentar


                  • #10
                    nun kommt die fehlermeldung 'no database selected'... ich habe aber keine ahnung warum... ist doch alles definiert!?

                    PHP-Code:
                    $db MYSQL_CONNECT($db_server,$db_user,$db_passwort);
                    $result mysql_query("SELECT MAX(Pos) FROM $table"
                        or die(
                    mysql_error()); 
                    $row mysql_fetch_array($result);
                    $max $row['Pos'] + 1;
                    $insert "INSERT INTO `Notruf` ( Pos , Notruf , Nummer) 
                        VALUES ('
                    $max', '$Notruf', '$Nummer')"

                    Kommentar


                    • #11
                      Da fehl nach der Verbindung halt noch die Wahl der Datenbank:
                      PHP-Code:
                      mysql_select_db('datenbank'); 
                      Gruss
                      L

                      Kommentar

                      Lädt...
                      X