Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Pętla while w tablicy array
andrzej7322
post
Post #1





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 8.05.2010

Ostrzeżenie: (20%)
X----


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.
Go to the top of the page
+Quote Post
dg2001
post
Post #2





Grupa: Zarejestrowani
Postów: 71
Pomógł: 12
Dołączył: 9.01.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


  1. $tablica .='"'.$nowywyk['id'].'",'


A dlaczego taki zapis (IMG:style_emoticons/default/blinksmiley.gif)

a może tak:
  1. $i = 0;
  2. while ($nowywyk = mysql_fetch_assoc($tSql)) {
  3. $tablica[$i] = $nowywyk['id'];
  4. $i++;
  5. }


Ten post edytował dg2001 28.07.2010, 13:26:17
Go to the top of the page
+Quote Post
everth
post
Post #3





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

Ostrzeżenie: (0%)
-----


  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. }


Ten post edytował everth 28.07.2010, 14:02:16
Go to the top of the page
+Quote Post
andrzej7322
post
Post #4





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 8.05.2010

Ostrzeżenie: (20%)
X----


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ś
Go to the top of the page
+Quote Post
andrzejk
post
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 2
Dołączył: 28.07.2010

Ostrzeżenie: (0%)
-----


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 />';
}
Go to the top of the page
+Quote Post
everth
post
Post #6





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

Ostrzeżenie: (0%)
-----


W mojej funkcji był błąd, poprawiłem ją.
Go to the top of the page
+Quote Post
andrzej7322
post
Post #7





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 8.05.2010

Ostrzeżenie: (20%)
X----


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. }


Ten post edytował andrzej7322 28.07.2010, 15:26:34
Go to the top of the page
+Quote Post
everth
post
Post #8





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

Ostrzeżenie: (0%)
-----


Spróbuj tak:
  1. SELECT * FROM products ORDER BY id DESC LIMIT 0,3


Ten post edytował everth 28.07.2010, 16:15:53
Go to the top of the page
+Quote Post
andrzej7322
post
Post #9





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 8.05.2010

Ostrzeżenie: (20%)
X----


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='';
Go to the top of the page
+Quote Post
Neeke
post
Post #10





Grupa: Zarejestrowani
Postów: 124
Pomógł: 16
Dołączył: 22.02.2007
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/smile.gif)

Ten post edytował Neeke 28.07.2010, 17:23:41
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 14:55