Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Pętla while w tablicy array
Forum PHP.pl > Forum > Przedszkole
andrzej7322
Witam, mam problem potrzebuje wyciągnąć dane z mysql i wstawic je do tablicy to sa trzy ostatnie rekordy i stworzyłem takie coś tylko to nie dizała.
  1. $nowyzap=mysql_query("SELECT * FROM products ORDER BY id DESC LIMIT 3");
  2. while($nowywyk=mysql_fetch_array($nowyzap)){
  3. $tablica .='"'.$nowywyk['id'].'",';
  4. }
  5. $tablica=substr($tablica, 0 ,-1);
  6. $tab=array($tablica);

z góry dziękuję za pomoc.
dg2001
  1. $tablica .='"'.$nowywyk['id'].'",'


A dlaczego taki zapis blinksmiley.gif

a może tak:
  1. $i = 0;
  2. while ($nowywyk = mysql_fetch_assoc($tSql)) {
  3. $tablica[$i] = $nowywyk['id'];
  4. $i++;
  5. }
everth
  1. function mysql_fetch_column($query,$column) { //$query - zapytanie, $column - nazwa kolumny
  2. $resultArray = array();
  3. while($row = mysql_fetch_assoc($query)) {
  4. $resultArray[] = $row[$column];
  5. }
  6. return $resultArray;
  7. }
andrzej7322
Zrobiłem tak jak pisaliście i dalej nie działa
  1. $nowyzap=mysql_query("SELECT * FROM products ORDER BY id DESC LIMIT 3");
  2. function mysql_fetch_column($query,$column) {
  3. $resultArray = array();
  4. while($row = mysql_fetch_assoc($query)) {
  5. $resultArray[$column][] = $row[$column];
  6. }
  7. return $resultArray;
  8. }
  9. $tab=mysql_fetch_column($nowyzap,'id');
  10. if(in_array($wyk['id'], $tab)){
  11. $id2='nowy';
  12. }

otrzymałem takie coś
andrzejk
kiedyś napisałem sobie taka funkcje, wynik zapytania zamieni na tablice 1 wymiarowa
(na pierwszej pozycji będzie ilość kolumn - wynikających z zapytania, dzięki temu wiadomo jak podzielić dane wiersze)

  1. function wynik_zapytania($zapytanie){
  2.  
  3. $result = mysql_query($zapytanie);
  4.  
  5. //nie musze znac danej tabeli - ilosci kolumn lub ich nazw
  6. while($row = mysql_fetch_row($result)){
  7.  
  8. //while przechodzi po kolejnych wierszach
  9.  
  10. $tablica[0] = count($row); //liczba kolumn
  11.  
  12. //forem przechodze po poszczegolnych komorkach danego wiersza
  13. for($i = 0; $i < $tablica[0]; $i++){
  14. $tablica[] = $row[$i];
  15. }
  16. }
  17. return $tablica; //tablica jednowymiarowa w $tablica[0] ilosc kolumn
  18. }


a jakbyś chciał wyświetlanie to może być np.

$zapytanie = "";
$tab = wynik_zapytania($zapytanie);

for ($i = 1; $i < count($tab); $i++){
echo $tab[$i];
echo $przerywnik = ($i % $tab[0] != 0) ? ',' : '<br />';
}
everth
W mojej funkcji był błąd, poprawiłem ją.
andrzej7322
dalej nie działa teraz funkcja nie ma limitu na 3 tylko wszystkie id pokazuje.
może jest jakiś inny sposób by wyciągnąć id 3 ostatnich rekordów z bazy i pozniej ja mam pętle while która pokazuje mi wszystkie rekordy z bazy i chcę aby te trzy miały oznakowanie nowe to wygląda tak
  1. $nowyzap=mysql_query("SELECT * FROM products ORDER BY id DESC LIMIT 3");
  2. function mysql_fetch_column($query,$column) {
  3. $resultArray = array();
  4. while($row = mysql_fetch_assoc($query)) {
  5. $resultArray[] = $row[$column];
  6. }
  7. return $resultArray;
  8. }
  9. $tab=mysql_fetch_column($nowyzap,'id');
  10. while($wyk=mysql_fetch_array($zapproducts)){
  11. if(in_array($wyk['id'], $tab)){
  12. $id2='nowy';
  13. }
  14. }
everth
Spróbuj tak:
  1. SELECT * FROM products ORDER BY id DESC LIMIT 0,3
andrzej7322
Temat do zamknięcia poradziłem sobie
  1. $result=mysql_query("SELECT * FROM products ORDER BY id DESC LIMIT 3");
  2. $array=array();
  3. while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
  4. $array[]=$row['id'];
  5. }
  6. if($wyk['id']==$array[0] OR $wyk['id']==$array[1] OR $wyk['id']==$array[2] ){
  7. $id2='nowy';
  8. }
  9. else $id2='';
Neeke
Może jakieś błędy czy coś pokazuje?

  1.  
  2. //wstaw takie coś
  3. $nowyzap=mysql_query("SELECT * FROM products ORDER BY id DESC LIMIT 3") or die(mysql_error() .' '. mysql_errno() .');


jeżeli wszystko masz ok w zapytaniu to powinno przejść jeżeli nie masz to będzie błąd.

A nie lepiej jest wykonać coś takiego?
  1. while($nowywyk=mysql_fetch_array($nowyzap)){
  2. $tablica[]=$nowywyk['id'];
  3. }
  4. echo'<pre>';
  5. print_r($tablica);


Chyba ten sam efekt będzie czyż nie?


@UP
I się spóźniłem 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.