Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] [mysql] zmienna nazwa zmiennej.
Forum PHP.pl > Forum > Przedszkole
gebp
Zanim opisze problem poniże jest kod po części wycięty
  1. <?php
  2. // ...
  3. // sklepy
  4.  
  5. $st="SELECT `ID`, `nazwa` FROM `sklepy` WHERE `moc`='2' ORDER BY ID ASC ";
  6. $stq=mysql_query($st);
  7. while($sp=mysql_fetch_array($stq))
  8. { $nazwa=$sp['nazwa'];
  9. $ID=$sp['ID'];
  10. //echo("</br> nazwa=".$nazwa." ID=".$ID);
  11. $stan_mag_s= $w_mag_s= $wartosc_mag_s= $iad= $w_magd= $wartosc_magd= $yq1af= $w_mag_f= $wartos_mag_f= $uqag= $w_mag_g= $wartos_mag_g=0;
  12.  
  13. $ea="SELECT * FROM dociazenia ORDER BY kod ASC ";
  14. $eaq=mysql_query($ea);
  15. while($eq1a=mysql_fetch_array($eaq)) //wartośc mag ogólem
  16. {$kods=$eq1a['kod'];
  17.  $kwotas=$eq1a['kwota'];
  18.  $ws="SELECT * FROM mag WHERE `kod`='$kods' AND `stan`!='s' AND `idsklep`='$ID' ";
  19.  $wqs=mysql_query($ws);
  20.  $os=mysql_num_rows($wqs);
  21.  
  22.  $stan_mag_s=$stan_mag_s+$os;
  23.  
  24.  
  25.  $w_mag_s=$os*$kwotas;
  26.  
  27.  $wartosc_mag_s=$wartosc_mag_s+$w_mag_s;
  28.  
  29.  }
  30.  
  31.  $es="SELECT * FROM dociazenia ORDER BY kod ASC ";
  32.  $eqs=mysql_query($es);
  33.  while($eq1s=mysql_fetch_array($eqs)) // towary wolne ich wartość
  34.  {$kodd=$eq1s['kod'];
  35. $kwotad=$eq1s['kwota'];
  36. $rs="SELECT * FROM mag WHERE `kod`='$kodd' AND `sprz`='0000-00-00' AND `wymiana`='0' AND `dostawa`>='$dpor' AND `idsklep`='$ID' ";
  37. $rqs=mysql_query($rs);
  38. $id=mysql_num_rows($rqs);
  39. //echo("</br> is=".$is);
  40. $iad=$iad+$is;
  41.  
  42. $w_magd=$id*$kwotad;
  43. // echo("</br>W-mag=".$w_mag);
  44. $wartosc_magd=$wartosc_magd+$w_magd;
  45. // echo("</br>Wartosc mag=".$wartosc_mag);
  46. }
  47.  
  48. // ... 
  49.  
  50. echo("</br><div align=center>
  51.  <b>$nazwa</b
  52. <table border=1 bgcolor=white>
  53.  <tr>
  54.  <td></td>
  55.  <td><p align=center><b>ILOĆ</b></p></td>
  56.  <td><p align=center><b>WARTOĆ</b></p></td>
  57.  </tr>
  58.  <tr>
  59.  <td><p align=center><b> OGÓŁ </b></p></td>
  60.  <td><p align=center><b>$stan_mag_s</b></p> </td>
  61.  <td><p align=center><b>$wartosc_mag_s</b></p> </td>
  62.  </tr>
  63.  <tr>
  64.  <td><p align=center><b> Tow. wolne</b></p></td>
  65.  <td><p align=center><b>$iad</b> </p></td>
  66.  <td><p align=center><b>$wartosc_magd</b> </p></td>
  67.  </tr>
  68.  <tr>
  69.  <td><p align=center><font color=red><b> Po terminie</b></font></p></td>
  70.  <td><p align=center><font color=red><b> $yq1af </b> </font></p></td>
  71.  <td><p align=center><font color=red><b> $wartos_mag_f</b> </font></p></td>
  72.  </tr>
  73.  <tr>
  74.  <td><p align=center><b> W wymianie</b></p></td>
  75.  <td><p align=center><b>$uqag</b> </p></td>
  76.  <td><p align=center><b>$wartos_mag_g</b> </p></td>
  77.  </tr>
  78.  </table>
  79.  </div>");
  80. }
  81. ?>

O co mi chodzi. Powyższy kod wybiera mi z tabeli `sklepy` wszystke sklepy. Następnie w pętli while sprawdzam stany poszczególnych towarów (znajduja się one w tabeli `dociazenia`). Stany towarow wszystkich sklepow a zapisane w tabeli `mag`
Oczywiście ten kod działa. Prytanie moje polega na tym jak nadać zmiennej naze zależną od wartości zmienej, a dokładnie:
Jak nadać nazę zmiennej `$stan_mag_s` uzależnionej od zmienej `$ID`. Czyli jeżeli $ID = 1; to czciałbym aby zmienna `$stan_mag_s` miała nazwę `$stan_mag_s1` itd.
Kombinowałem `$stan_mag_s[$ID]` ale przy wykonywaniu drugiej petli (dla $ID=2) krzaczyło mi albo przepisywało mi wartości z wcześniejszej pętli. Sypało mi błędami w
  1. <?php
  2. $w_mag_s=$os*$kwotas;
  3. ?>


Problem rozwiązałem w następujący sposób (skuteczny ponieważ zmienne byly liczbami):
  1. <?php
  2. $stan_mag_s= $w_mag_s= $wartosc_mag_s= $iad= $w_magd= $wartosc_magd= $yq1af= $w_mag_f= $wartos_mag_f= $uqag= $w_mag_g= $wartos_mag_g=0;
  3. ?>


Powtórze więc pytanie jak uzależnić nazwę zmiennej od innej zmiennej i do tego wykonywać na tych zmiennych operacje artmetyczne questionmark.gif

Proszę o podpowiedź. Tak na przyszłość bym się czegoś jeszcze nauczył.

P.S. Co JEst z tym BBcodem
mdco
Może to pomoże: zmienne o nazwie zmiennej
gebp
Nietety w tym przypadku zmienna przyjmuje nazwę która jest wartością zmienej czyli:
  1. <?php
  2. $a="wartosc1";
  3. $$a=$wartosc1="wartosc2";
  4. ?>


a ja potrzebuje
  1. <?php
  2. ...
  3. while($z=mysql_fetch_array($x));
  4. {$id=$z['id']; // np. $id=356
  5. // $jakas_zmienna - zmiena pobrana z innego zapytania
  6.  $jakas_zmienna[$id]="3"; // $jakas_zmiena[356] 
  7.  
  8. $cena=4; //zmienna pobrana z kolejnego zapytania
  9.  
  10. $koszt=$jakas_zmienna[$id]*$cena;
  11. ?>

Oczywiście powyższe działa jeżeli pętla jest wykonana raz.
Ale gdy zapytanie jest wykonan poraz drugi to sypie mi blędem

"Cannot use a scalar value as an array in" podając jeszcze linie kodu.
Niestety za głupi jestem i nie zabardzo sobie z tym umiałem poradzić. Dlateog zrobiłem jak wyżej.
Jednak myslę że jest prostszy sposób, albo proszę o wytłumaczenie powyższego błędu. Tylko tak z polskiego na małointligenego.
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.