Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z mysql
Forum PHP.pl > Forum > PHP
artandsoft
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...?
Darti
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
artandsoft
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...
Darti
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. ?>
artandsoft
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.
Darti
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 ) ...
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.