Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Aktualizacja rekordów tylko zaznaczonych checkboxem
Forum PHP.pl > Forum > Przedszkole
13355
Witam.
Przeszukałem net i wypróbowałem wiele sposobów ale nie mogę sobie niestety od dłuższego czasu poradzić z aktualizacją rekordów w bazie z zaznaczonym chceckboxem.
Po zaznaczeniu czechboxów z liniach 1,5,7, aktualizują się owszem trzy rekordy, ale trzy pierwsze. Próbawałem róznych sposobów przekazania zmienej do każdego rekordu, łaczenia wartości, sprawdzania wartości chechkobxa, ale nic mi nie wychodzi, dlatego proszę o pomoc w poniższym kodzie:


if(isset($_POST['start'])) {
$id = $_POST['id'];
$producent = $_POST['producent'];
$model = $_POST['model'];
$opis = $_POST['opis'];
$uwagi_b = $_POST['uwagi_b'];
$zatwierdz = $_POST['zatwierdz'];


$count = count($id); //liczę ilosc rekordow
for($i=0;$i<$count;$i++) {

if ( JAKI WARUNEK WPISAC ) { ZEBY W BAZEIE ZAKTUALIZOWLAY SIE TYLKO ZAZNACZONE CHECHBOXEM REKORDY
$query='UPDATE auta SET weryfikacja = 'tak' WHERE nr_wpisu="'.$id[$i].'" ';
mysql_query($query);
}
else { NIE AKTUALIZUJ}


}
}


?>

<form method="POST" action="">
<table>
<?php
//wyswietlam wszystkie rekordy
$zapytanie = mysql_query("SELECT * from auta WHERE weryfikacja = 'nie' ");
if (mysql_num_rows($zapytanie) != 0) {
$i = 0;
echo "";
while ($wynik = mysql_fetch_array($zapytanie)) {
echo ('<tr>
<td><input type="text" size="15" name="producent[]" value="'.$wynik['producent'].'"/></td>
<td><input type="text" size="15" name="model[]" value="'.$wynik['model'].'"/></td>
<td><input type="text" size="70" name="opis[]" value="'.$wynik['opis'].'"/>
<td><input type="text" size="70" name="uwagi_b[]" value="'.$wynik['uwagi_b'].'"/>
<td><input type="checkbox" name="zatwierdz[]" value="'.tak.'"/>
<input type="hidden" name="id[]" value="'.$wynik['nr_wpisu'].'"/></td>
</tr>');
}
}

?>
</table>
<br/><br><br>
<center><input class="button" type="submit" name="start" value="Weryfikuj zaznaczone"></center>
</form>
memory
  1. <td><input type="checkbox" name="zatwierdz[]" value="'.$wynik['nr_wpisu'].'"/>


  1. if (!empty($zatwierdz ) && is_array($zatwierdz )) {
  2.  
  3. foreach ($zatwierdz as $z)
  4. $query='UPDATE auta SET weryfikacja = 'tak' WHERE nr_wpisu="'.$z.'" ';

Turson
memory, pomyliłeś ciapki przy tak smile.gif
13355
Dzięki za podpowiedzi, poszedłem trochę dalej. Aktualizuje mi się w bazie wybrany rekord, ale tylko jeden, bez względu ile zaznaczę.
Turson
Pokaż kod
13355
kod wygląda nastęująco

if(isset($_POST['start'])) {
$id = $_POST['id']; //pobranie wszystkich id
$producent = $_POST['producent']; //pobranie wszystkich danych
$model = $_POST['model']; //pobranie wszystkich danych
$opis = $_POST['opis']; //pobranie wszystkich danych
$uwagi_b = $_POST['uwagi_b'];
$zatwierdz = $_POST['zatwierdz'];


$count = count($id); //liczę ilosc wszystkich przekazanych rekordow
$count2 = count($zatwierdz); //lice ilosc przekazanych wcisnietych checkboxow
echo "$count<br>";

for($i=0;$i<$count;$i++) {

if (!empty($zatwierdz ) && is_array($zatwierdz )) {

foreach ($zatwierdz as $z)
$today = date("Y-m-d");
$query='UPDATE auta SET data_weryfikacji= "'.$today.'" WHERE nr_wpisu="'.$z.'" ';
mysql_query($query);
}

}
}


?>

<form method="POST" action="">
<table border='0' align='left' cellpadding='3' cellspacing='0' width='1000' rules='rows' frame='hsides'>
<tr><th>Podwykonawca</th><th>Model</th><th>AB</th><th>koszt Euro</th><th>koszt dodatkowy[zł]</th><th>opis</th><th>uwagi</th></tr>
<?php
//wyswietlam wszystkie rekordy
$zapytanie = mysql_query("SELECT * from auta WHERE weryfikacja = 'nie' ");
if (mysql_num_rows($zapytanie) != 0) {
$i = 0;
echo "";
while ($wynik = mysql_fetch_array($zapytanie)) {
echo ('<tr>
<td><input type="text" size="15" name="producent[]" value="'.$wynik['producent'].'"/></td>
<td><input type="text" size="15" name="model[]" value="'.$wynik['model'].'"/></td>
<td><input type="text" size="70" name="opis[]" value="'.$wynik['opis'].'"/>
<td><input type="text" size="70" name="uwagi_b[]" value="'.$wynik['uwagi_b'].'"/>
<td><input type="checkbox" name="zatwierdz[]" value="'.$wynik['nr_wpisu'].'"/>
<input type="hidden" name="id[]" value="'.$wynik['nr_wpisu'].'"/></td>
</tr>');
}
}

?>
</table>
<br/><br><br>
<center><input class="button" type="submit" name="start" value="Zatwierdz"></center>
</form>
nospor
1) zacznij uzywac BBCODE
2) FOR jest totalnie zbedny
3) Jak chcesz by FOREACH obejmowal blok instrukcji a nie tylko jedną po FOREACH to masz uzywac {} Teraz tego nie robisz, wiec UPDATE dotyczy zawsze ostaniego checkbox anie kazdego w petli FOREACH
13355
Dzięki o to chodziło. Chciałem rozszerzyć aktualizajce rekordu o uwagi_b w zapytaniu:

CODE

$query='UPDATE auta SET data_weryfikacji= "'.$today.'", uwagi_b = "'.uwagi_b[].'" WHERE nr_wpisu="'.$z.'" ';


Ćwiczyłem kilka sposobów ale nie potrzafię przekazać odpowiedzniej zmiennej $uwagi_b[] do wcisniętego checkboxa. Jak to ugryźć?
Dziękuję z góry.
nospor
print_r($_POST['uwagi_b']);
A zobaczysz ze tam jest tablica.Musisz wiec po niej iterowac
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.