![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 10.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Mam baze danych w której jest tabela 'lekarze' i zawira pola: lekarzID, nazwisko, specjalizacja, pon, wto, sro, czw, pia. Zrobilem strona która wyswietla te dane w polu tkstowym aby mozna je bylo edytowac po stronie przegladarki. tak wyglada kod z pominieciem tabel, tekstów itp.
Kod <?php $connection = @mysql_connect ("127.0.0.1","root",""); $ins = @mysql_select_db(bd_przychodnia, $connection); mysql_query('SET CHARSET latin2'); $zapytanie = "SELECT * FROM lekarze"; $wykonaj = mysql_query ($zapytanie); while($wiersz=mysql_fetch_array ($wykonaj)) { echo '<tr> <td width=20%>'; echo '<input type="text" size="29" name="nazwisko" value="'.$wiersz['nazwisko'].'">'; echo '<br>'; echo '<input type="text" size="29" name="specjalizacja" value="'.$wiersz['specjalizacja'].'">'; echo '</td>'; echo '<td width=10%>'; echo '<input type="text" name="pon" value="'.$wiersz['pon'].'">'; echo '</td>'; echo '<td width=10%>'; echo '<input type="text" name="wto" value="'.$wiersz['wto'].'">'; echo '</td>'; echo '<td width=10%>'; echo '<input type="text" name="sro" value="'.$wiersz['sro'].'">'; echo '</td>'; echo '<td width=10%>'; echo '<input type="text" name="czw" value="'.$wiersz['czw'].'">'; echo '</td>'; echo '<td width=10%>'; echo '<input type="text" name="pia" value="'.$wiersz['pia'].'">'; echo '</td> </tr>'; } ?> Wszystko jest umieszczone w formularzu post i po nacisnieciu przyciusku Edytuj, przechodze do pliku edit.php ktory powinien zmienic wsystkei dane, tylko nie wiem jakiej uzyc instrukcji aby wszytskie pola w tabeli lekarze sie zmienily zgodnie z tym co wpisalem w formularzu :/ gdyz mi sie zmienia tylko ostatni wiersz :/ czy ktos moglby mi pomóc? Gdyż wiem jak zrobić edycje gdy mamy stala ilosc rekordow a w tym przypadku zalezy to od ilosci lekarzy zapisanych w bazie :/ |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 289 Pomógł: 77 Dołączył: 5.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
po przesłaniu formularza w obecnej formie daj podgląd na tablicę $_POST (print_($_POST)) - zobaczysz, że masz w niej tylko ostatni "rekord". Więc nazwy inputów musisz zrobić w formie tablicy:
i po takim manewrze, przejrzyj jeszcze raz zawartość tablicy $_POST. Bedziesz miał pogrupowane dane. Trzeba będzie je jeszcze raz przegrupować zgodnie z identyfikatorem i w pętli dokonać UPDATE w bazie. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 10.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
No tak idnetyfikator jest (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Tylko wlasnie najbardziej mnie interesuje jak robić ten UPDATE w petli :/ Jak mniej wiecej ma wygladac ta instrukcja to ja sobie ja na swoje potrzeby przerobie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 289 Pomógł: 77 Dołączył: 5.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
przykładowo możesz to zrobić tak:
nie jest to coprawda super optymalne ale mozesz zobaczyć mniej więcej o so chozi. Najpierw pogrupujesz sobie dane z posta, potem dla każdego elementu nowo wygenerowanej tablicy robisz update w bazie. Pozdr |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 10.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Przed chwila zacząlem z tym kombinować i wyskakuje mi taki komunikat:
Warning: Invalid argument supplied for foreach() in c:\program files\easyphp1-8\www\password\strona\approf3edit.php on line 10 chodzi o ten punkt w kodzie: foreach ($value as $k => $v) |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
_olo_1984, jak ty chcesz w wartości tablicy $_POST wsawić tablice?
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 561 Pomógł: 72 Dołączył: 15.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Sprawdzaj co jest w $value, w tym przypadku najprawdopodobniej nie jest to tablica.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 289 Pomógł: 77 Dołączył: 5.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
_olo_1984, jak ty chcesz w wartości tablicy $_POST wsawić tablice? dokładnie w ten sposób, np.: name="nazwisko[]" dodatkowo, w naszym przypadku trzeba utworzyć tablicę z kluczem jako id lekarza. Co do błędu który się pojawił to na początku trzeba sprawdzić sobie co jest w tablicy $_POST, w tym przypadku tak jak napisał kolega wyżej $value nie jest tablicą. Kolega szasza niech przeanalizuje sobie przykład: (1.php)
pozdr |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
dokładnie w ten sposób, np.: name="nazwisko[]" _olo_1984, Tobie się najwyraźniej coś pomyliło. Odpal sobie taki kod:
z GET/POST jako tablic można używać parametrów, a nie ich wartości... // edit czyli: dane[]=wartosc1&dane[]=wartosc2 a nie: dane=wartosc1[]&dane=wartosc2[] Ten post edytował pyro 28.05.2009, 14:29:20 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 289 Pomógł: 77 Dołączył: 5.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
odpal sobie kod, który napisałem. Nie mówię o $_GET tylko $_POST
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Sorry, Ty właśnie odwoływałeś się do PARAMETRÓW, a nie WARTOŚCI, tylko nie spojrzałem co robi Twój kod, mój błąd (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 10.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
witam. zrobilem wszystko wedlug instrukcji i dziala (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) wszystkie pola sie edytuja tak jak powinny, ale nadal nie wiem o co chodzi z tym komunikatem :/ czyli:
Warning: Invalid argument supplied for foreach() in c:\program files\easyphp1-8\www\password\strona\approf3edit.php on line 7 Co sie tyczy wiersza: foreach ($value as $k => $v) Moje pliki wygladaja nastepujaco. Ten z formularzem: CODE <form method="post" action="approf3edit.php"> <table border="1" width="80%" cellspacing="0" cellpadding="0" bordercolorlight="#000000"> <tr> <td width="96%" colspan="6" bgcolor="#3366FF"> <p align="center"> <font size="3" color="#FFFFFF"><b>Dyżury lekarzy</b></font></td> </tr> <tr> <td width="30%" align="center" bgcolor="#E1EFFF"> <p align="center"><font size="3"> Lekarz / specjalizacja</font></td> <td width="10%" align="center" bgcolor="#E1EFFF"> <p align="center"> <font size="3">Poniedziałek</font></td> <td width="10%" align="center" bgcolor="#E1EFFF"> <font size="3">Wtorek</font></td> <td width="10%" align="center" bgcolor="#E1EFFF"> <font size="3">Środa</font></td> <td width="10%" align="center" bgcolor="#E1EFFF"> <font size="3">Czwartek</font></td> <td width="302" align="center" bgcolor="#E1EFFF"> <font size="3">Piątek</font></td> </tr> <?php $connection = @mysql_connect ("127.0.0.1","root",""); $ins = @mysql_select_db(bd_przychodnia, $connection); mysql_query('SET CHARSET latin2'); $zapytanie = "SELECT * FROM lekarze"; $wykonaj = mysql_query ($zapytanie); while($wiersz=mysql_fetch_array ($wykonaj)) { echo '<tr> <td width=20%>'; echo '<input type="text" size="29" name="nazwisko['.$wiersz['lekarzID'].']" value="'.$wiersz['nazwisko'].'">'; echo '<br>'; echo '<input type="text" size="29" name="specjalizacja['.$wiersz['lekarzID'].']" value="'.$wiersz['specjalizacja'].'">'; echo '</td>'; echo '<td width=10%>'; echo '<input type="text" name="pon['.$wiersz['lekarzID'].']" value="'.$wiersz['pon'].'">'; echo '</td>'; echo '<td width=10%>'; echo '<input type="text" name="wto['.$wiersz['lekarzID'].']" value="'.$wiersz['wto'].'">'; echo '</td>'; echo '<td width=10%>'; echo '<input type="text" name="sro['.$wiersz['lekarzID'].']" value="'.$wiersz['sro'].'">'; echo '</td>'; echo '<td width=10%>'; echo '<input type="text" name="czw['.$wiersz['lekarzID'].']" value="'.$wiersz['czw'].'">'; echo '</td>'; echo '<td width=10%>'; echo '<input type="text" name="pia['.$wiersz['lekarzID'].']" value="'.$wiersz['pia'].'">'; echo '</td> </tr>'; } ?> </td> </tr> </table> <input type="submit" value="Zmień dane" name="submit"> </form> I ten to edycji czyli approf3edit.php
Ten post edytował szasza 29.05.2009, 00:23:19 |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 561 Pomógł: 72 Dołączył: 15.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Chociaż to rozwiązanie na szybko i powinno się to zrobić inaczej to w twoim przypadku i tak nie zauważysz różnicy.. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) zrób tak:
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 10.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Teraz mi pokazuje ten sam blad tylko ze w wierszu
if (is_array($value)){ :/ |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 561 Pomógł: 72 Dołączył: 15.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Chyba to jest mało możliwe, ale pokaż cały kod z zastosowaną poprawką.
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 10.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Ale to chyba niw tak ma wygladac :/ Bo nawet danych mi nie zapisuje do bazy. |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 289 Pomógł: 77 Dołączył: 5.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
szasza weź no rusz głową, to is_array daj w pętli foreach, po drugie, weź daj dumpa tablicy $_POST na początku skryptu to będziesz widział, co przesyłasz.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 12.10.2025 - 06:05 |