Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Menu rozwijane - ilosc
Forum PHP.pl > Forum > Przedszkole
wespazjon
Mam w skrypcie ktory chce przerobic menu rozwijane - ilosc przedmiotow (jakie chce zamowic).
W menu tym dostepny jest wybor od 1 do 20 sztuk - problem polega na tym, ze nie ma to zadnego zwiazku ze stanem magazynowym produktu.
Nabywca moze zakupic 20 produktow mimo iz na stanie sa np. 2.

  1. echo '<select name="quantity" id="quantity" class="quantity">
  2. <option value="1" selected>1</option>
  3. <option value="2">2</option>
  4. <option value="3">3</option>
  5. <option value="4">4</option>
  6. <option value="5">5</option>
  7. <option value="6">6</option>
  8. <option value="7">7</option>
  9. <option value="8">8</option>
  10. <option value="9">9</option>
  11. <option value="10">10</option>
  12. <option value="11">11</option>
  13. <option value="12">12</option>
  14. <option value="13">13</option>
  15. <option value="14">14</option>
  16. <option value="15">15</option>
  17. <option value="16">16</option>
  18. <option value="17">17</option>
  19. <option value="18">18</option>
  20. <option value="19">19</option>
  21. <option value="20">20</option></select>


ilosc produktow znajduje sie w zmiennej $data[5]
Czy musialbym to zrobic na zasadzie:

if $data[5] == 1 i tu dodawac te pola:

echo '<select name="quantity" id="quantity" class="quantity">
<option value="1" selected>1</option>
</select>

Czy mozna by to zrobic w jakiejs madrzejszej formie?
nospor
FORem wygeneruj tylko tyle option, jaki masz max w $data[5]
wespazjon
No moglbym zrobic for-em.
Nie wiem czy to dobrze ogarniam ale:

  1. echo '<select name="quantity" id="quantity" class="quantity">
  2. for($liczbaproduktow=0;$liczbaproduktow<=$data[5];$liczbaproduktow++)
  3. {
  4. moje instrukcje
  5. }


Dobra mialbym tu petle for ale jak to zrobic z select - czy cos takiego?

  1. {
  2. echo '<option value="';
  3. echo $liczbaproduktow;
  4. echo '">';
  5. echo $liczbaproduktow;
  6. echo "</option>";
  7.  
  8. }


Czyli razem mialoby to tak wygladac?

  1. echo '<select name="quantity" id="quantity" class="quantity">
  2. for($liczbaproduktow=0;$liczbaproduktow<=$data[5];$liczbaproduktow++)
  3. {
  4. echo '<option value="';
  5. echo $liczbaproduktow;
  6. echo '">';
  7. echo $liczbaproduktow;
  8. echo "</option>";
  9. }
nospor
FOR ma byc kodem php a nie tekstem w ECHO.
wespazjon
Te pierwsze echo jest wyciete na zywca ze skryptu - do czegos w nim sluzy.

Niestety ten skrypt jest strasznie nie czytelny i to zarowno w edytorze tekstu jak i w bluefish.

To przyklad z ktorego wycialem ten fragment z produktami:

Przyklad kodu

Tak wyglada caly skrypt i w nim szukam "baboli"
nospor
Ja nie powiedziale, ze to ECHO niczemu nie sluzy... Ja powiedzialem, ze FOR ma byc poza ECHO a nie w ECHO.... jak FOR bedzie w ECHO to bedzie traktowany jako tekst a nie jako komenda php.
wespazjon
Przegladalem forum - znalazlem dosc podobny temat - wyswietlanie minut w polu select:

  1. for ($i = 0; $i <= 59; $i++) {
  2. if ($i%5==1) { // % to reszta z dzielenia tzw. modulo
  3. $liczba = ($i < 10) ? '0'.$i : $i;
  4.  
  5. echo '<option value="'.$liczba.'">'.$liczba.'</option>';
  6. }
  7. }


Jak widac realizacja za pomoca funkcji echo.

