Select Max() Update

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

  • Select Max() Update

    Hallo! Ich hab ein Problem mit SELECT MAX()

    Die Frage wurde bestimmt schon mal gestellt *ich weiss* und die Suchen-Funktion hab ich auch schon benutzt aber nichts handfestes gefunden.

    Tabelle:

    ID | pos | Datum | Stadt | Location | date | time

    1 | 1 | 24.03 | Berlin | Salon
    2 | 2 | 26.03 | Bern | Haus
    3 | 3 | 29.03 | Bonn | Hall

    ID: int, unsigned, auto_increment
    pos: int

    Jetzt möchte ich die MAX(pos) auslesen und um eins erhöhen
    (bei einem neuen eintrag) um dann die Reihenfolge ändern zu können
    (nicht order by sondern mit buttons=eins rauf oder eins runter):

    ID | pos | Datum | Stadt | Location | date | time

    1 | 3 | 29.03 | Bonn | Hall
    2 | 2 | 26.03 | Bern | Haus
    3 | 1 | 24.03 | Berlin | Salon


    PHP-Code:
    function eingabe()
    {
    global 
    $falsch;
    global 
    $leer;
    $conn dbconnect();
    $date date("Y.m.d");
    $time date("H:i:s");


    if ( 
    $_POST[tag]=="") {$leer[tag]=" <font class='text'>Bitte Tag eingeben!</font> ";}
    elseif ( 
    $_POST[stadt]=="") {$leer[stadt]=" <font class='text'>Bitte Stadt eingeben!</font> ";}

     else {
            
    $query  "SELECT MAX(pos) FROM konzert WHERE ID=$id ";
            
    $query  "UPDATE konzert SET pos = pos+1 WHERE ID=$id ";
            
    $query  "INSERT INTO konzert(tag,stadt,ort,date,time) ";
            
    $query .= " VALUES ('$_POST[tag]', '$_POST[stadt]', '$_POST[ort]', '$date', '$time') ";
            
    $result mysql_query($query$conn);
            if(!
    $result){echo mysql_error($conn);}


    Was mache ich falsch, das hochzählen klappt nicht?

  • #2
    *verschieb* nach SQL

    ich werf an dieser Stelle aber mal das stichwort auto_increment in den Raum. Da kannst du dir vermutlich ne Menge arbeit ersparen.

    Kommentar


    • #3
      also wenn die ID schon ein auto inc hat geht das wohl nicht, 2 feldern ein auto inc geben hab ich noch nicht gesehen= ich möchte das feld pos hochzählen, nicht die ID, die hat ja ein auto_inc

      Kommentar


      • #4
        außerdem überschreibst du deinen query jedesmal, bevor er ausgeführt wird. letztendlich wird nur "INSERT INTO..." ausgeführt.

        gruß
        peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          Mein Fehler, hatte mal wieder voreilig geantwortet.

          *verschieb* zurück. du sendest die queries gar nicht ab.

          Kommentar


          • #6
            das die reihenfolge nicht richtig ist , weiss ich.
            aber wie ist es richtig?

            Kommentar


            • #7
              PHP-Code:
              $query  "SELECT MAX(pos) FROM konzert WHERE ID=$id ";
              $query  "UPDATE konzert SET pos = pos+1 WHERE ID=$id "
              ... kannst du dir schenken ... weil du mit ...

              PHP-Code:
              $query  "INSERT INTO konzert(tag,stadt,ort,date,time) ";
              $query .= " VALUES ('$_POST[tag]', '$_POST[stadt]', '$_POST[ort]', '$date', '$time') "
              .... ja wieder den _kompletten_ variableninhalt überschreibst, ergo (ich liebe dieses Wort ) ... die Datenbank wird das SELECT und UPDATE niemals sehen. Davon abgesehen ... "auto_increment" heißt dein neuer Freund !


              €: schon wieder zu langsam

              versuchs mal mit :

              INSERT INTO konzert(pos,tag,stadt,ort,date,time)
              VALUES (select max(pos)+1 from konzert,'$_POST[tag]', '$_POST[stadt]', '$_POST[ort]', '$date', '$time')
              Zuletzt geändert von DrNorton; 24.03.2005, 12:19.
              Rock on, Chummers
              DrNorton

              Kommentar


              • #8
                hab ich probiert:

                You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select max(pos)+1 from konzert, 'jhg', 'jhg', '', '2005.03.24',

                ausserdem sagte ich bereits das die ID schon ein auto increment hat, wie soll dann pos auch noch eins bekommen (nur ein auto inc pro table!!!)
                Zuletzt geändert von finalcp; 24.03.2005, 12:33.

                Kommentar


                • #9
                  Ja ... sorry mein Fehler ... so is richtig:

                  INSERT INTO konzert(pos,tag,stadt,ort,date,time)
                  select (max(pos)+1),'$_POST[tag]', '$_POST[stadt]', '$_POST[ort]', '$date', '$time' from konzert
                  Rock on, Chummers
                  DrNorton

                  Kommentar


                  • #10
                    $query = "INSERT INTO konzert(pos,tag,stadt,ort,date,time) ";

                    $query .= " VALUES ( select(max(pos)+1), '$_POST[tag]', '$_POST[stadt]', '$_POST[ort]', '$date', '$time') ";

                    stimmt warsch. nicht, s gibt wieder ne fehlermeldung, hab ich s falsch interpretiert?

                    Kommentar


                    • #11
                      mein fehler, GROSSES SORRY!!!

                      die $query .= " VALUES ( select(max(pos)+1), '$_POST[tag]', '$_POST[stadt]', '$_POST[ort]', '$date', '$time') ";

                      braucht man dann nat. nicht mehr, jetzt funktioniert's !!

                      danke!

                      Kommentar

                      Lädt...
                      X