Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] W phpmyadmin dobrze a w skrypcie źle
srwsio
post 16.01.2013, 19:16:08
Post #1





Grupa: Zarejestrowani
Postów: 82
Pomógł: 1
Dołączył: 20.01.2005
Skąd: Szczecin

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


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ę
Go to the top of the page
+Quote Post
pitu
post 16.01.2013, 19:39:56
Post #2





Grupa: Zarejestrowani
Postów: 476
Pomógł: 96
Dołączył: 10.04.2008
Skąd: Koszalin

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


Spróbuj podmienić:

  1. $v='select * FROM '.$dbss['prfx'].'_wojo WHERE s_id = '.$id.' and DATA >= DATE_SUB(NOW(), INTERVAL 3 DAY)';


--------------------
HTML/CSS/JS: jsfiddle
SQL: sqlfiddle
Go to the top of the page
+Quote Post
srwsio
post 16.01.2013, 20:19:12
Post #3





Grupa: Zarejestrowani
Postów: 82
Pomógł: 1
Dołączył: 20.01.2005
Skąd: Szczecin

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


niestety zmiana apostrofu nie pomogła..... może ktoś inny spotkał taki problem?
Go to the top of the page
+Quote Post
mortus
post 16.01.2013, 21:06:39
Post #4





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


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.
Go to the top of the page
+Quote Post
srwsio
post 17.01.2013, 11:17:44
Post #5





Grupa: Zarejestrowani
Postów: 82
Pomógł: 1
Dołączył: 20.01.2005
Skąd: Szczecin

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


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
Go to the top of the page
+Quote Post
skowron-line
post 17.01.2013, 12:55:47
Post #6





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


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


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
srwsio
post 17.01.2013, 13:07:31
Post #7





Grupa: Zarejestrowani
Postów: 82
Pomógł: 1
Dołączył: 20.01.2005
Skąd: Szczecin

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


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.  


Ten post edytował srwsio 17.01.2013, 13:36:03
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 02:21