Nie jestem biegly w PHP dlatego tez pisze w dziale przedszkole - nie musze miec gotowej odpowiedzi ale jakas mala podpowiedz smile.gif
Bede pisal ten temat az znajde rozwiazanie problemu he he
nospor
Cytat
Jak widac realizacja za pomoca funkcji echo.
Zacznij wkoncu czytac ze zrozumieniem.... Ja nie mowie ze nie masz uzywac ECHO w FOR.... Ja mowie, ze FOR nie moze byc tekstem w ECHO, co do tej pory miales :/

  1. echo 'blabla //tutaj nie zamknales tekstu dla ECHO przez co wszystkie inne ponizej leci jako tekst w echo
  2. FOR blabla //ten FOR leci jako tekst w echo... caly czas ci o tym mowie :/

Tutaj masz FOR w tekscie ECHO, Tak nie moze byc! Tlumacze ci to od X postow....

Tak ma byc:
  1. echo 'blabla'; //tu zamykasz tekst echo
  2. FOR //tutal lecisz sobie FORem poza echo i w tym for juz jako komendy mozesz miec echo, a nawet musisz.
wespazjon
No nie wiem czy dobrze ujalem ten wycinek kodu - moze wycialem go za duzo lub za malo - tu jest jego wieksza czesc.
Jak widac przed pierwsza opcja select znajduje sie opcja echo - tak jak wczesniej to podalem.

echo '<td align="right"><span class="itemtext">'.$lang['quantity'].':</span></td>'; echo '<td>'; echo '<select name="quantity" id="quantity" class="quantity"><option value="1" selected>1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option></select>'

Teraz jak ta opcja bedzie nie poprawna to jak zrobic ja poprawna.

To ta opcja bedzie dzialac czy raczej nie powinna?

  1. [b]echo[/b] '<select name="quantity" id="quantity" class="quantity">
  2. for($liczbaproduktow=0;$liczbaproduktow<=$data[5];$liczbaproduktow++)
  3. {
  4. echo '<option value="';
  5. echo $liczbaproduktow;
  6. echo '">';
  7. echo $liczbaproduktow;
  8. echo "</option>";
  9. }


Czy moze skrocic kod w nawiasach do postaci:

  1. echo '<option value="'.$liczbaproduktow.'">'.$liczbaproduktow.'</option>';


i to po prostu tyle.

Wchodzi tu problem o ktorym wspomniales co z tym echo?
nospor
Przeciez ci napisalem, podalem nawet na przykladowym kodzie, ze masz zamknac ECHO zanim wejdziesz w FOR... Staraj sie czytac i analizowac to co ci podają

NIe:
echo '<select name="quantity" id="quantity" class="quantity">

a:
echo '<select name="quantity" id="quantity" class="quantity">';//TU JEST ZAMKNIECIE ECHO. Pisalem o tym na innym przykladzie w poprzednim poscie
//i dopiero teraz moze leciec sobie FOR.
wespazjon
Dobrze masz racje.

Podmienilem ten kod - nie pokazuje kompletnie zadnego bledu ale nie wyswietla tez calego produktu - tak jakby cala biblioteka wyswietlania produktu przestala dzialac sad.gif

  1. echo '<td align="right"><span class="itemtext">'.$lang['quantity'].'
  2. :</span></td>'; echo '<td>'; [b]echo '<select name="quantity" id="quantity" class="quantity">;//
  3. for($liczbaproduktow=0;$liczbaproduktow<=$data[5];$liczbaproduktow++)
  4. {echo '<'<option value="'.$liczbaproduktow.'">'.$liczbaproduktow.'</option>';}'
  5. ;[/b] echo '<input type="hidden" name="product" value="'.$encode.'">'
  6. ; echo '<input type="hidden" name="price" value="'.$data[3].'">


W skrypcie jest to jedna linijka - tu podzielilem tylko tak by sie zmiescilo na stronie.
nospor
facepalmxd.gif
napisalem ci jak ma wygladac ta jedna linijka.... nawet nie potrafisz tego poprawnie skopiowac :/

Stary, Tobie nie da sie pomoc, bo nawet podanego gotowca źle wklejasz...
Turson
Cytat
nie pokazuje kompletnie zadnego bledu

Proponuję włączyć error_reporting
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.