Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] W phpmyadmin dobrze a w skrypcie źle
Forum PHP.pl > Forum > Przedszkole
srwsio
Witam

Otóż co może być przyczyną iz takie zapytanie w phpmyadmin wywali mi to co chce czyli zwróci wszystkie pasujace wyniki:

  1. SELECT * FROM baza_wojo WHERE s_id = '2' AND DATA >= DATE_SUB(NOW(), INTERVAL 3 DAY)


a dokładnie takie samo zapytanie w skrypcie w pętli While wywala tylko jeden rekord dla jednego s_id

A wyglada to tak

  1. while($row=neutral_fetch_array($result)){
  2. //$result to wynik pobrania s_id z bazy bez powtórzeń
  3.  
  4. $v='select * FROM '.$dbss['prfx']."_wojo WHERE s_id = '$id' and DATA >= DATE_SUB(NOW(), INTERVAL 3 DAY) ";
  5. $c=neutral_query($v);
  6. $k=neutral_fetch_array($c);
  7.  
  8. print_r($k) ;
  9.  
  10. }


za wszelkie podpowiedzi rozwiazania dziękuję
pitu
Spróbuj podmienić:

  1. $v='select * FROM '.$dbss['prfx'].'_wojo WHERE s_id = '.$id.' and DATA >= DATE_SUB(NOW(), INTERVAL 3 DAY)';
srwsio
niestety zmiana apostrofu nie pomogła..... może ktoś inny spotkał taki problem?
mortus
Przyjżyj się dokładnie temu fragmentowi kodu i zobacz jak używasz funkcji neutral_fetch_array() (używasz jej tutaj dwa razy), neutral_fetch_array($c) pobiera jeden (aktualny) rekord z wyniku zapytania $c, nawet jeśli jest ich kilka. Poza tym może uda się pobrać interesujące Cię dane jednym zapytaniem (z JOIN), bo to co robisz w tej chwili jest mało optymalne.
srwsio
Cytat(mortus @ 16.01.2013, 21:06:39 ) *
neutral_fetch_array($c) pobiera jeden (aktualny) rekord z wyniku zapytania $c, nawet jeśli jest ich kilka.

no jasne że tak smile.gif

Boże jaki ja ............ ( wpisz co chcesz tongue.gif )


Dzięki wielkie
Człowiek szuka gdzieś rozwiazań a to takie banalne.



ps. to bardzo mały skrypt na własne potrzeby wiec JOIN nie bede uzywał a dwa jakoś nigdy do końca tego nie potrafiłem smile.gif

heh , pojawił sie kolejny problem którego nie moge rozwiazać.

Otóż postanowiłem jednak zrobic to jednym zapytaniem a mianowicie :
  1. SELECT * FROM czat_sojusz
  2. LEFT OUTER JOIN czat_wojo ON czat_sojusz.id = czat_wojo.s_id
  3. WHERE DATA >= DATE_SUB( NOW( ) , INTERVAL 3 DAY )
  4. LIMIT 0 , 30


Zapytanie wywala mi prawidłowo w phpmyadmin 9 wyników po 3 dla każdego sojuszu z 3 ostatnich dni

Jednak jak po tym zapytaniu dam w skrypcie:

  1. while($row=neutral_fetch_array($result)){
  2.  
  3. print_r($row);
  4. }

Aby sprawdzić jak wyglada tablica to okazuje sie że tych tablic jest od groma zamiast jednej.
  1. (
  2. [0] => 1
  3. [id] => 1
  4. [1] => Slaven
  5. [name] => Slaven
  6. [2] => 1
  7. [3] => 1
  8. [s_id] => 1
  9. [4] => 2
  10. [1040] => 2
  11. [5] => 2
  12. [780] => 2
  13. [6] => 2013-01-15 15:27:00
  14. [data] => 2013-01-15 15:27:00
  15. )
  16.  
  17. (
  18. [0] => 1
  19. [id] => 4
  20. [1] => Slaven
  21. [name] => Slaven
  22. [2] => 4
  23. [3] => 1
  24. [s_id] => 1
  25. [4] => 2
  26. [1040] => 2
  27. [5] => 2
  28. [780] => 2
  29. [6] => 2013-01-16 15:27:00
  30. [data] => 2013-01-16 15:27:00
  31. )
  32.  
  33. (
  34. [0] => 1
  35. [id] => 7
  36. [1] => Slaven
  37. [name] => Slaven
  38. [2] => 7
  39. [3] => 1
  40. [s_id] => 1
  41. [4] => 4
  42. [1040] => 4
  43. [5] => 4
  44. [780] => 4
  45. [6] => 2013-01-17 04:27:00
  46. [data] => 2013-01-17 04:27:00
  47. )

