Avatar billede brandy Nybegynder
07. april 2003 - 21:31 Der er 9 kommentarer og
2 løsninger

UPDATE table - forskellige rows

Hvis man fx. har et skema med en checkbox ud for 10 forskellige muligheder:

A - [x]
B - [x]
C - [ ]
D - [x]
E - [ ]
...

Checkboxen angiver om A;B;C;D... er aktive.
MySQL:

ID navn aktiv
1  A    ja
2  B    ja
3  C    nej
4  D    ja
5  E    nej

Hvordan opdaterer jeg alle rækkerne på en gang i databasen? Altså så de ændrer status alt efter om aktiv er checket af eller ej?

mysql_query("UPDATE blabla SET aktiv = '$a_aktiv' WHERE id = '$a_id'") or die (mysql_error());

Vil kun opdatere række 1 (A) ...
Avatar billede brandy Nybegynder
07. april 2003 - 21:35 #1
Jeg kunne jo lave 10 updates, men det er det jeg helst vil undgå - og der må være en måde at gøre det på...

/Andy
Avatar billede mortrr Praktikant
07. april 2003 - 21:45 #2
Eventuelt med:
update blabla set aktiv=1 where id in (1,2,3)
update blabla set aktiv=0 where id not in (1,2,3)
Avatar billede bacce.dk Nybegynder
07. april 2003 - 21:50 #3
du adskiller dem med et comma (,)
mysql_query("UPDATE blabla SET aktiv = '$a_aktiv', aktivb = '$b_aktiv', aktiv_c = '$c_aktiv' WHERE id = '$a_id'") or die (mysql_error());

nu ved jeg ik hvad dine kolonner hedder så du må lige rette navne til så de passer ;-)
Avatar billede brandy Nybegynder
07. april 2003 - 21:58 #4
Problemet er at felterne hedder aktiv for for alle rækkerne. og variablerne a_aktiv osv...

Det skal da kunne lade sig gøre ... eller?!
Avatar billede brandy Nybegynder
07. april 2003 - 21:59 #5
mortr--> det er måske ikke så tosset en løsning...men flere forslag ønskes :)
Avatar billede bacce.dk Nybegynder
07. april 2003 - 22:06 #6
hmm okey.. tror jeg har misforstået spørgsmålet så..
helt i orden ;-)
Avatar billede sostack Nybegynder
08. april 2003 - 08:06 #7
Hvad med en for-next løkke til at løbe mulighederne igennem?
for($i = 1; $i < 10; $i++) {
if($checkbox[$i] == "on") {
$aktiv[] = $i;
}
}
Nu har du et array med de der skal være aktive.
Så laver du to forespørgsler som mottr foreslår:
<QUOTE>
update blabla set aktiv=1 where id in ($aktiv[0],$aktiv[1]....$aktiv[n])
update blabla set aktiv=0 where id not in ($aktiv[0],$aktiv[1]....$aktiv[n])

</QUOTE>
Du skal lige finde en smart måde at få data ud fra arrayet, men der skal jo også være lidt til dig at lave ;-)

//sostack
Avatar billede andy Nybegynder
08. april 2003 - 08:35 #8
Lav din aktiv column om til at indeholde 1 for ja og 0 for nej.

Så kan du bare lave en:
$string = implode(",", $checkbox_array);
mysql_query("UPDATE din_tabel SET aktiv=1-aktiv WHERE id IN ($string)");
Avatar billede brandy Nybegynder
08. april 2003 - 09:49 #9
sostack & andy --> Det ser lovende ud jeg ser på det efter arbejdstid :-)
Avatar billede brandy Nybegynder
08. april 2003 - 19:43 #10
Kan i hjælpe med at omskrive dette:
mysql_query("UPDATE blabla SET aktiv = '$aktiv_1' WHERE id = '1'");
til noget i stil med dette:
while ($i <= $antal){
mysql_query("UPDATE blabla SET aktiv = '$aktiv_$i' WHERE id = '$i'");
$i++;
}

Da det ikke virker... variablen skal hedde '$aktiv_1' fx. osv.

/Andy
Avatar billede brandy Nybegynder
08. april 2003 - 20:02 #11
$aktiv = ${"aktiv_$i"};

Blev løsningen - jeg kan dog ikke finde noget documentation i manualen - men jeg tænkte mig lidt om og vupti...Takker for hjælpen!
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