Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/MySQL] Jak wyświetlić pełny wpis z bazy mysql?
Forum PHP.pl > Forum > Przedszkole
Sky_walker
Jak wyświetlić pełny wpis z bazy mysql?
Znam wartość tylko jednego pola i chciałbym wyświetlić zawartość wszystkich kolumn z tabeli dla danego rekordu nie znając ich ilości.

Np. wybieram sobie nick:
  1. <?php
  2. $zapytanie="SELECT * FROM users WHERE nick=$nick";
  3. $wykonaj=mysql_query($zapytanie);
  4. $wynik=mysql_fetch_array($wykonaj);
  5. ?>

I teraz chciałbym wyświetlić wszystkie rekordy z kolumn (eg. echo "kolumna$n = $wynik_z_kolumny_n"; ), a są to np. a1 | a2 | a3 | a4 | a5
podejżewam, że można to zrobić jakąś pętlą... albo w samym zapytaniu MySql...
cornholio666
  1. <?php
  2. $zapytanie="SELECT * FROM users WHERE nick=$nick";
  3.  $wykonaj=mysql_query($zapytanie);
  4.  while( $row = mysql_fetch_array($wykonaj)){
  5.  
  6. echo $row["a1"]. "<br>";
  7. echo $row["a2"]. "<br>";
  8. echo $row["a3"]. "<br>";
  9.  
  10.  }
  11. ?>

Tutaj w przykładzie jest napisane co i jak http://php.net.pl/manual/pl/function.mysql-fetch-array.php" title="Zobacz w manualu php" target="_manual
skowron-line
  1. <?php
  2. $zapytanie="SELECT * FROM users WHERE nick=$nick";
  3. $wykonaj=mysql_query($zapytanie);
  4. while($wynik=mysql_fetch_array($wykonaj)){
  5. echo $wynik['nazwa_kolumny'];
  6. }
  7. ?>


edit: za pozno
Sky_walker
spoko, wiem jak się wyświetla konkretne kolumny, ale jak wyświetlić wyniki z WSZYSTKICH kolumn nie znając ich nazw?
nospor
  1. <?php
  2. print_r($wynik);
  3. ?>
tongue.gif

A na powaznie: foreach, for i wiele innych do biegania po tablicy
Sky_walker
Dobra, a jak to zapisać do zmiennej? chciałbym mieć zmienną zawierającą tekst z kolumn tabeli.
A co do foreach - nie wiem jak to zastosować na wyniku z tabeli sad.gif jakiś przykład?
nospor
Cytat
Dobra, a jak to zapisać do zmiennej? chciałbym mieć zmienną zawierającą tekst z kolumn tabeli.

http://pl.php.net/manual/pl/function.implode.php

Cytat
A co do foreach - nie wiem jak to zastosować na wyniku z tabeli jakiś przykład?

zaprzyjaźnij sie z manualem...
http://pl.php.net/manual/pl/control-structures.foreach.php
Sky_walker
o_O teraz to mnie zatkało... kod:
  1. <?php
  2. $zapytanie="SELECT * FROM users WHERE nick='$nick'";
  3. $wykonaj=mysql_query($zapytanie);
  4. $wynik=mysql_fetch_array($wykonaj);
  5.  
  6. echo implode(",", $wynik);
  7. ?>

daje w efekcie coś takiego:
Cytat
4,4,Sky_walker,Sky_walker

o_O Wszystkie wyniki są wyświetlane dwa razy o_O
Ktoś wie czemu tak jest?

Dobra, mam. Kod ma być:
  1. <?php
  2. $zapytanie="SELECT * FROM users WHERE nick='$nick'";
  3. $wykonaj=mysql_query($zapytanie);
  4. $wynik=mysql_fetch_array($wykonaj, MYSQL_ASSOC);
  5. echo implode(",", $wynik);
  6. ?>
nospor
pomietasz jak w poprzednim poscie ci napisalem bys zaprzyjaznil sie z manualem?

http://pl.php.net/manual/pl/function.mysql-fetch-array.php
zobacz co ta funkcja zwraca i doczytaj co zrobic by zwracala tylko raz tudziez doczytaj jaki jest jej odpowiednik co zwraca tylko raz

edit: brawo smile.gif
Sky_walker
Dobra, gotowy kod <dla mniej cierpliwych winksmiley.jpg > :

  1. <?php
  2. $tresc="";
  3. echo "$nick - nick<br>";
  4.  
  5. $zapytanie="SELECT * FROM users WHERE nick='$nick'";
  6. $wykonaj=mysql_query($zapytanie);
  7. $wynik=mysql_fetch_array($wykonaj, MYSQL_ASSOC);
  8.  
  9. foreach ($wynik as $wynik) {
  10.  $tresc=$tresc."'".$wynik."', ";
  11. }
  12. echo $tresc;
  13. ?>