wywala tak zamiast jednej tablicy wielowymierowej na przyklad

czy możecie nakierować mnie jak te dane moge wyciagnać z tych tablic lub co robie źle ze nie jest to jedna tablica
skowron-line
Podstawy podstaw
  1. while($row=neutral_fetch_array($result)){ // ta pętla przypisuje do zmiennej $row element z wyniku zapytania czyli "wielowymiarowej tablicy"
  2. print_r($row); // <---- to jest jedna tablica
  3. echo $row['name']; //<--- tak się wyciąga dane z niej
  4. }
srwsio
Bardzo dziękuję ze zainteresowałeś sie tematem ale to co napisałeś to ja wiem. Wynik jaki pragnę osiagnac przedstawiam ponizej. Może ja zaprzeproszeniem od d... strony sie do tego zabieram?

Tak wyglada baza danych:

  1. CREATE TABLE IF NOT EXISTS `czat_sojusz` (
  2. `id` int(2) NOT NULL AUTO_INCREMENT,
  3. `name` varchar(64) NOT NULL,
  4. KEY `id` (`id`)
  5. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;
  6.  
  7. INSERT INTO `czat_sojusz` (`id`, `name`) VALUES
  8. (1, 'Slaven'),
  9. (2, 'Yakuza'),
  10. (3, 'Postrach');
  11.  
  12.  
  13.  
  14. CREATE TABLE IF NOT EXISTS `czat_wojo` (
  15. `id` int(6) NOT NULL AUTO_INCREMENT,
  16. `s_id` int(6) NOT NULL,
  17. `1040` smallint(2) NOT NULL,
  18. `780` smallint(2) NOT NULL,
  19. `data` datetime NOT NULL,
  20. PRIMARY KEY (`id`)
  21. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=26 ;
  22.  
  23. --
  24. -- Dumping data for table `czat_wojo`
  25. --
  26.  
  27. INSERT INTO `czat_wojo` (`id`, `s_id`, `1040`, `780`, `data`) VALUES
  28. (1, 1, 2, 2, '2013-01-15 15:27:00'),
  29. (2, 2, 3, 3, '2013-01-15 15:27:00'),
  30. (3, 3, 2, 2, '2013-01-15 15:27:00'),
  31. (4, 1, 2, 2, '2013-01-16 15:27:00'),
  32. (5, 2, 2, 2, '2013-01-16 15:27:00'),
  33. (6, 3, 2, 2, '2013-01-16 15:27:00'),
  34. (7, 1, 4, 4, '2013-01-17 04:27:00'),
  35. (8, 2, 3, 3, '2013-01-17 04:27:00'),
  36. (9, 3, 2, 2, '2013-01-17 04:27:00');


Tak wyglada mój kawałek kodu który chce uzyskać :

  1. <?php
  2.  
  3.  
  4. $query='SELECT *
  5. FROM '.$dbss['prfx'].'_sojusz
  6. LEFT OUTER JOIN '.$dbss['prfx'].'_wojo ON '.$dbss['prfx'].'_sojusz.id = '.$dbss['prfx'].'_wojo.s_id
  7. WHERE DATA >= DATE_SUB( NOW( ) , INTERVAL 3
  8. DAY )';
  9. $result=neutral_query($query);
  10.  
  11. while($row=neutral_fetch_array($result)){
  12.  
  13. ?>
  14. <pre>
  15. <?php print_r($row); //wyświetlam sobie tablice abym mógł zobaczyć jak sie odwołać do zmiennej ?>
  16. </pre>
  17. <?php
  18.  
  19. print '<tr class="odd">
  20. <th scope="row">'.$row['name'].'</th>';
  21.  
  22. print '<td>'.$row['questionmark.gif?'].'</td><td>'.$row['questionmark.gif?'].'</td>';// wojo wpisane dzisiaj
  23.  
  24. print '<td>'.$row['questionmark.gif?'].'</td><td>'.$row['questionmark.gif?'].'</td>';//wojo wpisane wczoraj
  25.  
  26. print '<td>'.$row['questionmark.gif?'].'</td><td>'.$row['questionmark.gif?'].'</td>';//wojo wpisane przedwczoraj
  27.  
  28. print '</tr>';
  29.  
  30. }
  31.  
  32.  
  33. ?>
  34.  
  35.  
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.