Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z mysql
artandsoft
post 16.05.2007, 10:38:56
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 1.05.2005

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


Witam,
pisze uniwersalny interface do kilku baz i mam problem przy mysql.
W bazie w tabeli "test" mam wbite jako varchar liczby 1, 2, ..., 15.
i chce je wypisac pokolei lecz przy mysql zwraza mi: 1, 2, 5, 9, 14 odpowiednio przy 0, 1, 2, 3 i 4 obrocie for w pliku testowym....

plik testowy wyglada tak:

  1. <?php
  2. $zap = 'select * from test';
  3. $wyn = $db->db_query($zap);
  4.  
  5. echo '<br /><br />';
  6.  
  7. for($i=0; $i<$ile; $i++){
  8. echo $i . ' - ' . $db->db_fetch($wyn, $i, 'kol') . '<br />';
  9. }
  10. ?>



db_fetch():
  1. <?php
  2. function db_fetch($result, $index, $name)
  3. {
  4. if($result != null && $index>=&& $name != null)
  5. {
  6. for($i=0; $i<=$index; $i++)
  7. {
  8. $row = $result->fetch_assoc();
  9.  
  10. if($i == $index)
  11. {
  12. return $row[$name];
  13. }
  14. }
  15. }
  16. else
  17. {
  18. return null;
  19. }
  20. }
  21. ?>


co skopsałem, że nie wypisuje ich po kolei...?
Go to the top of the page
+Quote Post
Darti
post 16.05.2007, 11:19:35
Post #2





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

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


Wypisuje Ci w kolejności, w jakiej wpisałeś, żeby posortować np rosnąco zrób zapytanie w stylu
  1. SELECT * FROM test ORDER BY KolumnaSortowana


--------------------
The answer is out there, Neo. It's looking for you. And it will find you, if you want it to.
SERVER_SOFTWARE : Apache/2.2.4 (Win32) PHP/5.2.1
MySQL Client API version : 5.0.27
Go to the top of the page
+Quote Post
artandsoft
post 16.05.2007, 11:47:51
Post #3





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 1.05.2005

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


Może źle to opisałem...

w bazie mam wpisane 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
a wypisuje mi tylko 1,2,5,9,14 mimo, że wywołuje db_fetch() dla tych 15 rekordów.

Jak wywołam: (obrót pętli for w pliku test.php -> wynik)

0 -> 1
1 -> 2
2 -> 5
3 -> 9
4 -> 15
6 ->
7 ->
.
.
.
15 ->

a powinno być:

0 -> 1
1 -> 2
2 -> 3
3 -> 4
.
.
.
14 -> 15


nie wiem czemu się tak dziwnie zachowuje...
Go to the top of the page
+Quote Post
Darti
post 16.05.2007, 12:19:01
Post #4





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

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


Sprawdź takie coś, ale cały ten pomysł z takim korzystaniem z wyników jest jak dla mnie trochę 'pokrzywiony' (nie wiem dlaczego, na intuicję mówię) :
  1. <?php
  2. function db_fetch($result, $index, $name)
  3. {
  4. if($result != null && $index>=&& $name != null)
  5. {
  6. for($i=0; $i<=$index; $i++)
  7. {
  8. mysql_data_seek($result,0);
  9. $row = $result->fetch_assoc();
  10.  
  11. if($i == $index)
  12. {
  13. return $row[$name];
  14. }
  15. }
  16. }
  17. else
  18. {
  19. return null;
  20. }
  21. }
  22. ?>


--------------------
The answer is out there, Neo. It's looking for you. And it will find you, if you want it to.
SERVER_SOFTWARE : Apache/2.2.4 (Win32) PHP/5.2.1
MySQL Client API version : 5.0.27
Go to the top of the page
+Quote Post
artandsoft
post 16.05.2007, 19:49:47
Post #5





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 1.05.2005

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


Pomogło smile.gif dzieki

Skoro mówisz, że pomysł jest 'pokrzywiony' jak można inaczej zrobić tak by w np. config.php pod jakąś zmienną wpisać z jakiej bazy korzystam i nie zmieniać nic w kodzie strony?

Może znasz lepsze rozwiązanie, ale mi nic nie przychodzi innego do głowy...
Styl tej funkcji przypomina wyświetlanie danych tak jak jest to w postgresql.
Go to the top of the page
+Quote Post
Darti
post 16.05.2007, 22:21:22
Post #6





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

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


Zwracaj sobie całego arraya z wynikiem zapytania, (fetch_array) a nie jeden wiersz. Tak myślę że bym zrobił (znowu na intuicję smile.gif ) ...


--------------------
The answer is out there, Neo. It's looking for you. And it will find you, if you want it to.
SERVER_SOFTWARE : Apache/2.2.4 (Win32) PHP/5.2.1
MySQL Client API version : 5.0.27
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: 19.07.2025 - 19:33