Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][mysql] problem z czytaniem bazy
Forum PHP.pl > Forum > Przedszkole
unsec
WItam, walcze z problemem który raczej zaistnieć nie powinien a mimo to jest.
Mam skrypt działający ok, czyta dane z tablicy. Usiłuję zachęcić go do odczytania nazw tabel w bazie i nijak nie mogę.

  1. function createoptions($table , $id , $field , $value)
  2. {
  3. $sql = ("select * from $table ORDER BY $field ASC");
  4. $res = mysql_query($sql) or die(mysql_error());
  5. if (mysql_num_rows($res) > 0) {
  6. while ($a = mysql_fetch_assoc($res))
  7. $out[] = "{optionValue: {$a[$id]}, optionDisplay: '$a[$field]'}";
  8. return "[" . implode("," , $out) . "]";
  9. } else
  10.  
  11. return "[{optionValue: -1 , optionDisplay: 'No result'}]";
  12. }
  13.  
  14. if (isset($_GET['country'])) {
  15. echo createoptions("alfa" , "alfa_id" , "alfa" , $_GET['country']);
  16. }
  17.  
  18. die();


zmieniam odczyt z 'mysql_fetch_assoc' na 'mysql_fetch_array' i wciąz elegancko działa

  1. function createoptions($table , $id , $field , $value)
  2. {
  3. $sql = ("select * from $table ORDER BY $field ASC");
  4. $res = mysql_query($sql) or die(mysql_error());
  5. if (mysql_num_rows($res) > 0) {
  6. while ($a = mysql_fetch_array($res))
  7. $out[] = "{optionValue: {$a[0]}, optionDisplay: '$a[0]'}";
  8. return "[" . implode("," , $out) . "]";
  9. } else
  10.  
  11. return "[{optionValue: -1 , optionDisplay: 'No result'}]";
  12. }
  13.  
  14. if (isset($_GET['country'])) {
  15. echo createoptions("alfa" , "alfa_id" , "alfa" , $_GET['country']);
  16. }
  17.  
  18. die();


no i ostatecznie zmieniam źródło odczytu z tabeli alfa na całą bazę (chcę uzyskać listing nazw tabel w bazie)

  1. function createoptions($table , $id , $field , $value)
  2. {
  3. $sql = ("SHOW TABLES ");
  4. $res = mysql_query($sql) or die(mysql_error());
  5. if (mysql_num_rows($res) > 0) {
  6. while ($a = mysql_fetch_array($res))
  7. $out[] = "{optionValue: {$a[0]}, optionDisplay: '$a[0]'}";
  8. return "[" . implode("," , $out) . "]";
  9. } else
  10.  
  11. return "[{optionValue: -1 , optionDisplay: 'No result'}]";
  12. }
  13.  
  14. if (isset($_GET['country'])) {
  15. echo createoptions("alfa" , "alfa_id" , "alfa" , $_GET['country']);
  16. }
  17.  
  18. die();


no i jest kicha, nie przechodzi odczytu z bazy więc nawet 'No result' sie nie pokazuje. Pierwszy raz mam taki zgryz z tym poleceniem.

Funkcja jest częścią skryptu zależnych list i pracuje z ajaxem.

Jeśli ktoś miałby skuteczny pomysł na rozwiązanie tej zagwozdki to się polecam.
Uwaga - funkcja działa ok do momentu przejścia z tablicy alfa na całą bazę.
pzdr.

PS. postanowiłem dodać jeszcze część (javascript) odpowiadającą za współpracę z tąże funkcją bo może to wcale nie w niej jest problem

  1. $("select#country").change(function(){
  2. $.getJSON("select_2.php",{country: $(this).val(), ajax: 'true'}, function(j){
  3. var options = '';
  4. for (var i = 0; i < j.length; i++) {
  5. options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>';
  6. }
  7. $("select#alfa").html(options);
  8. })
  9. })
mortus
A testowałeś skrypty oddzielnie, tzn. czy testowałeś skrypt select_2.php w przeglądarce. Bo zauważ, że dane w javascript pobierasz w formacie json, ale w przypadku wystąpienia błędu nie generujesz odpowiednich danych. Chodzi mi o to, że może nie masz odpowiednich uprawnień, a funkcja mysql_error() wyświetla adekwatny komunikat, ale nie wysyła go za pomocą AJAX-a, bo nie jest on zwracany w formacie json. Nie chodzi o to, że zapytanie nie zwraca rekordów, ale o to, że się w ogóle nie wykonuje.
unsec
testowałem całość tzn 'plik.php', 'select_1.php' i select_2.php'. Wszystko działa poprawnie do momentu kiedy w pliku 'select_2.php' zmieniam 'select itd. na 'SHOW itd.'. Wydaławoby sie że skoro zapytanie i jego otoczenie działa poprawnie to zmiana adresowanej struktury z której są sczytywane dane nie jest znacząca. To tylko zmiana wskazania. Okazuje sę że jednak jest znaczące. MOże Ajax ma tu problemy z sczytaniem struktury wyższego rzędu (nie tabeli ale bazy). Choć w innym rozwiązaniu (które niestety nie działa mi pod CMSem) nie mam takiego problemu i elegancko czyta bazę.
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.