Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kilka update rekordow przez formularz
Forum PHP.pl > Forum > PHP
JarekG
Witam.
Mam taka sytuacje. Formularz do edytowania rekordow w bazie. Zgodnie z roznymi parametrami wyswietlone jest od 1 wzwyz rekordow w formie formularza <input type='text'...>. Skrypt wyciaga sobie odpowiednie dane i wprowadza w value wartosci zmiennych. Wszystko ladnie pieknie.
Teraz tylko potrzebuje zrobic cos takiego. Mam powiedzmy taka sytuacje (tabela zawierajaca elementy nazwa, miasto, wiek):


Kod
NAZWA | MIASTO | WIEK
Jasiu | 123    | 1234
Asia  | 555    | 56
Tomek | 12     | 23

Chce zmienic sobie przykladowo Jasiu na Jasiu1, Wiek Asi z 56 na 12, miasto Tomka z 12 na Poznan. Problem pojawia sie w tym, gdyz nie mam za bardzo pomyslu, jak rozwiazac problem kilkukrotnego update-u. Zgodnie z tym w jaki sposob skrypt wyciaga dane do edycji z bazy danych, oznacza ze w $_POST['id']; ma zapisane identyfikatory Jasia, Asi i Tomka. Jednak przy wywolaniu skryptu juz po wyedytowaniu pol, w logach bazy widze ze zapytanie wychodzi... oczywiscie... ale w momencie where id="$_POST['id']; wstawia tylko 1 numer identyfikujacy (dla Jasia np. jest to numer id=8).
Pytanie jest takie. W jaki sposob rozwiazac tego typu problem ? Zeby wywolal 3 zapytania do bazy update zmieniajac za kazdym razem identyfikatory lub inne zmienne. Musialbym jakos w petle wsadzic mysql_query. Nie mam jednak zadnego pomyslu.
Prosze Was o pomoc w tej sprawie.
Pozdrawiam
JarekG
wipo
A takie coś:
if ($_POST['zmien']){
$id=$_POST['id'];
$imie=$_POST['imie'];
$wiek=$_POST['wiek'];
$miasto=$_POST['miasto'];
for($x=0;$x<count($id);$x++){
mysql_query("update tabela set imie='".$imie[$x]."', miasto='".$miasto[$x]."', wiek='".$wiek[$x]."' where id=".$id[$x]);
}

<form action="" method="post">
$a1=mysql_query("select * from tabela where co_chce_wyciagnac");
while($a2=mysql_fetch_array($a1)){
?><input type="hidden" name="id[]" value="<?=$a2['id'];?>">
<input type="text" name="imie[]" value="<?=$a2['imie'];?>">
<input type="text" name="wiek[]" value="<?=$a2['wiek'];?>">
<input type="text" name="miasto[]" value="<?=$a2['miasto'];?>">

...itd
<input type="submit" name="zmien" value="Zmien"></form>
JarekG
Cytat(wipo @ 29.11.2006, 17:08:17 ) *
for($x=0;$x<count($id);$x++){
mysql_query("update tabela set imie='".$imie[$x]."', miasto='".$miasto[$x]."', wiek='".$wiek[$x]."' where id=".$id[$x]);

Nie sprawdzalem w praktyce, ale oceniam, ze bedzie chodzic, pod jednym warunkiem... jak id bedziesz mial pokolei poukladane. Jesli Jasiu bedzie mial id=8, Ania id=22, Tomek id=1023 to jest wielka kupa smile.gif. Powiedzmy, ze id nie jest tutaj najwazniejsze... tzn. po czesci jest, ale procz ID wszsycy maja jeszcze dodatkowe parametry identyfikujace, ktore wskazuja wlasnie na te osoby. Tyle, ze po wykonaniu submita formularza, dziwnym trafem moge zmieniac tylko i wylacznie ostatni wiersz (ostatnie hierarchicznie ID). Poprzednie pokazuje, ze zmienil, a w logu mysql pokazuje ze wypelnia zmiennymi ostatni wpis w formularzu.
Jeszcze musze sie z tym przespac smile.gif.
Mimo wszystko dziekuje za pomoc smile.gif.

p.s. myslalem jeszcze zeby w formularzu odpowiednio wyselectowac sobie identyfikatory do zmiennej tablicowej i jechac przez tablice... tylko rodzi mi sie w glowie pytanie... czy aby na pewno bedzie to dzialac automatycznie, czy bede musial siedziec w bazie i przeklepywac potem polowe rzeczy recznie. A co do zmiennej tablicowej... to tez za bardzo nie mam pomyslu jak to wyciagnac smile.gif... ale to szczegol.
wipo
Widzę że nie oglądałeś dokładnie
W formularzu jak masz nazwę id[] to określa to iż są one numerowane kolejno (nie ważne jakie id ma w bazie)
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.