Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][mysql] problem z czytaniem bazy
unsec
post 7.08.2011, 15:52:28
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 5.08.2011

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


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


Ten post edytował unsec 7.08.2011, 15:58:24
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
mortus
post 7.08.2011, 17:00:43
Post #2





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

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


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.
Go to the top of the page
+Quote Post
unsec
post 7.08.2011, 18:40:02
Post #3





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 5.08.2011

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


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ę.
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 - 00:18