Avatar billede bjarkebundgaard Nybegynder
22. oktober 2008 - 15:36 Der er 10 kommentarer og
1 løsning

Opdatere en tabel med data

Hej Eksperter

Jeg har en mySQL tabel der hedder users, og i den tabel er der bl.a en række der hedder barvagt, og en række der hedder ancinitet. Barvagt indeholder enten 0 eller 1. 1 hvis man skal have en barvagt. Barvagten skal gå på omgang efter ancinitet som går fra 1 - xx

Jeg har brug for at lave et script, som når det bliver kørt, rykker barvagten én ancinitet op, men ikke højere end der er ancinitet til. Med andre ord hvis barvagten står til 1 hos den bruger der har den højeste ancinitet, så skal den efterfølgende flyttes til brugeren med laveste ancinitet.

Håber spørgsmålet et til at forstå. Jeg er IKKE en haj til hverkan php eller mySQL

Mvh.
B
Avatar billede majbom Novice
22. oktober 2008 - 15:46 #1
jeg forstår ikke helt tror jeg..

den skal sende barvagten videre til personen med den laveste (dog højere end den der pt har vagten), ancinitet. men hvis der ikke er nogen der har højere, skal den gå til den med lavest?
Avatar billede g1mzee Nybegynder
22. oktober 2008 - 16:33 #2
Forstår det desværre ikke helt :)
Avatar billede bjarkebundgaard Nybegynder
22. oktober 2008 - 16:34 #3
Præcis.

Måske skal jeg også lige sige, at der godt kan være huller i anciniteten, forstået på den måde, at rækkefølgen godt kan hedde 1,2,3,4,7,8,9,10,13 osv.
Avatar billede majbom Novice
22. oktober 2008 - 19:11 #4
det kan muligvis laves simplere, men følgende gørhvad du ønsker, hvis jeg har forstået dit system rigtigt...

//HENTER ANCINITETEN FOR DEN DER HAR VAGTEN
$res1 = query("SELECT anc FROM barvagt WHERE vagt='1' LIMIT 1");
$vagt = mysql_fetch_array($res1);

//HENTER ID FOR DEN DER HAR NÆSTE TRIN PÅ ANCINITETSTRAPPEN
$res2 = query("SELECT id FROM barvagt WHERE anc>".$vagt[anc]." ORDER BY anc ASC LIMIT 1");

//HVIS DER IKKE ER NOGEN HØJERE OPPE PÅ TRAPPEN, VÆLGER VI DEN NEDERSTE
if(mysql_num_rows($res2)>0){
    $ny_vagt = mysql_fetch_array($res2);
}else{
    $res3 = query("SELECT id FROM barvagt WHERE anc>0 ORDER BY anc ASC LIMIT 1");
    $ny_vagt = mysql_fetch_array($res3);
}

//GIVER VAGTEN TIL DEN VALGTE
query("UPDATE barvagt SET vagt='1' WHERE id='".$ny_vagt[id]."'");
Avatar billede majbom Novice
22. oktober 2008 - 19:12 #5
query($query); er en funktion den connecter til db, udfører $query og lukker forbindelsen til db...
Avatar billede majbom Novice
22. oktober 2008 - 19:14 #6
der skal lige denne på i slutningen:

//FJERNER VAGTNE FRA DEN DER HAVDE DEN TIL AT STARTE MED
query("UPDATE barvagt SET vagt='0' WHERE id='".$gl_vagt[id]."'");
Avatar billede majbom Novice
22. oktober 2008 - 19:17 #7
prøver lige igen:

//HENTER ANCINITETEN FOR DEN DER HAR VAGTEN
$res1 = query("SELECT id, anc FROM barvagt WHERE vagt='1' LIMIT 1");
$gl_vagt = mysql_fetch_array($res1);

//HENTER ID FOR DEN DER HAR NÆSTE TRIN PÅ ANCINITETSTRAPPEN
$res2 = query("SELECT id FROM barvagt WHERE anc>".$gl_vagt[anc]." ORDER BY anc ASC LIMIT 1");

//HVIS DER IKKE ER NOGEN HØJERE OPPE PÅ TRAPPEN, VÆLGER VI DEN NEDERSTE
if(mysql_num_rows($res2)>0){
    $ny_vagt = mysql_fetch_array($res2);
}else{
    $res3 = query("SELECT id FROM barvagt WHERE anc>0 ORDER BY anc ASC LIMIT 1");
    $ny_vagt = mysql_fetch_array($res3);
}

//GIVER VAGTEN TIL DEN VALGTE
query("UPDATE barvagt SET vagt='1' WHERE id='".$ny_vagt[id]."'");

//FJERNER VAGTNE FRA DEN DER HAVDE DEN TIL AT STARTE MED
query("UPDATE barvagt SET vagt='0' WHERE id='".$gl_vagt[id]."'");
Avatar billede bjarkebundgaard Nybegynder
22. oktober 2008 - 23:07 #8
Det virker perfekt 1000 tak for hjælpen.
Avatar billede majbom Novice
23. oktober 2008 - 08:28 #9
selv tak - husk at acceptere mit svar:

marker mit navn i boxen til venstre og tryk accepter
Avatar billede bjarkebundgaard Nybegynder
23. oktober 2008 - 08:30 #10
Ahhh! Jeg havde ikke lige fået markeret dig ude til Venstre, det burde være OK nu.
Avatar billede majbom Novice
23. oktober 2008 - 08:32 #11
takker for points :0)
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