Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Aktualizacja rekordów tylko zaznaczonych checkboxem
13355
post 3.04.2014, 21:50:01
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 3.11.2013

Ostrzeżenie: (0%)
-----


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>
Go to the top of the page
+Quote Post
memory
post 3.04.2014, 23:08:04
Post #2





Grupa: Zarejestrowani
Postów: 616
Pomógł: 84
Dołączył: 29.11.2006
Skąd: bełchatów

Ostrzeżenie: (0%)
-----


  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.'" ';

Go to the top of the page
+Quote Post
Turson
post 4.04.2014, 07:37:49
Post #3





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


memory, pomyliłeś ciapki przy tak smile.gif
Go to the top of the page
+Quote Post
13355
post 5.04.2014, 09:00:16
Post #4





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 3.11.2013

Ostrzeżenie: (0%)
-----


Dzięki za podpowiedzi, poszedłem trochę dalej. Aktualizuje mi się w bazie wybrany rekord, ale tylko jeden, bez względu ile zaznaczę.
Go to the top of the page
+Quote Post
Turson
post 5.04.2014, 09:17:21
Post #5





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Pokaż kod
Go to the top of the page
+Quote Post
13355
post 6.04.2014, 21:08:29
Post #6





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 3.11.2013

Ostrzeżenie: (0%)
-----


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>
Go to the top of the page
+Quote Post
nospor
post 8.04.2014, 20:43:51
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
13355
post 14.04.2014, 19:45:23
Post #8





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 3.11.2013

Ostrzeżenie: (0%)
-----


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.

Ten post edytował 13355 14.04.2014, 19:46:40
Go to the top of the page
+Quote Post
nospor
post 15.04.2014, 11:22:58
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




print_r($_POST['uwagi_b']);
A zobaczysz ze tam jest tablica.Musisz wiec po niej iterowac


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 05:42