Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Dynamiczne generowanie list rozwijanych
Forum PHP.pl > Forum > Przedszkole
php_amator
Witam ponownie,
Tu wasz niezapomniany php_amator smile.gif

Panowie, jestem początkującym PeHaPowcem więc wybaczcie mi pewne może przygłupie
pytania ale poradzić się doświadczonych to lepsze niż kopanie po manualach z których w początkowej fazie nauki I tak niewiele wynika.
Tak więc ...
Wymyślam różne rzeczy, niektóre działają tak jak to sobie wymyśliłem a czasem nie.
Dzisiaj napisałem skrypt który wyszukuje w bazie pola które są wolne oraz zajęte. Ma to służyć do zapamiętywania położenia palet w magazynie I w razie potrzeby wprowadzać przesunięcia w/w z jednego miejsca w drugie.

Tworzmy dwie dynamiczne rozwijane listy, jedna pokazuje te zajęte miejsca z których pewne dane maja być przeniesione do drugiej - która pokazuje miejsca "wolne"

W moim zamyśle ma to działać w ten sposób:
Z pierwszej listy wybieram wartość która mnie interesuje, nastepnie klikam na tę któa mnie interesuje w drugiej I koncowym efektem ma byc przepisanie wartości z pierwszej do drugiej. Sam process kasowania z jednego miejsca I zapisu w drugim nie jest jeszcze uruchomiony, narazie staram się uzykać możliwe najlepiej działające generowanie list.

Teraz uwaga oto kod mojego pomysłu:
  1.  
  2. require("includes/connection.php");
  3.  
  4. $SQL = "SELECT * FROM places ORDER BY ID ASC";
  5. $IDA = $AFR['ID'];
  6. $IDB = $BFR['ID'];
  7. $place = $_POST['pla'];
  8. $pallet = $_POST['pal'];
  9.  
  10. $RES = mysql_query($SQL);
  11. $RET = mysql_query($SQL);
  12.  
  13. // ------------ lista pierwsza -------------
  14.  
  15. echo '<form method="post" type="text"> Move from: <select name="pla"><br>';
  16.  
  17. while($AFR = mysql_fetch_assoc($RES)){
  18. if(!$AFR['pallet_nr']) {} else {echo '<option >'.$AFR['place'].' '.$AFR['pallet_nr'].'</option><br>';
  19. }
  20.  
  21. if(!$IDA) { }
  22. }
  23. echo $AFR['palet_nr'].'</select>';
  24.  
  25. // ------------- lista druga ---------------
  26.  
  27. echo '<form method="post" type="text"> Move to: <select name="pal"><br>';
  28.  
  29. while($BFR = mysql_fetch_assoc($RET)){
  30. if(!$BFR['pallet_nr']) {echo '<option >'.$BFR['place'].'</option><br>';
  31. } else {
  32. }
  33. }
  34. if(!$IDB) {
  35. }
  36. echo '</select><br>';
  37. echo '<button class="button" type="submit" name="Submit" value="Submit">Move</button></form>'; // ------------ przycisk wysyłania -----------
  38.  


OK ?
Super, tak wygląda amatorska procedura a Ja chciałbym żeby mnie ktoś oświecił jak prościej można to zrobić albo co poprawić I jak powinna wyglądać część przepisująca dane w jednego miejsca do drugiego w BazieDanych smile.gif