Zwraca on np.:
Cytat
'4', 'Sky_walker', 'pwd', 'mail',

czyli wartości wszystkich kolumn dla konkretnego nicka zamknięte w ' ' (pojedyńcze uszy) i oddzielone przecinkami.
Mam nadzieję, że się komuś przyda winksmiley.jpg
rozny
Cytat(Sky_walker @ 11.11.2006, 20:50:34 ) *
  1. <?php
  2.  foreach ($wynik as $wynik) {
  3.  $tresc=$tresc."'".$wynik."', ";
  4. }
  5. echo $tresc;
  6. ?>


A mi ta petelka zwraca taki oto error: Warning: Invalid argument supplied for foreach() in C:\Program Files\VertrigoServ\www\engine\add_product.php on line 30

  1. <?php
  2.  
  3. $TOWARY = $_GET['TOWARY'];
  4. $ID_DZIALY = $_GET['ID_DZIALY'];
  5. $KOD = $_GET['KOD'];
  6. $CENA = $GET_['CENA'];
  7. $connect = mysql_connect('localhost', '***', '***)
  8.  
  9. or die('Brak polaczenia z serwerem mySQL.<br />Błąd: '.mysql_error());
  10.  
  11. echo ("Polaczenie z serwerem jest aktywne.<br/>");
  12.  
  13. $db = mysql_select_db('sklep', $connect)
  14.  
  15. or die('Brak polaczenia z baza danych<br />Blad: '.mysql_error());
  16.  
  17. echo ("Polaczenie z baza danych jest aktywe.<br />");
  18.  
  19. $add = mysql_query("INSERT INTO `magazyn` (`ID` , `TOWARY` , `ID_DZIAL` , `KOD` , `CENA`)
  20.  
  21. VALUES (NULL, '$TOWARY' , '$ID_DZIALY' , '$KOD' , '$CENA' ) ");
  22.  
  23. if ($add) echo ("Towar dodany poprawnie");
  24. else echo ("Nie dodano towaru");
  25.  
  26. $show = "SELECT * FROM magazyn WHERE towary='$towary'";
  27. $wykonaj = mysql_query("$show");
  28. $wynik = mysql_fetch_array($wykonaj, MYSQL_ASSOC);
  29.  
  30. foreach ($wynik as $wynik) {
  31. $tresc = $tresc."'".$wynik."', ";
  32. }
  33. echo $tresc;
  34. ?>


Skrypcik chodzi fajnie, dodaje co chce, ale jakos na koncu wywala mi ta petle. Pisze dopiero pierwszy skrypt php+mySQL wiec jestem strasznym noobem w tym temacie. Manual mi niebardzo pomogl :/

Nie widze powodu dla ktorego to mi sie wysypuje sad.gif

pomozcie jak mozecie smile.gif (a wiem ze mozecie winksmiley.jpg )
radziowi
Zamiast pętli foreach zastosuj:
  1. <?php
  2. while($wynik=mysql_fetch_array($wykonaj)){
  3. echo $wynik['nazwa'];
  4. }
  5. ?>
rozny
Dobra wymiekam... Zmienilem Tak jak sugerowales jednak dalej nie zwracalo nic, zamienilem echo (""); na print_r(""); i poprawilem tez zapytanie do bazy danych bo bylo nie prawidlowe i teraz kod wyglada tak:

  1. <?php
  2. $show = 'SELECT * FROM `magazyn` ORDER BY `magazyn` . `TOWARY` ASC LIMIT 0, 30 ';
  3. $wykonaj = mysql_query("$show");
  4.  
  5. while($wynik=mysql_fetch_array($wykonaj)){
  6. print_r ("$wynik"). mysql_error;
  7. }
  8. ?>


A co mi zwraca? Prosze:

Cytat
ArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArray
ArrayArrayArrayArray


No i nie wiem, zwraca mi tablice... ale jakos nie dzieki za taka tablice winksmiley.jpg

pomozcie winksmiley.jpg
nospor
nie print_r ("$wynik")
a print_r ($wynik).
Wielka roznica.
Dostaniesz zawartosc tablicy tongue.gif
rozny
dzieki dzieki smile.gif tylko zwraca mi wartosci tablicy w takiej formie:

  1. Array ( [0] => 1 [ID] => 1 [1] => 23423rfas [TOWARY] => 23423rfas [2] => 1 [ID_DZIAL] => 1 [3] => 1234 [KOD] => 1234 [4] => 0 [CENA] => 0 ) Array ( [0] => 8 [ID] => 8 [1] => bemar [TOWARY] => bemar [2] => 1 [ID_DZIAL] => 1 [3] => dmp0901 [KOD] => dmp0901 [4] => 0 [CENA] => 0 ) Array ( [0] => 9 [ID] => 9 [1] => bemar [TOWARY] => bemar [2] => 1 [ID_DZIAL] => 1 [3] => DM-S-1230 [KOD] => DM-S-1230 [4] => 0 [CENA] => 0 ) Array ( [0] => 7 [ID] => 7 [1] => janek [TOWARY] => janek [2] => 6 [ID_DZIAL] => 6 [3] => jan-121-ek [KOD] => jan-121-ek [4] => 0 [CENA] => 0 ) Array ( [0] => 10 [ID] => 10 [1] => sadasd [TOWARY] => sadasd [2] => 1 [ID_DZIAL] => 1 [3] => sad12412 [KOD] => sad12412 [4] => 0 [CENA] => 0 ) Array ( [0] => 11 [ID] => 11 [1] => sadasd [TOWARY] => sadasd [2] => ...


pewno w manuali musze pogrzebac? Nie wiem... Zwaraca mi cala tablice a nie same jej wartosci? Dobrze rozumuje?
nospor
http://pl.php.net/manual/pl/language.types.array.php
tam masz napisane co i jak
rozny
Szczerze mowiac to zglupialem juz zupelnie sad.gif Rozumiem ze musze niejako sformatowac ta tablice do odpowiedniego wyswietlenia samych danych, ale jak?

  1. <?php
  2. $show = 'SELECT * FROM `magazyn` ORDER BY `magazyn` . `ID` ASC LIMIT 0, 30 ';
  3.  
  4. $wykonaj = mysql_query("$show");
  5.  
  6. $wynik=mysql_fetch_array($wykonaj);
  7.  
  8. $tablica = array($wynik);
  9.  
  10.  print_r ($tablica). mysql_error;
  11.  
  12. ?>


Jakos nie wydaje mi sie zeby to mialo zadzialac :/
nospor
Tablica sklada sie z klucza i wartosci. chcac wyswietlic dana wartosc z klucza robisz $tab['klucz'], czyli dla towarow u ciebie:

  1. <?php
  2. while($wynik=mysql_fetch_array($wykonaj)){
  3.  echo 'Towary: '.$wynik['TOWARY'];
  4. //analogicznie inne pozycje z tablicy
  5. }
  6. ?>

ale to bylo w linku co ci podalem. trzeba bylo sie troche nad tym zastanowic tongue.gif
rozny
Dzieki wielkie smile.gif O to mi wlasnie chodzilo, ale nie ogarnalem tego winksmiley.jpg

Jeszcze na maaaaaaaaaaaaaaksa duzo nauki i cwiczen przede mna smile.gif

dzieki jeszcze raz i pozdrawiam smile.gif

EDIT: Jest jeszcze tylko maly problem przy zapisywaniu danych do bazy. Zapisuje mi prawidlowo wszystkie dane ktore podam w formularzu, oprocz ceny.. Nie wiem gdzie moze lezec blad. Oto kod:

  1. <?php
  2. $TOWARY = $_GET['TOWARY'];
  3. $ID_DZIALY = $_GET['ID_DZIALY'];
  4. $KOD = $_GET['KOD'];
  5. $CENA = $GET_['CENA'];
  6. $connect = mysql_connect('localhost', '***', '***')
  7.  
  8. or die('Brak polaczenia z serwerem mySQL.<br />Błąd: '.mysql_error());
  9.  
  10. echo ("Polaczenie z serwerem jest aktywne.<br/>");
  11.  
  12. $db = mysql_select_db('sklep', $connect)
  13.  
  14. or die('Brak polaczenia z baza danych<br />Blad: '.mysql_error());
  15.  
  16. echo ("Polaczenie z baza danych jest aktywe.<br />");
  17.  
  18. $add = mysql_query("INSERT INTO `magazyn` (`ID` , `TOWARY` , `ID_DZIAL` , `KOD` , `CENA`)
  19.  
  20. VALUES (NULL, '$TOWARY' , '$ID_DZIALY' , '$KOD' , '$CENA' ) ");
  21.  
  22. if ($add) echo ("Towar dodany poprawnie");
  23. else echo ("Nie dodano towaru");
  24.  
  25. ?>


Pole 'cena' ma wlasciwosc: int(255), wiec powinien przyjmowac liczby, a zapisuje zawsze 0. Nie wiem czy jest blad w skrypcie zapisujacym (wg. mnie tam bledu nie ma), czy moze problem tkwi w nieodpowiednim ustawieniu wlasciwosci pola 'cena'

...

EDIIE(T): Dobra juz sobie poradzilem smile.gif tnx anyway smile.gif
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.