Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: JS blokuje MySQL
Forum PHP.pl > Forum > Przedszkole
qbas-s
Witam mój problem polega na tym, że korzystając z ajaxa i wczytując poprzez niego plik .php który próbuje łączyć się z mysql wyskakują mi błędy:

Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\usr\www\pr_inz\public\user_panel\choose_cat.php on line 7

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\usr\www\pr_inz\public\user_panel\choose_cat.php on line 7

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\usr\www\pr_inz\public\user_panel\choose_cat.php on line 8





Połączenie z bazą jest prawidłowe, bo bez pośrednictwa js jest ok.

Tak ładuje plik php:

function getData(dataSource, divID)
{
if(XMLHttpRequestObject)
{
var obj = document.getElementById(divID);
XMLHttpRequestObject.open("GET", dataSource);
XMLHttpRequestObject.onreadystatechange = function ()
{
if (XMLHttpRequestObject.readyState == 4 &&
XMLHttpRequestObject.status == 200)
{
obj.innerHTML = XMLHttpRequestObject.responseText;
}
}
XMLHttpRequestObject.send(null);
}
}


Co jest nie tak?

Dodatkowo jak w ładowanym pliku zobię coś takiego echo "łłłłłłąąąąąąćććć"; to mam krzaki.
Bez JS użycia jest normalnie(tak jakby js zmieniał kodowanie)

Pomocy

Co do kodowania problem rozwiązany:)

XMLHttpRequestObject.overrideMimeType('text/html; charset=UTF-8');

zamiast UTF miałem ISO:)

Nadal pozostaje problem z bazą:/
230005
Bez kodu php to sobie możemy pozgadywać, a ja zgaduję, że skrypt oczekuje jakichś danych w jednej z tablic superglobalnych i ich nie dostaje. Czy użytkownik odbc to właściwy użytkownik tej bazy?

PS.
Zmieniłbym tytuł tematu winksmiley.jpg
qbas-s
Kod php jest jak z elementarza i bardzo podstawowy przeznaczony do celów testowych:)

  1.  
  2. $q="SELECT * FROM category_2 where previous_cat='2'";
  3. $r=mysql_query($q);
  4. echo "<select id=\"cat2\" name=\"cat2\" size=\"13\" >";
  5. echo "<option selected>$row[name]</option>";
  6. while($row=mysql_fetch_array($r))
  7. echo "<option>$row[name]</option>";
  8. echo "</select>";
  9.  


wczytuje go poprzez funkcję getDate();

Baza posiada nazwę użytkownika root, nie wiem skąd się wzieło ODBC :///
Mephistofeles
A gdzie się łączysz z bazą?
qbas-s
wcześniej już napisałem "Połączenie z bazą jest prawidłowe, bo bez pośrednictwa js jest ok."
mysql_conn.php jest includowany do index.php

Wszystko działa elegancko do momentu kiedy js wczytuje php które próbuje robić zapytanie do mysq
230005
Cytat
Połączenie z bazą jest prawidłowe, bo bez pośrednictwa js jest ok


Sam nieraz podobnie tu pisałem, a potem się okazywało, że wcześniej nie było ok, po prostu błąd sobie występował tylko w określonych przypadkach. Pokaż cały kod który jest używany.

Swoją drogą, to co nam po tym kodzie który dałeś, skoro błędy ewidentnie wskazują na miejsce gdzie się łączysz...
qbas-s
  1.  
  2. include("public/config.php");
  3.  
  4. $link = mysql_connect($host,$user, $pass)
  5. or die("Błąd połącznie z bazą danych");
  6. mysql_query("SET NAMES 'utf8'");
  7.  


$host, $db, $user i $pass oczywiście pobieram z confin.php
batman
A czy dołączasz ten plik do skryptu php, który wywołujesz ajaxem? Jeśli nie, to stąd Twoje problemy.
qbas-s
Ogólny zarys połączenia do mysql jest taki:
-- index.php - na początki incuduje plik który łączy się z php
-- index.php - w trakcie są includowane inne pliki które są komponentami i w nich już nie trzeba wstawiać połączenia do mysql bo jest to już zainicjowane w index
Plików includowanych jest mnóstwo. Wszystkim zarządzają instrukcje warunkowe. W wielu plikach jest łączenie się z mysql i działa to bardzo dobrze.
Problem jest tylko wtedy jak za pomocą ajax wczytuje do diva plik php który chce się łączyć z mysql. Nie można zainicjować w tym przypadki
kolejnego razu połącznia bo będzie błąd.
W akcie desperacji nawet to zrobiłem ale efekt był taki jak się spodziewałem:/
-- index.php - na końcu jest zamknięcie połącznia



Dodatkowo jak w php wczytywanym przez getData() zrobię coś takiego

<script type="text/javascript">
document.write('test');
</script>

To napis test się nie pojawia - tak jakby JS w tym pliku byłby ignorowany:/

Nie rozumie w czym problem:/
batman
A jak się nazywa plik, do którego odwołujesz się ajaxem? I czy w tym pliku dodałeś połączenie z bazą danych?
qbas-s
plik nazywa się choose_cat.php

Tak jak wcześniej napisałem ten plik jest includowany do index.php gdzie już jest zainicjowane połączenie z bazą
nospor
no ale skoro ty sie odwolusze bezposrednio do choose_cat.php to jemu zwisa i powiewa gdzie on jest includowany. On nie dostaje połaczenia i koniec kropka. A nie dostaje bo ty go includujesz w index.php, ktore ma sie nijak do twojego aktualnego wywolania.

przenosze, bo na chwile obecną z ajaxem to nie ma zadnego związku
qbas-s
widocznie jakoś się ma skoro mam do index.php includowane pliki tylko w php które wykonują zapytania do mysql i im wystarcza tylko to że na początku index.php includuje plik php z połączeniem do bazy.
nospor
sam napisales ze ajaxem wywolujesz bezposrednio plik choose_cat.php.
A sam plik choose_cat.php includujesz dopiero w index.php

Naprawdę nie widzisz tu pewnej rozbieżnosci?
qbas-s
Miałeś rację przyznaje soga:)
W momencie kiedy includuje się coś przez ajaxa wtedy ścieżki do plików trochę się zmieniają.

A czemu podczas includowaniu pliku przez ajax nie działa js który jest zawarty w tym pliku? np:

<script type="text/javascript"> document.write('test'); </script>
nospor
kod js nie jest domyslnie wykonywany. Jakbys uzyl np. jQuery i html() to by ci sie js wykonal.
qbas-s
domyślam się że tej domyślnie ustawionej opcji nie da się zmodyfikować?smile.gif
nospor
Domyslna z ciebie bestia winksmiley.jpg
qbas-s
przeczytałem Twój opis pod postami i jakoś tak samo mi przyszło:)
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.