Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Zawieranie danych z tablicy w różnych zmiennych
Forum PHP.pl > Forum > Przedszkole
castagir
Witam

Potrzebuję pomocy tym razem w zrozumieniu pętl.
Chodzi o to, że chciałbym aby z jednej tablicy, a dokładnie wyniku zapytania MySQL, przypisać wszystkie dane do różnych zmiennych.

Napisałem pewien fragment skryptu, który ma być za to odpowiedzialny. Modyfikowałem już go pod różnymi kątami, ale wciąż nic.
  1. $pytanie = $polaczenie->prepare("SELECT * FROM ".$przedrostek_bd."uzytkownicy");
  2. $pytanie->bindValue(':nazwa', $nazwa, PDO::PARAM_STR);
  3. $pytanie->bindValue(':haslo', sha1($haslo), PDO::PARAM_STR);
  4. if ($pytanie->execute()) {
  5. $wynik = true;
  6. $tablica = $pytanie->fetch(PDO::FETCH_ASSOC))
  7. for ($w = 0; $w < 3; $w++) {
  8. echo $dane_id[$w] = $tablica['id'];
  9. echo $dane_nazwa[$w] = $tablica['nazwa'];
  10. echo $dane_stopien[$w] = $tablica['stopien']; }
  11. } else {
  12. $wynik = false; }


Chciałbym aby wszystkie dane były zapisane do odzielnej zmiennej, z której mógłbym pobierać interesującą mnie wartość.
Np $dane_nazwa[2] === 'zdzich'
fastlone
Proponuję cały ten kod zapisać w postaci:
  1. $pytanie = $polaczenie->prepare("SELECT * FROM ".$przedrostek_bd."uzytkownicy");
  2. $pytanie->bindValue(':nazwa', $nazwa, PDO::PARAM_STR);
  3. $pytanie->bindValue(':haslo', sha1($haslo), PDO::PARAM_STR);
  4. if ($pytanie->execute()) {
  5. $wynik = true;
  6. $w = 0;
  7. while ($tablica = $pytanie->fetch(PDO::FETCH_ASSOC)) {
  8. $dane_id[$w] = $tablica['id'];
  9. $dane_nazwa[$w] = $tablica['nazwa'];
  10. $dane_stopien[$w] = $tablica['stopien'];
  11. $w++; }
  12. } else {
  13. $wynik = false; }
castagir
Niestety nic to nie pomaga.

Muszę chyba coś zrobić z pętlą for.
Turson
@castagir
  1. $pytanie = $polaczenie->prepare("SELECT * FROM ".$przedrostek_bd."uzytkownicy");
  2. $pytanie->bindValue(':nazwa', $nazwa, PDO::PARAM_STR);
  3. $pytanie->bindValue(':haslo', sha1($haslo), PDO::PARAM_STR);

binujesz 2 wartości ktorych nie masz w zapytaniu

  1. $tablica = $pytanie->fetch(PDO::FETCH_ASSOC))

brakuje tutaj średnika na końcu. Fetch() pobiera tylko 1 rekord, użyj fetchAll()

  1. for ($w = 0; $w < 3; $w++)

Pętla powinna iterować tyle razy ile masz elementów w tablicy $tablica czyli tyle ile pobrało. Od $w=0 do $w<=count($tablica)

Tablica którą próbujesz stworzyć jest nieporęczna. Lepiej stworzyć dwuwymiarową typu
0=>array(id=>1,nazwa=>'coś tam', stopień=>'jakiś')
1=>array(id=>2,nazwa=>'coś tam', stopień=>'jakiś')
itd.
viking
A nie wystarczy Ci fetchAll()? Przecież będziesz miał wtedy np $tablica[2]['nazwa'], po co to przepisywać? W ostateczności można się pobawić np PDO::FETCH_GROUP
castagir
Też nic nie pomaga.

Napisałem taki fragment skryptu:
  1. $pytanie = $polaczenie->prepare("SELECT * FROM `sesjeuzytkownikow` ORDER BY kod_sesji DESC LIMIT 5");
  2. $pytanie->execute();
  3.  
  4. echo $i = 1;
  5. while ($w = $pytanie->fetchAll(PDO::FETCH_ASSOC)) {
  6. $kod_sesji[$i] = $w['kod_sesji'];
  7. $data_sesji[$i] = $w['data'];
  8. $start_sesji[$i] = $w['start'];
  9. $i++; }
  10.  
  11. echo 'Kod sesji: '.$kod_sesji[1].'<br />';
  12. echo 'Data sesji: '.$data_sesji[1].'<br />';
  13. echo 'Start sesji: '.$start_sesji[1].'<br />';
:
Turson
Jak puszczasz to w pętli to już nie fetchAll() a fetch()
castagir
Samo fetch(); także nie działa

