webForumDet fria alternativet

Uppdatera flera rader i sql-tabell

2 svar · 440 visningar · startad av überfuzz

überfuzzMedlem sedan apr. 2006409 inlägg
#1

Jag försöker uppdatera flera rader i en sql-tabell mha av checkbox i en <form>. Hittills verkar det som att jag får ut de värden jag vill ha ut ur sql-tabellen. Problemet är att jag inte kan få in det uppdaterade i tabellen. Se kommentarer i koden!

<?php
$sql="SELECT * FROM resultat WHERE kontroll = 'unchecked' ORDER BY id ASC";
$result=mysql_query($sql);
 
$count=mysql_num_rows($result);
 
?>
<table>
<form method="post" action="page_id=60">
<tr>
<td>#</td><td><strong>Id</strong></td><td><strong>SäljarID</strong></td><td><strong>Telefonnummer</strong></td><td><strong>Klient</strong></td><td><strong>Produkt</strong></td>
</tr>
<?php
while($rows=mysql_fetch_array($result)){
?>
<tr>
<td><input name="checkbox[]" type="checkbox" id="checkbox[]" value="<? echo $rows['id']; ?>"></td><td><? echo $rows['id']; ?></td><td><? echo $rows['user']; ?></td><td><? echo $rows['telenr']; ?></td><td><? echo $rows['klient']; ?></td><td><? echo $rows['produkt']; ?></td>
</tr>
<?php
}
?>
<tr>
<td colspan="6"><input name="check" type="submit" value="Ok"></td>
</tr>
<?
// Här börjar jag få problem, kontroller av variabler ger dåligt resultat.
// $count verkar stämma, men arrayen checkbox är fel, check funkar inte heller verkar det som.
if($check){
for($i=0;$i<$count;$i++){
$update_id = $checkbox[$i];
$result = mysql_query("UPDATE resultat SET kontroll = 'ok!' WHERE kontroll = 'unchecked'") or die (mysql_error());
}
}
print_r($checkbox);
echo $count;
mysql_close();
?>
</form>
</table>
PeddaMedlem sedan juni 20006 032 inlägg
#2

Vet inte vad du har för inställning i php.ini men ha för vana att alltid hantera GET och POST variabler på rätt sätt. Och starta alltid din php kod med <?php istället för <?.
Dvs $_POST['foo'] och $_GET['foo'], annars så är det inte säkert att dom får något värde beroende på hur konfigurationen ser ut.

Så byt ut

if($check){

mot

if(isset($_POST['check'])){

Sen när du loopar igenom din array så kan du ju inte veta att alla ($count) är icheckade så ändra din for-sats också.

foreach ($_POST['checkbox'] as $c){
$result = mysql_query("UPDATE resultat SET kontroll = 'ok!' WHERE id = '$c'") or die (mysql_error());
}
überfuzzMedlem sedan apr. 2006409 inlägg
#3

Tack för dina tips! Ändringarna du föreslog löste problemen. Den enda ändringen jag var tvungen att göra efter det var att kasta om lite i koden. Min första lösning krävde ju två klick på submit-knappen. Nu är allt löst tack vare dig.

126 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)