Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] zmienne
Forum PHP.pl > Forum > Przedszkole
misiek172
Witam.

Mam tablice

  1. <?php
  2. $serial = Array('nazwa', 'towar', 'ilosc', 'jm', 'termin', 'uwagi');
  3. ?>


jak stworzyć z tych nazw zmienne? Eval tu nie zabardzo mi pomaga.

Robię coś takiego:

  1. <?php
  2. $zap = "SELECT * FROM `prod` WHERE id='".$_GET['id']."'";
  3. $wyk = mysql_query($zap);
  4. $db = mysql_fetch_array($wyk);
  5.  
  6. $serial = Array('nazwa', 'towar', 'ilosc', 'jm', 'termin', 'uwagi');
  7.  
  8. foreach($serial as $x){
  9. $x = unserialize($db[$x]);
  10. }
  11. ?>


gdy dam eval($x) = unserialize($db[$x]); to wywala błąd.
nospor
Cytat
Robię coś takiego:
No i to jest ok. Evala tam nie trzeba. Co ci w tym nie dziala?
Daj print_r($db) i sprawdz czy oby masz tam takie kolumny co ci sie wydaje ze sa

edit: aaa, kumam co chciales zrobic. przeczytaj to:
http://pl.php.net/manual/pl/language.variables.variable.php
misiek172
czyli tak? :

  1. <?php
  2. foreach($serial as $x){
  3. $$x = unserialize($db[$x]);
  4. }
  5. ?>


biorę potem echo $nazwa[0]; i nie ma błędów ale nie wyświetla...
nospor
jak juz mowilem rob rzeczy kontrolne
  1. <?php
  2. $zap = "SELECT * FROM `prod` WHERE id='".$_GET['id']."'";
  3. $wyk = mysql_query($zap);
  4. $db = mysql_fetch_array($wyk);
  5. print_r($db);
  6.  
  7. $serial = Array('nazwa', 'towar', 'ilosc', 'jm', 'termin', 'uwagi');
  8.  
  9. foreach($serial as $x){
  10. $zm = unserialize($db[$x]);
  11. print_r($zm);
  12. $$x = $zm;
  13. }
  14. ?>

i bedziesz wiedzial gdzie moze byc blad
misiek172
wiem tylko ze ja to mam w generowaniu PDFa i tam nie można tak poprostu echo więc bede musial sobie to do innego pliku przenieść ;P
nospor
no to przenies a nie mi tu postem glowe zawracasz tongue.gif odezwij sie jak bedziesz mial juz wyniki.
Pozatym ja ci tego print_r jako przyklad podalem. Rownie dobrze do pliku to se mozesz logowac i ci pdf nie ucierpi na tym
misiek172
Gdy zrobiłem coś takiego:


  1. <?php
  2. mysql_connect('localhost:3306', 'root', '');
  3.  
  4. $zap = "SELECT * FROM `prod` WHERE id='5'";
  5. $wyk = mysql_query($zap);
  6. $db = mysql_fetch_array($wyk);
  7.  
  8. print_r($db);
  9.  
  10. $serial = Array('nazwa', 'towar', 'ilosc', 'jm', 'termin', 'uwagi');
  11.  
  12.  
  13. foreach($serial as $x){
  14. $y = unserialize($db[$x]);
  15. }
  16. echo "<br><br><br>";
  17. print_r($y);
  18. ?>


to ładnie wywaliło mi $db, lecz $y juz nie, wydaje sie że wogóle na to: $y = unserialize($db[$x]); niereaguje :|
nospor
$y moj ty kochany to ty w petli miales wyswietlac. przeciez poza petla print_r wyswietli ci tylko ostatnie przypisanie.
A skoro nic ci nei wyswietlil, to albo $db['uwagi'] jest puste, albo jest nie zserializowane
misiek172
ano racja biggrin.gif ups szkolny błąd ;P

//edit

blee i tak coś nie tak ;/

  1. <?php
  2. for($i=0;$i<count($y);$i++){
  3. echo "<br><br><br>";
  4. print_r($y[$i]);
  5. }
  6. ?>


i tak nie chula a wartość są uzupełnione w całej tabeli mysql, założe się że chodzi tu o jakiś prosty błąd
nospor
zalamka.... tongue.gif
  1. <?php
  2. foreach($serial as $x){
  3. $y = unserialize($db[$x]);
  4. print_r($y);
  5. }
  6. ?>


a najlepiej:
  1. <?php
  2. foreach($serial as $x){
  3. $y = unserialize($db[$x]);
  4. if ($y===false)
  5. echo 'zle dane'; 
  6. else
  7. print_r($y);
  8. }
  9. ?>
misiek172
ojej jedno i to samo tylko sobie utrudniłem ;P

ale i tak pusto, nie chodzi tongue.gif

edit:
hmmm wszędzie mi złe dane wyświetliło... happy.gif
nospor
Cytat
ojej jedno i to samo tylko sobie utrudniłem ;
blinksmiley.gif Nie sobie utrudniles, a do zlych danych sie dobierales a to duuuza roznica.