Turson
Po czym tak stwierdzasz? Jak wygląda tablica po pętli? Jak wygląda $w w pętli? Sprawdzaj takie rzeczy
Fetch masz mieć fetch(PDO::FETCH_ASSOC)
po prostu uyzłem skróconej formy
castagir
Mam tak wpisane:
  1. $pytanie = $polaczenie->prepare("SELECT * FROM `endo_sesjeuzytkownikow` ORDER BY kod_sesji DESC LIMIT 5");
  2. $pytanie->execute();
  3.  
  4. echo $i = 1;
  5. while ($w = $pytanie->fetch(PDO::FETCH_ASSOC)) {
  6. $kod_sesji[$i] = $w['kod_sesji'];
  7. $data_sesji[$i] = $w['data'];
  8. $start_sesji[$i] = $w['start'];
  9. $i++; }
  10.  
  11. echo 'Kod sesji: '.$kod_sesji[1].'<br />';
  12. echo 'Data sesji: '.$data_sesji[1].'<br />';
  13. echo 'Start sesji: '.$start_sesji[1].'<br />';
Turson
Co wyświetla
  1. var_dump($pytanie->fetchAll(PDO::FETCH_ASSOC));
castagir
Ok. Udało się jakoś.

Napisałem jeszcze raz w całkowicie nowym pliku.

  1. try
  2. {
  3. $polaczenie = new PDO('mysql:host='.$serwer_bd.';dbname='.$nazwa_bd, $uzyt_bd, $haslo_bd, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
  4.  
  5. $polaczenie->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
  6. 'Połączono z bazą danych!';
  7. } catch (PDOException $e)
  8. {
  9. echo ($e->getMessage());
  10. }
  11.  
  12.  
  13. $pytanie = $polaczenie->prepare("SELECT * FROM `endo_sesjeuzytkownikow` ORDER BY kod_sesji DESC LIMIT 5");
  14. $pytanie->execute();
  15.  
  16. $i = 1;
  17. while ($w = $pytanie->fetch(PDO::FETCH_ASSOC)) {
  18. $kod_sesji[$i] = $w['kod_sesji'];
  19. $data_sesji[$i] = $w['data'];
  20. $start_sesji[$i] = $w['start'];
  21. echo 'Kod sesji: '.$kod_sesji[$i].'<br />';
  22. echo 'Data sesji: '.$data_sesji[$i].'<br />';
  23. echo 'Start sesji: '.$start_sesji[$i].'<br /><br />';
  24. $i++
  25. ; }



Widocznie musiałem mieć jakiś błąd logiczny na tamtej stronie.
Będę musiał sprawdzić, bo jeszcze wczoraj jak kończyłęm pracę na skryptem wszystko działało tak jak trzeba.

Swoją drogą nie wiem dlaczego mi wyświetla var_dump taki ciąg. Na innych stronkach i filmikach było ładnie pokazane w odstępach.
Muszę to zawierać może w HTML?
  1. array(5) { [0]=> array(7) { ["kod_sesji"]=> string(14) "141221-1716:35" ["id_uzytkownika"]=> string(1) "1" ["ip"]=> string(9) "127.0.0.1" ["data"]=> string(10) "21.12.2014" ["start"]=> string(5) "17:16" ["koniec"]=> NULL ["wyswietlonych_stron"]=> NULL } [1]=> array(7) { ["kod_sesji"]=> string(14) "141221-1131:28" ["id_uzytkownika"]=> string(1) "1" ["ip"]=> string(9) "127.0.0.1" ["data"]=> string(10) "21.12.2014" ["start"]=> string(5) "11:31" ["koniec"]=> NULL ["wyswietlonych_stron"]=> NULL } [2]=> array(7) { ["kod_sesji"]=> string(14) "141221-0930:05" ["id_uzytkownika"]=> string(1) "1" ["ip"]=> string(9) "127.0.0.1" ["data"]=> string(10) "21.12.2014" ["start"]=> string(5) "09:30" ["koniec"]=> NULL ["wyswietlonych_stron"]=> NULL } [3]=> array(7) { ["kod_sesji"]=> string(14) "141221-0046:34" ["id_uzytkownika"]=> string(1) "1" ["ip"]=> string(9) "127.0.0.1" ["data"]=> string(10) "21.12.2014" ["start"]=> string(5) "00:46" ["koniec"]=> NULL ["wyswietlonych_stron"]=> NULL } [4]=> array(7) { ["kod_sesji"]=> string(14) "141220-1247:11" ["id_uzytkownika"]=> string(1) "1" ["ip"]=> string(9) "127.0.0.1" ["data"]=> string(10) "20.12.2014" ["start"]=> string(5) "12:47" ["koniec"]=> NULL ["wyswietlonych_stron"]=> NULL } }
Turson
Żeby var_dump był sformatowany musi być w <pre></pre>
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.