13355
3.04.2014, 21:50:01
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
3.04.2014, 23:08:04
<td><input type="checkbox" name="zatwierdz[]" value="'.$wynik['nr_wpisu'].'"/>
foreach ($zatwierdz as $z)
$query='UPDATE auta SET weryfikacja = 'tak' WHERE nr_wpisu="'.$z.'" ';
Turson
4.04.2014, 07:37:49
memory, pomyliłeś ciapki przy tak
13355
5.04.2014, 09:00:16
Dzięki za podpowiedzi, poszedłem trochę dalej. Aktualizuje mi się w bazie wybrany rekord, ale tylko jeden, bez względu ile zaznaczę.
Turson
5.04.2014, 09:17:21
Pokaż kod
13355
6.04.2014, 21:08:29
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
8.04.2014, 20:43:51
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
14.04.2014, 19:45:23
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
15.04.2014, 11:22:58
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.