Mit "program" fungerer sådan at klienten skal hakke nogle checkboxes af som bestemmer hvad der er spot på. Når det er gjort, bliver et felt i databasen som hedder spot sat til 1 i stedet som før, 0.
Nu skal jeg jo så derefter have alle dem som var sat til 1 før den opdaterede databasen til 0, så der ikke kun kommer til at stå spot=1 ved alle sammen.
Hvordan gør jeg det? Lige i øjeblikket er jeg ved at brygge på:
foreach($active as $id){ //Opdaterer de valgte spots $sql = "UPDATE categories SET cat_spot='". 1 ."' WHERE cat_id='". $id ."'" . "<br />"; }
Du skal ikke lave en foreach statement når du skal opdatere i sql. Du skal gøre det i EN query. Hvis du har mange felter, vil det tage lang tid at udfører dem alle. Man kan godt gøre det som du skriver, men det er bare ikke best practice!
Derudover hvad laver det <br /> til sidst i din forespørgelse? :)
Jeg er ikke helt enig med #2. Hvis du får $active via POST eller GET, må det være til at overskue hvad der er af UPDATEs. Hvis 'cat_spot' og 'cat_id' er numeriske, hvad de bør være, kan du undvære en del apostrofer, så: $sql = "UPDATE categories SET cat_spot=1 WHERE cat_id=$id;"; Så mangler du bare: $qry = mysql_query($sql) or die(mysql_error());
Ups! Jeg overså lige en detalje. Jeg kan ikke rigtig se om det er det du vil have, men en query som ligger uden for loopet, som #2 måske har set: $sql = "UPDATE categories SET cat_spot=0;"; Den sætter 'cat_spot' til 0 i samtlige rækker.
Hvis det ikke er det du vil have må du lige kvabbe dig.
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.