Cytat
hmmm wszędzie mi złe dane wyświetliło...
No to masz zle dane, ktore do unserialize sie nie nadaja tongue.gif
A jak serializowales to? i ze tak zapytam: print_r($db) oby napewno poprawna tablice ci wyswietlal? Mozesz ja pokazac?
misiek172
$y = unserialize($db[$x]); to nie chodzi sprawdzalem na sucho a tablica napewno sie git a wygląda tak:

  1. <?php
  2. Array ( [0] => 6 [id] => 6 [1] => a:21:{i:0;s:10:"ashdbasdhb";i:1;s:10:"zhbfdajsdb";i:2;s:6:"asdasd";i:3;s:0:"";i:4;s:0:"";i:5;s:0:"";i:6;s:0:"";i:7;s:0:"";i:8;s:0:"";i:9;s:0:"";i:10;s:0:"";i:11;s:0:"";i:12;s:0:"";i:13;s:0:"";i:14;s:0:"";i:15;s:0:"";i:16;s:0:"";i:17;s:0:"";i:18;s:0:"";i:[nazwa] => a:21:{i:0;s:10:"ashdbasdhb";i:1;s:10:"zhbfdajsdb";i:2;s:6:"asdasd";i:3;s:0:"";i:4;s:0:"";i:5;s:0:"";i:6;s:0:"";i:7;s:0:"";i:8;s:0:"";i:9;s:0:"";i:10;s:0:"";i:11;s:0:"";i:12;s:0:"";i:13;s:0:"";i:14;s:0:"";i:15;s:0:"";i:16;s:0:"";i:17;s:0:"";i:18;s:0:"";i:[2] => a:21:{i:0;s:1:"j";i:1;s:10:"asbdjsahbd";i:2;s:3:"s [towar] => a:21:{i:0;s:1:"j";i:1;s:10:"asbdjsahbd";i:2;s:3:"[3] => 0 [ilosc] => 0 [4] => a:21:{i:0; [jm] => a:21:{i:0; [5] => a:21:{i:0;s:10:"ashbdjasbd";i:1;s:9:"ashdbasjd";i: [termin] => a:21:{i:0;s:10:"ashbdjasbd";i:1;s:9:"ashdbasjd";i: [6] => a:21:{i:0;s:8:"dasbhdbj";i:1;s:4:"sadf";i:2;s:4:"asdf";i:3;s:0:"";i:4;s:0:"";i:5;s:0:"";i:6;s:0:"";i:7;s:0:"";i:8;s:0:"";i:9;s:0:"";i:10;s:0:"";i:11;s:0:"";i:12;s:0:"";i:13;s:0:"";i:14;s:0:"";i:15;s:0:"";i:16;s:0:"";i:17;s:0:"";i:18;s:0:"";i:19;s:4:"asdf" [uwagi] => a:21:{i:0;s:8:"dasbhdbj";i:1;s:4:"sadf";i:2;s:4:"asdf";i:3;s:0:"";i:4;s:0:"";i:5;s:0:"";i:6;s:0:"";i:7;s:0:"";i:8;s:0:"";i:9;s:0:"";i:10;s:0:"";i:11;s:0:"";i:12;s:0:"";i:13;s:0:"";i:14;s:0:"";i:15;s:0:"";i:16;s:0:"";i:17;s:0:"";i:18;s:0:"";i:19;s:4:"asdf" [7] => asdf [nr] => asdf [8] => 1169161200 [dd] => 1169161200 [9] => Andrzej Antosiewicz [osoba] => Andrzej Antosiewicz [10] => asdf [adres] => asdf )
  3. ?>


dodaje tym:

  1. <?php
  2. $zap = "INSERT INTO `prod` SET nazwa='".serialize($nazwa)."', towar='".serialize($towar)."', ilosc='".serialize($ilosc)."', jm='".serialize($jm)."', termin='".serialize($termin)."', uwagi='".serialize($uwagi)."', nr='".$nr."', dd='".$data."', osoba='".$osoba."', adres='".$adres."'";
  3. $wyk = mysql_query($zap);
  4. ?>


ogólem to dodawanie jest barzdziej rozbudowane ale nie potrzebne były tamte rzeczy winksmiley.jpg w każdym wypadku dobrze się dodaje smile.gif
nospor
ja przy probie unserialize tych twoich danych dostaje same bledy, tak jakby te dane byly niekompletne. Czy dlugosc pola, jaka zarezerwowales na daną wartosc w bazie jest wystarczajaca? Moze on ci poprostu w bazie ucina, bo zadeklarowales ze dane pole moze miec np. max. 50 znakow,a ma 60
misiek172
jaaaaaaaaaaaaa no tak! zapomniałem że dałem varchar, zawsze daje TEXT jak uzwam serialize neiwiem co mnie podkusiło do varchar

OMG debil ze mnie, z chęcią zapadłbym się teraz pod ziemie...
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.