Avatar billede jammerlab Nybegynder
22. august 2008 - 16:23 Der er 19 kommentarer og
1 løsning

Hvordan updater jeg med checkboxes

Jeg kan aldrig huske den her... har en kode der hiver navne frem fra databasen. Deres user_lvl er styret ved 7 områder;
----------------

$query = mysql_query("select * FROM `wow_users` WHERE `guild` != '0' ORDER BY `ID` DESC") or die(mysql_error());
while($row = mysql_fetch_assoc($query)) {
echo "
<tr>
<td><span class=\"text1\">".$row["user"]."</span></td>
<td><span class=\"$row[type]\">".$row["type"]."</span></td>
<td><input type=\"checkbox\" name=\"check[".$row["ID"]."]\" value=\"1\" "; if($row[ar_1] > "0") { echo " checked=\"checked\""; } echo "></td>
<td><input type=\"checkbox\" name=\"check[".$row["ID"]."]\" value=\"1\" "; if($row[ar_2] > "0") { echo " checked=\"checked\""; } echo "></td>
<td><input type=\"checkbox\" name=\"check[".$row["ID"]."]\" value=\"1\" "; if($row[ar_3] > "0") { echo " checked=\"checked\""; } echo "></td>
<td><input type=\"checkbox\" name=\"check[".$row["ID"]."]\" value=\"1\" "; if($row[ar_4] > "0") { echo " checked=\"checked\""; } echo "></td>
<td><input type=\"checkbox\" name=\"check[".$row["ID"]."]\" value=\"1\" "; if($row[ar_5] > "0") { echo " checked=\"checked\""; } echo "></td>
<td><input type=\"checkbox\" name=\"check[".$row["ID"]."]\" value=\"1\" "; if($row[ar_6] > "0") { echo " checked=\"checked\""; } echo "></td>
<td><input type=\"checkbox\" name=\"check[".$row["ID"]."]\" value=\"1\" "; if($row[ar_7] > "0") { echo " checked=\"checked\""; } echo "></td>
</tr>";
}

---------------

Hvordan er det nu jeg for lavet en update som tar højde fra det hele... er ret sikker på checkboxen heller ikke er helt rigtig...
Avatar billede jakobdo Ekspert
22. august 2008 - 16:54 #1
Det kommer meget an på hvad du rent faktisk vil opnå ?
Avatar billede jammerlab Nybegynder
22. august 2008 - 17:26 #2
Jeg vil bare havde den til at retter ar_1 -> ar_7 på hver bruger der bliver hevet ud i while lykken alt efter om man har hakket checkboxen af eller ej

0 hvis ikke og 1 hvis man har
Avatar billede jakobdo Ekspert
22. august 2008 - 17:42 #3
Virker dit udtræk fint nok ?

For du skal jo så løbe $_POST['check'] igennem.
Det kan du gøre med:

foreach($_POST['check'] AS $id => $checkboxes){
//Gør noget med $id (bruger ID)
//$checkboxes de 7 checkboxene til brugeren...
}
Avatar billede jammerlab Nybegynder
23. august 2008 - 16:42 #4
jakobdo> tror du at du kan specificere koden en smule mere? Jeg er ikek helt med på hvordan jeg for den til at opdatere hver tabel for hver bruger... der er 7 felter ar_1 -> ar_7
Avatar billede jammerlab Nybegynder
23. august 2008 - 16:47 #5
Jeg går ud fra mine checkboxes også skal se sådan her ud?
----------

<tr>
<td><span class="text1"><? echo "$row[user]"; ?></span></td>
<td><span class="<? echo "$row[type]"; ?>"><? echo "$row[type]"; ?></span></td>
<td><input type="checkbox" name="ar_1" value="1" <? if($row[ar_1] > "0") { echo " checked=\"checked\""; } ?>></td>
<td><input type="checkbox" name="ar_2" value="1" <? if($row[ar_2] > "0") { echo " checked=\"checked\""; } ?>></td>
<td><input type="checkbox" name="ar_3" value="1" <? if($row[ar_3] > "0") { echo " checked=\"checked\""; } ?>></td>
<td><input type="checkbox" name="ar_4" value="1" <? if($row[ar_4] > "0") { echo " checked=\"checked\""; } ?>></td>
<td><input type="checkbox" name="ar_5" value="1" <? if($row[ar_5] > "0") { echo " checked=\"checked\""; } ?>></td>
<td><input type="checkbox" name="ar_6" value="1" <? if($row[ar_6] > "0") { echo " checked=\"checked\""; } ?>></td>
<td><input type="checkbox" name="ar_7" value="1" <? if($row[ar_7] > "0") { echo " checked=\"checked\""; } ?>></td>
</tr>
Avatar billede jakobdo Ekspert
23. august 2008 - 16:55 #6
Jeg ville nok give dem navn ala:

