Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Jak przekazac wartośc poza funkcję foreach
Forum PHP.pl > Forum > Przedszkole
palixmp
Witam.
Mam takie proste pytanie, jak przekazac wartośc poza funkcje foreach?? Dokladnie: Chodzi o to że jeśli ktoś zamówi więcej artykulów niż jest w bazie danych, to powinien wyskoczyc komunikat, ze nie wolno zamawiać wiecej niż jest w magazynie, ale nie wiem jak to zrobic sad.gif Mam taki kod:
  1. <?php
  2. function sprawdz_ilosc()
  3. {
  4.  
  5. $lacz = lacz_bd();
  6. lacz_moje();
  7. $a=0;
  8.  
  9.  foreach($_SESSION['koszyk'] as $IDArtykulu => $ilosc)
  10. {
  11.  $query = "SELECT IloscSztuk FROM ARTYKULY_BIUROWE WHERE IDArtykulu = '$IDArtykulu'";
  12.  
  13. if(!$result = mysql_query($query)) 
  14.  {
  15. echo 'error!!!';
  16. return;
  17. }
  18.  
  19. $row = mysql_fetch_array($result);
  20.  
  21. if($ilosc > $row[IloscSztuk]) 
  22.  {
  23. echo ' <font color=red><centr><b>BLAD!!</b></center><br> za mało towaru na stanie, liczba pobieranych artykułów nie może być wieksza 
    od stanou na magazynie</font><br><br>'
    ;
  24. echo '<a href="pokaz_kosz.php5">Powrot do koszyka</a>';
  25. }
  26.  else 
  27. {
  28. echo 'wszystko ok <br>';
  29. $a++;
  30. echo 'zmienna a w pętli wynosi : '.$a.'<br><br>';
  31. }
  32. }
  33. }
  34. ?>


na drugiej stronie gdzie wykorzystują tą funkcję mam taki kod:
  1. <?php
  2. $a=7; //tuaj dałem wartośc zeby sprawdzic przed wywołaniem funkcji "sprawdz_ilosc()"
  3. sprawdz_ilosc();
  4. echo 'zmienna a wynosi : '.$a.''; ///Tutaj wyświetlam wartośc $a po tej funkcji i jest nadal "7" :(
  5. if($a='mama') // a tutaj to już w ogole nie wiem, bo ten if mi w ogóle nie działą:( a przecież powinien prawda?
  6. {
  7.  
  8. if($_SESSION['koszyk']&&count($_SESSION['koszyk']))
  9. {
  10.  wyswietl_koszyk($_SESSION['koszyk'], false, 0);
  11.  wyswietl_przycisk('zakup.php5','zakup', 'Zakupienie tych produktów'); 
  12. }
  13.  else
  14. {
  15.  echo '<p>Koszyk jest pusty</p>';
  16.  
  17.  wyswietl_przycisk('pokaz_kosz.php5', 'kontynuacja', 'Kontynuacja zakupów');
  18. }
  19. }
  20. else
  21. {
  22. echo ' ZLe czyli powrot czy cos takigo ';
  23. }
  24.  
  25.  
  26. ?>


I mi wyskakuje taki wynik:
wszystko ok
zmienna a w petli wynosi : 1

BLAD!!

za malo towaru na stanie, liczba pobieranych artykulów nie moze byc wieksza od stanou na magazynie

Powrot do koszyka
wszystko ok
zmienna a w petli wynosi : 2

wszystko ok
zmienna a w petli wynosi : 3

zmienna a wynosi : 7

Wiec moje pytanie: Jak przekazac zmienną $a poza pętle foreach??
Albo po prostu, jak zrobić żeby jesli jeden warunek (ten że liczba wieksza niz w magazynku) zostanie spełniony żeby mi sie wyświetlalo że zbyt duza liczba artykułów jest zamawiana? Wie ktoś jak to sie rozwiazuje??

Z gory dzieki!!
ikssde
Jak to zobaczylem to az sie za glowe zlapalem smile.gif zagmatwales ten kod tak ze nie wiedzialem o co Ci chodzi. Zeby sobie sprawdzic ilosc sztuk na magazynie mozna napisac bardzo prosta funkcje.

CODE


function sprawdz_ilosc($produktid, $kategoria)
{
$link = mysql_connect("localhost", "root", ""); // laczymy sie z mysql
mysql_select_db("baza", $link); // wybieramy baze danych

$res = mysql_query("SELECT ILOSC FROM $kategoria WHERE ID = $produktid;"); // wykonujemy zapytanie

$row = mysql_fetch_array($res); // odbieramy wynik
return $row['ILOSC']; // zwracamy wynik
}



I teraz przy zamawianiu poprostu sobie sprawdzasz czy ilosc zamawianych sztuk nie jest wieksza niz ilosc na magazynie. Przyjmując, że ołówki w naszej bazie danych maja ID = 1 i należą do kategorii = ARTYKULY_BIUROWE robimy to w ten sposob :

CODE

$ile = sprawdz_ilosc(1, ARTYKULY_BIUROWE); // zwraca nam ilosc artykulow biurowych o ID = 1
$zamawiane = ... // ilosc zamawianych sztuk

if($zamawiane > $ile)
{
echo "Za malo artykulow na stanie !";
...
}
else
{
echo "Zamowienie przyjete do realizacji !";
}



Jesli piszesz obiektowo to musisz to odpowiednio zmodyfikowac smile.gif
Dzieki uwzglednieniu w funkcji kategorii mozesz nia obslugiwac caly sklep. Pozdrawiam
luck
Wszystko Ci ładnie opisał kolega w poście wyżej. Jeszcze jedno:
  1. <?php
  2. if($a='mama') // a tutaj to już w ogole nie wiem, bo ten if mi w ogóle nie działą:( a przecież powinien prawda?
  3. ?>

Taki zapis powoduje, że to co jest zawarte w "else" nigdy się nie wykona. Wydaje mi się, że miałeś na myśli:
  1. <?php
  2. if($a=='mama')
  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.