Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] formularz select w pętli while, formularz select w każdym rekordzie z bazy danych
evangelion
post 9.05.2015, 18:23:51
Post #1





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

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


Witam.
Piszę aplikację do zarządzania zleceniami i w pewnym momencie stanąłem w martwym punkcie.
Założenie było takie, że aplikacja pobiera wprowadzone wcześniej rekordy z bazy danych i wyświetla je w poszczególnych polach tabeli. Każdy wiersz oprócz danych miał mieć także formularz select. Użyłem do tego tej samej pętli która wyświetla rekordy , żeby mieć selecta w każdym wierszu. Problem polega na tym, iż działa tylko select pierwszego wiersza, a chciałbym , żeby każdy select działał niezależnie w każdym wierszu powiedzmy , że początkowo miałby zmieniać kolory tła w wierszu dla poszczególnego statusu zlecenia.
  1. while($wynik = mysql_fetch_assoc($zapytanie)){
  2. echo '<tr id="row"><td>'.$wynik['zlecenie'].'</td><td>'.$wynik['imie'].'</td><td>'.$wynik['nazwisko'].'</td><td>'.$wynik['telefon'].'</td><td>'
  3. .'<select>
  4. <option value="-">status</option>
  5. <option value="1">przyjeto</option>
  6. <option value="2">realizacja</option>
  7. <option value="3">zrealizowano</option>
  8. <option value="4">zapłacono</option>
  9. </select>
  10. </td></tr>';
  11. }


Będę wdzięczny za podpowiedź.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
evangelion
post 14.05.2015, 17:07:02
Post #2





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

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


Oddać? To nie jest zlecenie komercyjne, ani nawet zlecenie. Piszę to sam dla nauki języka php. Początki są trudne, tak jak ze wszystkim. Natomiast będę siedział przy tym dopóki nie zadziała chodź by nie wiem ile czasu miałoby mi to zająć.
Mimo wszystko dziękuje za podpowiedzi.

Uparty jak osioł thumbsupsmileyanim.gif . Jeszcze nie przekazuje statusu zlecenia do bazy co w późniejszym czasie pewnie będzie konieczne tak jak pobieranie kolorów z tabeli. Na razie mam tyle
  1. <?php
  2.  
  3. //Łączenie się z bazą danych i tabelą
  4. $conect = mysql_connect('host','baza','hasło') or die ('<h2><Padł serwer</h2>');
  5.  
  6. mysql_query("SET NAMES utf8");
  7. mysql_query("SET CHARACTER SET utf8");
  8. mysql_query("SET collation_connection = utf8_polish_ci");
  9.  
  10. $db = mysql_select_db('moja baza') or die ('Padła baza');
  11.  
  12. $zapytanie = mysql_query('select * from Klient');
  13.  
  14.  
  15. //--Blok nadawania numerow zlecen
  16.  
  17. //nadawanie numeru zlecenia
  18. $data = date('Ym');
  19.  
  20. //zwieksza wartosc o 20
  21. $liczba = "20";
  22.  
  23. //laczy date z liczba
  24. $nr_zlecenia = $data.$liczba;
  25.  
  26. //sprawdza ilosc wierszy w bazie
  27. $ilosc_wierszy = mysql_num_rows($zapytanie);
  28.  
  29. //sumuje numer zlecenia zwieksza o ilosc wierszy w bazie i zwieksza o 1
  30. $zlecenie_id = $nr_zlecenia + $ilosc_wierszy + 1;
  31.  
  32. //-------------------------------
  33.  
  34. $kolor = $_POST['kolory'];
  35. $id = $_POST['id'];
  36.  
  37. while($wynik = mysql_fetch_assoc($zapytanie)){
  38. echo '<tr style="background-color:'.$kolor.'"><td>'.$wynik['zlecenie'].'</td><td>'.$wynik['imie'].'</td><td>'.$wynik['nazwisko'].'</td><td>'.$wynik['telefon'].'</td><td>'
  39. .'<form method="POST"><select name="kolory">
  40. <option value="-">status</option>
  41. <option value="red">przyjeto</option>
  42. <option value="green">realizacja</option>
  43. <option value="blue">zrealizowano</option>
  44. <option value="orange">zapłacono</option>
  45. </select>
  46. <input type="hidden" name="id" value="'.$wynik['id'].'">
  47. <input type="submit" value="zatwierdź">
  48. </form>
  49. </td></tr>';
  50. }
  51.  
  52.  
  53. echo $id;
  54.  
  55. //-----------------------------------
  56.  
  57. //Obsługa formularza
  58.  
  59. $imie = $_POST['imie'];
  60. $nazwisko = $_POST['nazwisko'];
  61. $telefon = $_POST['telefon'];
  62.  
  63. //Walidacja formularza
  64. $imie_s = strlen($imie);
  65. $nazwisko_s = strlen($nazwisko);
  66. $telefon_s = strlen($telefon);
  67.  
  68. if ($imie_s > 0 && $nazwisko_s > 0 && $telefon_s > 0){
  69. mysql_query("insert into `Klient`(`id`,`zlecenie`, `imie`, `nazwisko`, `telefon`) values ('','$zlecenie_id','$imie','$nazwisko','$telefon')");
  70. }
  71. else{
  72. echo "<h3 class=\"alert\">Wprowadź dane</h3>";
  73. }
  74.  
  75.  
  76. mysql_close($conect);
  77. ?>


Krok po kroku: zmieniam status zlecenia w wierszu trzecim i zmienia się kolor w wierszu trzecim i tak juz zostaje póki nie zmienie mu statusu na jakiś inny. zmieniam ststus z wierszu 10 analogicznie - pewnie tak jak działają niektóre programy do zarządzania zleceniami.
wchodzę sobie za dwa dni do aplikacji i patrzę ach te dwa mam na żółto czyli są do zrealizowania, te cztery na zielono czyli przyjęto do realizacji, następne osiem żółte czyli w tarskcie realizacji. itd.

To co napisałem przesyła w tej chwili numer id w zależności w jakim wierszu użyje forma - czyli zmieniam coś w wierszu z id 10 wyrzuca mi 10. Tak logicznie gdyby każdemu tr przyporządkować id = ID z bazy danych i na tej podstawie wykonać zmianę koloru tylko w tym wierszu w którym dane id jest zgodne z id wiersza w którym forma użyłem.
To tak nad tym myślę.
Go to the top of the page
+Quote Post

Posty w temacie


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 - 21:23