Pozdrawiam
PHP_Amator smile.gif
-xxx-
Kod jest bez sensu...
Wykonujesz to samo zapytanie 2x- po cholerę?

  1. if(!$AFR['pallet_nr']) {} else {echo '<option >'.$AFR['place'].' '.$AFR['pallet_nr'].'</option><br>';
  2. if(!$BFR['pallet_nr']) {echo '<option >'.$BFR['place'].'</option><br>'; }



czyli

  1. if(! ...['pallet_nr']) { echo '<option >'.$BFR['place'].'</option><br>'; } else { echo '<option >'.$AFR['place'].' '.$AFR['pallet_nr'].'</option><br>'; }
Gość
popraw sobie teraz kod z poprawnymi juz zmiennymi.
Posio
Pobieranie wyników z bazy i jakaś pętla zależnie od tego jak pobierzesz wyniki.
eg.
  1. echo '<select>';
  2. foreach($sql as $s) {
  3. echo '<option>'.$s['miejsce'].'</option>';
  4. }
  5. echo '</select>';

to tylko przykład smile.gif
A to, czy miejsce jest wolne czy nie, załatw w bazie danych, dodaj pole np status - boolean przyjmij ze 0- wolna 1-zajęta i tworzysz 2 zapytania i wyświetlasz opcje za pomocą pętli smile.gif
Tak zerkam na twój kod, i to nie jest ani czytelne, ani do konca nie wiadomo o co chodzić, no i te zmienne z wielkiej litery. Niby php nie narzuca uzywania małych, ale wygląda to schludniej, czytelniej, no i łatwiej Ci później będzie przejsc na jakiś Język gdzie nazewnictwo jest już troszkę narzucone. Z tego co mogę jeszcze pomóc, to dla lepszej orientacji w kodzie bo teraz może pamiętasz wszystkie skróty np. $RES i $RET ale gdy przyjdzie coś większego to już się nie połapiesz.
Dlatego zamiast $AMK używaj czegoś w stylu $alaMaKota albo $ala_ma_kota
php_amator
Cytat(Posio @ 3.09.2013, 07:03:58 ) *
Pobieranie wyników z bazy i jakaś pętla zależnie od tego jak pobierzesz wyniki.
eg.
  1. echo '<select>';
  2. foreach($sql as $s) {
  3. echo '<option>'.$s['miejsce'].'</option>';
  4. }
  5. echo '</select>';

to tylko przykład smile.gif
A to, czy miejsce jest wolne czy nie, załatw w bazie danych, dodaj pole np status - boolean przyjmij ze 0- wolna 1-zajęta i tworzysz 2 zapytania i wyświetlasz opcje za pomocą pętli smile.gif
Tak zerkam na twój kod, i to nie jest ani czytelne, ani do konca nie wiadomo o co chodzić, no i te zmienne z wielkiej litery. Niby php nie narzuca uzywania małych, ale wygląda to schludniej, czytelniej, no i łatwiej Ci później będzie przejsc na jakiś Język gdzie nazewnictwo jest już troszkę narzucone. Z tego co mogę jeszcze pomóc, to dla lepszej orientacji w kodzie bo teraz może pamiętasz wszystkie skróty np. $RES i $RET ale gdy przyjdzie coś większego to już się nie połapiesz.
Dlatego zamiast $AMK używaj czegoś w stylu $alaMaKota albo $ala_ma_kota


Hej, dziękuję za podpowiedzi, bardzo mi się przydały jeśli chodzi o konstrukcję warunków natomiast nie bardzo ale działa tak jak chciałem. Mianowicie jak wspomniałem chodzi o wygenerowanie 2 list z których pierwsza pokazuje miejsca gdzie znajdują się palety, druga zaś miejsca wolne.

natomiast jak sugerujesz wpisywanie czy jest zajęte czy nie nie wchodzi w gre ponieważ musze wiedzieć nieco więcej, muszę wiedzieć jaki jest numer palety która w danym miejscu się znajduje.
Podaj jakiś prosty przykład jak to powinno wyglądać. Jak już pisałem jestem bardzo "młodym" PeHaPowcem, dopiero sie uczę zesztą sam I wszystko co wiem na temat PHP to że jest smile.gif
Dlatego właśnie zapisaelm się na to forum żeby słuchając doświadczonych nauczyć się nieco więcej I nieco szybciej smile.gif
Oczywiście nie chcę "ryby" wolę "wedkę" I sam sobie "nałapię ryb".
Więc do dzieła smile.gif

Napisałe się, napisałem I w końcu w międzyczasie przyglądałem się temu co napisałeś . Zrozumiałem I faktycznie, te dwa warunki wystarczą aby wybrać w bazy pola z I bez palet. Ale czy w jednym zapytaniu oba warunki da się zrealizować aby wygenerowały się dwie osobne listy
rozwijane ?

A w jaki sposób ?

Pozdrawiam
amator


Nie moge sobie poradzić ....
jeśli samo generowanie 2 list daję radę zrobić to już wysyłanie danych do bazy coś mi nie idzie I nie wiem dlaczego.

Wziąłem się za sposób, żeby być pwenym jakie dane przechodzą a jakie nie.
Na początku sprawdzam czy przechodzą mi dane w zmiennych POST - przechodzą
następnie dla porządku albo I nie przepisuje dane z POST do zmiennych newplace I oldplace
co widać na załączonym obrazku

  1. require('includes/connection.php');
  2. echo "<br>------------------------------------------------------------<br>";
  3.  
  4. echo $_POST['hired'].' pełne ';
  5.  
  6. echo $_POST['free'].' puste <br>';
  7.  
  8. echo "<br>------------------------------------------------------------<br>";
  9.  
  10. $oldplace = $_POST['hired'];// próbowałem podstawiać zamiast danych z $_POST konkretne dane ale dalej nie pomaga, przy próbie odczytu z bazy nic sienie dzieje
  11.  
  12. $newplace = $_POST['free'];
  13. echo "<br>------------------------------------------------------------<br>";
  14.  
  15. echo $oldplace.' oldplace ';// tu pokazuje mi przepisane dane z $_POST'ów
  16.  
  17. echo $newplace.' newplace <br>';
  18.  
  19. echo "<br>------------------------------------------------------------<br>";
  20.  
  21. // odczyt numeru palety znajdującej się na miejscu $oldplace
  22.  
  23.  
  24.  
  25. $pytanie = "SELECT pallet_nr FROM places WHERE place_id = $oldplace"; // I tu nic nie otrzymuję
  26.  
  27. $odczyt = mysql_fetch_assoc($pytanie);
  28.  
  29. while($dane=mysql_query($odczyt)){ echo $dane['place_id'];
  30.  
  31. if(!$dane['place_id']) {
  32.  
  33. die("blad odczytu...");}
  34. }
  35.  
  36. echo ' Miejsce skladowania: '.$dane['place_id'].' Paleta nr: '. $dane['pallet_nr'].' id rekordu: '.$dane['id'];
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43. //$update = "UPDATE places SET pallet_nr = $dane[pallet_nr] WHERE place_id = $_POST[free]";
  44.  
  45. //if(!isset($dane['pallet_nr'])){ echo 'Coś nie halo!';}
  46.  
  47. //$result=mysql_query($update);
  48. // if(!$update) {
  49. // echo "There was an error";
  50. // if($update) {
  51. // echo 'F.... off ... its done ';
  52. // }
  53. // }
  54. //echo $oldplace.'- '.$dane['place_id'].' was transferred to: '.$newplace.'- '.$dane['pallet_nr'].'<br>';
  55.  
  56. //echo "<br>------------------------------------------------------------<br>";
  57.  


Gdzie tkwi błąd questionmark.gif
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.