name="check[$row['user_id']]['ar_1']"
name="check[$row['user_id']]['ar_2']"
osv...
Avatar billede jammerlab Nybegynder
23. august 2008 - 17:34 #7
super... og nogen idé til hvordan min update så skulle se ud?
Avatar billede jammerlab Nybegynder
23. august 2008 - 17:34 #8
if(isset($_POST["check"]) && is_array($_POST["check"])) {

foreach($_POST['check'] AS $id => $checkboxes){
mysql_query("UPDATE `wow_users` SET ?????) or die(mysql_error());
}

}
Avatar billede jakobdo Ekspert
23. august 2008 - 20:52 #9
Det kommer jo selvfølgelig an på hvordan din tabel struktur er nu. :o)
Avatar billede jammerlab Nybegynder
23. august 2008 - 23:38 #10
jamen der er en bruger med et unikt ID og han har så ar_1 -> ar_7
Avatar billede jakobdo Ekspert
24. august 2008 - 13:55 #11
ar_1, ar_2 osv...
Er de i en og samme tabel ?
Og så angiver du true eller false, 0/1 eller lign. for om checkboxen er sat eller ej ?
Avatar billede jammerlab Nybegynder
24. august 2008 - 19:35 #12
id | ar_1 | ar_2 | osv...
-------------------------
1    0        0
-------------------------
2    1        0
-------------------------
3    0        1

men kan ikke forstå hvordan jeg skal lave den tjeck om den er hakket af eller ej og at den så opdatere mysql'en
Avatar billede jakobdo Ekspert
24. august 2008 - 20:58 #13
prøv lige at lav:

echo '<pre>';
print_r($_POST);
echo '</pre>';

og se hvad du får, når du forsøger at opdatere.
Avatar billede jammerlab Nybegynder
24. august 2008 - 22:14 #14
Array
(
    [check] => Array
        (
            [0] => Array
                (
                    [ar_1] => 1
                )

            [1] => Array
                (
                    [ar_2] => 1
                )

            [2] => Array
                (
                    [ar_3] => 1
                )

            [3] => Array
                (
                    [ar_4] => 1
                )

            [4] => Array
                (
                    [ar_5] => 1
                )

            [5] => Array
                (
                    [ar_6] => 1
                )

            [6] => Array
                (
                    [ar_7] => 1
                )

        )

)
Avatar billede jammerlab Nybegynder
24. august 2008 - 22:14 #15
Med;

$query = mysql_query("select * FROM `wow_users` WHERE `guild` != '0' ORDER BY `user` DESC") or die(mysql_error());
while($row = mysql_fetch_assoc($query)) {
?>
<tr>
<td><span class="text1"><? echo "$row[user]"; ?></span></td>
<td><span class="<? echo "$row[type]"; ?>"><? echo "$row[type]"; ?></span></td>
<td><input type="checkbox" name="<? echo "check[$row[user_id]][ar_1]"; ?>" value="1" <? if($row[ar_1] > "0") { echo " checked=\"checked\""; } ?>></td>
<td><input type="checkbox" name="<? echo "check[$row[user_id]][ar_2]"; ?>" value="1" <? if($row[ar_2] > "0") { echo " checked=\"checked\""; } ?>></td>
<td><input type="checkbox" name="<? echo "check[$row[user_id]][ar_3]"; ?>" value="1" <? if($row[ar_3] > "0") { echo " checked=\"checked\""; } ?>></td>
<td><input type="checkbox" name="<? echo "check[$row[user_id]][ar_4]"; ?>" value="1" <? if($row[ar_4] > "0") { echo " checked=\"checked\""; } ?>></td>
<td><input type="checkbox" name="<? echo "check[$row[user_id]][ar_5]"; ?>" value="1" <? if($row[ar_5] > "0") { echo " checked=\"checked\""; } ?>></td>
<td><input type="checkbox" name="<? echo "check[$row[user_id]][ar_6]"; ?>" value="1" <? if($row[ar_6] > "0") { echo " checked=\"checked\""; } ?>></td>
<td><input type="checkbox" name="<? echo "check[$row[user_id]][ar_7]"; ?>" value="1" <? if($row[ar_7] > "0") { echo " checked=\"checked\""; } ?>></td>
</tr>
<?
}
?>
Avatar billede jammerlab Nybegynder
24. august 2008 - 23:10 #16
ah der var jo en fejl id'et er jo "ID" og ikke "User_ID"...

Array
(
    [check] => Array
        (
            [4] => Array
                (
                    [ar_1] => 1
                    [ar_2] => 1
                    [ar_3] => 1
                    [ar_4] => 1
                    [ar_5] => 1
                    [ar_6] => 1
                    [ar_7] => 1
                )

        )

)
Avatar billede jakobdo Ekspert
25. august 2008 - 08:09 #17
Så burde følgende gøre det:

i(isset($_POST["check"]) && is_array($_POST["check"])) {
    foreach($_POST['check'] AS $id => $checkboxes){
        mysql_query("UPDATE `wow_users` SET ar_1 = '".mysql_real_escape_string($checkboxes['ar_1'])."',
                                                                                ar_2 = '".mysql_real_escape_string($checkboxes['ar_2'])."',
                                                                                ar_3 = '".mysql_real_escape_string($checkboxes['ar_3'])."',
                                                                                ar_4 = '".mysql_real_escape_string($checkboxes['ar_4'])."',
                                                                                ar_5 = '".mysql_real_escape_string($checkboxes['ar_5'])."',
                                                                                ar_6 = '".mysql_real_escape_string($checkboxes['ar_6'])."',
                                                                                ar_7 = '".mysql_real_escape_string($checkboxes['ar_7'])."' WHERE user_id = '".intval($id)."' LIMIT 1") or die(mysql_error());
    }
}
Avatar billede jammerlab Nybegynder
25. august 2008 - 12:48 #18
Virker perfekt jakobdo - smid et svar tak :)
Avatar billede jakobdo Ekspert
25. august 2008 - 12:55 #19
Svar!
Avatar billede jakobdo Ekspert
25. august 2008 - 13:54 #20
Takker for point.
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