Avatar billede kviller Novice
23. august 2007 - 23:18 Der er 3 kommentarer og
1 løsning

Sikrer sig at kun 1 post i SQL er "1"

En simpel og dårligt lavet måde at få den til at skifte mellem de 5 konsulenter hver gang en "ny kunde" kommer ind på siden, men hvordan sikrer jeg mig at kun 1 post er lig 1?


if(strlen($_GET['ref']) < 2 || strlen($_GET['ref']) > 3) {
   
    mysql_connect($dbhost, $dbuser, $dbpass) or die(mysql_error());
    mysql_select_db($dbname) or die(mysql_error());
      $result = mysql_query("SELECT * FROM konsulenter WHERE naeste='1'");
      while ($info = mysql_fetch_array($result)) {
            $aktiv = $info['ID'];
            $naeste = $aktiv + 1;
            if ($naeste > 5) {
            $naeste = 1;
            };
            $sql = "UPDATE konsulenter SET naeste = NULL WHERE ID = '$aktiv' LIMIT 1;";
            mysql_query($sql);
            $sql = "UPDATE konsulenter SET naeste = '1' WHERE ID = '$naeste' LIMIT 1;";
            mysql_query($sql);
            $ref = $info['ref'];



    }; // End while

   
    }; // End if
Avatar billede jakobdo Ekspert
24. august 2007 - 11:22 #1
Du kunne i stedet for at sætte $aktiv, sætte et tidspunkt på den som sidste har lavet en opgave.
Så vil du altid bare kunne vise den med ældst tid, og opdatere dennes tid når personen bliver valgt.
Var det en løsning?
Avatar billede liit42 Nybegynder
24. august 2007 - 23:58 #2
Som jacob siger, så er tid en nem mulighed, bare select den med lavest tid, og opdater tiden til now. Hvis du vil undgå det, så kan du have et felt "foobar" som sættes til 0 for alle fra starten, så "SELECT * FROM konsulenter ORDER BY foobar LIMIT 1" og så "UPDATE konsulenter SET foobar=foobar+1 WHERE ID=$info[ID]"

Hvis du så får 2 brugere "præcis" samtidigt, og den samme konsulent bliver valgt (fordi kunde #2 kommer ind, inden kunde #1 når at køre en UPDATE), så får den pågældne konsulent+2, og vil dermed bare blive smidt lidt længere tilbage i køen - alle bliver vist lige tit så.
Avatar billede kviller Novice
27. august 2007 - 17:16 #3
Jeg har valgt at benytte en ekstra tabel, idet man så er helt sikker:

if(strlen($_GET['ref']) < 2 || strlen($_GET['ref']) > 3) {
   
    mysql_connect($dbhost, $dbuser, $dbpass) or die(mysql_error());
    mysql_select_db($dbname) or die(mysql_error());
      $result = mysql_query("SELECT * FROM NxtKonsul");
      while ($info = mysql_fetch_array($result)) {
            $aktiv = $info['id'];
                  $sql = mysql_query("SELECT ref FROM konsulenter WHERE ID = '$aktiv'");
                  while ($info2 = mysql_fetch_array($sql)) {

                    $ref = $info2['ref'];

                };

    }; // End while
   
   
    $naeste = $aktiv + 1;
    if($naeste >= 7) {
        $naeste = 1;
    };
      $sql = "UPDATE NxtKonsul SET id = '$naeste';";
    mysql_query($sql);
   
}; // End if
Avatar billede jakobdo Ekspert
27. august 2007 - 18:03 #4
Den med tid burde nu være sikker nok.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester