Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Zaznaczenie optiona
Forum PHP.pl > Forum > Przedszkole
user767
Mam problem z zaznaczeniem opcji w liście select generując pola option funkcją.
W programowaniu strukturalnym szło to przez while i funkcję. A tutaj pokazuje mi
na liście tylko tą opcję, którą chcę znaleźć, a nie wszystkie.
Ma to być opcja np. edycji nazwy produktu z listy

  1. // $ile_jest - to mysql_num_rows
  2. // $aa = $nazwy[$i]; - tablica z wszystkimi nazwami z bazy jeden wymiar
  3. // $bb - to co chce zaznaczyć, czyli w przyszłości zapisane w bazie i pobrane do tablicy nazwy, ja wybrałem Monitor
  4.  
  5. $cc = Array
  6. (
  7. 1 => "Monitor",
  8. 2 => "Oplata za internet",
  9. 3 => "Produkt"
  10. );
  11.  
  12. $bb = $cc[1]; // mój monitor
  13.  
  14.  
  15. print $nowy_formularz->wybor_start('nazwa', 'opis','','','','180');
  16.  
  17. for($i=0;$i < $ile_jest;$i++){
  18.  
  19. while($i < $ile_jest){
  20. $aa = $nazwy[$i];
  21.  
  22.  
  23. function sprawdz($aa, $bb){
  24. if($aa == $bb) return 'selected';
  25. else return;
  26. }
  27. sprawdz($aa, $bb);
  28.  
  29. print $nowy_formularz->dodaj_opcje('hidden', $nazwy[$i],'',sprawdz($aa, $bb));
  30. }
  31. }
  32. print $nowy_formularz->wybor_koniec();

nospor
for($i=0;$i < $ile_jest;$i++){

while($i < $ile_jest){
$aa = $nazwy[$i];


function sprawdz($aa, $bb){
if($aa == $bb) return 'selected';
else return;
}
sprawdz($aa, $bb);

print $nowy_formularz->dodaj_opcje('hidden', $nazwy[$i],'',sprawdz($aa, $bb));
}
}

Wytłumacz mi proszę każdą linijkę tego kodu a potem całość co to ma robić. Czytam i czytam i jeszcze raz czytam i nic z tego nie kumam.
Szczególnie intryguje mnie pętla while w pętli for, która notabene zawiera ten sam warunek wykonania.
Oraz interesująca jest deklaracji funkcji w pętli.
user767
  1.  
  2. ///////////////////////////////////////////////////////////////////////////////
  3.  
  4.  
  5. $cc = Array
  6. (
  7. 1 => "Monitor",
  8. 2 => "Oplata za internet",
  9. 3 => "Produkt"
  10. );
  11.  
  12. $bb = $cc[1];
  13.  
  14. function sprawdz($nazwy, $bb){
  15. if($bb == $nazwy) return 'selected';
  16. else return;
  17. }
  18. sprawdz($nazwy, $bb);
  19.  
  20. print $nowy_formularz->wybor_start('nazwa', 'opis','','','','180'); /* dodanie selectu start_select($name,$label,$row='',$multiple='', $id='',$width) */
  21. for($i=0;$i < $ile_jest;$i++){
  22.  
  23. print $nowy_formularz->dodaj_opcje('hidden', $nazwy[$i],'',sprawdz($nazwy[$i]));
  24. }
  25.  
  26. print $nowy_formularz->wybor_koniec(); /* zamkniecie selectu */
  27. //////////////////////////////////////////////////////////////////////////////
  28.  
  29.  


Lista produktów jest, zaznacznia nie ma, w źródle nie ma ani selected, ani błędów, ponieważ obsługę błędów mam włączoną.
Próbuję znaleźć jak wykonać tą funkcję sprawdz(), ale nic nie mogę znaleźć.
To ma wstawić w listę optiony z nazwami z bazy oraz przyrównać i znaleźć tego, którego chce i zaznaczyć.
nospor
1) Co to jest $nowy_formularz?
2) Jak wygląda funkcja $nowy_formularz->dodaj_opcje
3) Masz tablicę $nazwy? Bo w kodzie jej nie widzę, jedyną tablicę jaką widzę to $cc
user767
jest to funkcja do tworzenia listy select formularza klasy formularz_tworzenie
1) wywołanie metody klasy
2) public function dodaj_opcje($value,$label, $id, $sprawdz) { i tu podstawiam do html smile.gif }
3) tak, z bazy danych

  1. (
  2. [0] => Monitor
  3. [1] => Oplata za internet
  4. [2] => Monitor
  5. [3] => Oplata za internet
  6. [4] =>
  7. [5] => Produkt 2
  8. [6] => monitor
  9. [7] => Produkt 3
  10. [8] => 123
  11. [9] =>
  12. )


nospor
ad1) $nowy_formularz to jest obiekt a nie żadne wywołanie metody klasy. Miałem na myśli co to za klasa.... dobra, nie ważne
ad2) Chodziło mi o funkcję a nie o jej pierwszą linijkę.

print $nowy_formularz->dodaj_opcje('hidden', $nazwy[$i],'',sprawdz($nazwy[$i]));
Przecież do sprawdz przekazujesz tylko jeden parametr. Jakim cudem ma ci to działać?
user767
jak wstawić w takim razie parametry po kolei z tablicy zamiast cała tablicę questionmark.gif
wydaje mi się, że ten kod jest błędny oneeyedsmiley02.png
nospor
No jesli chcesz to porównywać do bb to masz jeszcze to bb dodać
  1. print $nowy_formularz->dodaj_opcje('hidden', $nazwy[$i],'',sprawdz($nazwy[$i],$bb));
user767
problem rozwiązany, jednak jest jedna drobna wada jeśli użytkownik zmieni opcję w selekcie i odświeży stronę ta opcja zostaje i nie wskakuje poprzednia. Obok mam zwykły select i wskakuje poprzednia.
nospor
Na początku napisałeś
Cytat
ani błędów, ponieważ obsługę błędów mam włączoną.

Co rozumiesz pod pojęciem "włączona obsługa błędów"?

Bo jakbyś miał włączone wyświetlanie błędów, to byś dostawał WARNING dlatego, że nie dodałeś tego paramtru do funkcji sprawdz. Problem by był rozwiązany milion postów wcześniej.

Zapoznaj się z tym tematem
Temat: Jak poprawnie zada pytanie
włącz to wyświetlanie błędów oraz zastosuj się do innych wskazówek tam podanych.
user767
rozw.
  1. for($i=0;$i < $ile_jest;$i++){
  2. print $nowy_formularz->dodaj_opcje($tablica[$i]['id'],$tablica[$i]['nazwa'],$operacje->sprawdz($tablica[$i]['nazwa'],$zmienna));
  3. }
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.