PDA

View Full Version : [PHP] Problemi con Ajax e Query Full Text.


Ludo237
08-04-2011, 15:36
Hello world.
Oggi sono alle prese con un input normalissimo in html come questo

<td>Residenza:</td><td><input type="text" name="residenza" id="input_city" /><strong class="axt">*</strong></td><td><div id="residenza"></div></td>
Molto grezzo, questo input però è collegato ad una funzione Jquery qui sotto mostrata (inclusa ovviamente nella funzione padre $(document).ready....

$("#input_city").blur(function(){
var datastring = 'citta=' + this.value ;
$.ajax({
type: "GET",
url: "php_ajax/citta_dati.php",
data: datastring,
cache: true,
success: function(response)
{
$("#residenza").text(response) ;
}
});
}) ;


Questo codice ajax si connette ad una paginetta ovvero citta_dati.php dove, in base alla città scritta , dovrei ricavare CAP, provincia e regione.
eccola qui (ora non fa nulla se non dire che ha trovato il risultato)

<?php
require '../classi/inc.config.php' ;
$mysql = new MySQL ;
$mysql->Connetti() ;
if(isset($_GET['citta']) || !empty($_GET['citta']))
{
$citta = $mysql->CuraTesto($_GET['citta']) ;
$query = $mysql->Query("SELECT * FROM citta INNER JOIN province ON province.id_provincia = citta.idprovincia INNER JOIN regioni ON regioni.id_regione = province.idregione WHERE MATCH(nome_citta) AGAINST('$citta')") ;
$row = $mysql->Fetch($query) ;
if($row != 0 )
{
echo "risultato" ;
}
else
{
echo "non trovato" ;
}
}
else header("location:index.php") ;
?>


la classe e le relative funzioni vanno perchè le uso da altre parti perciò vi posso assicurare che funzionano... perchè mi esce sempre come risultato (nel div id="residenza") NON TROVATO !!!! :doh:

black_wizard
09-04-2011, 01:41
azzardo un ipotesi....
Hai provato la stessa funzione con una semplice richiesta GET senza usare ajax?
Perchè se funziona senza usare ajax..allora è possibile che il problema sia quando passa il valore(this.value) che forse ha qualche carattere strano perciò non trova riscontro nel database. (problema di encoding).
Se per esempio provi a mettere il carattere "&" vedrai che non apparirà nel $_GET['citta'].

Potresti usare utf8_decode($_GET['citta']) quando arriva al file citta_dati.php pppure fare l'escape del this.value e poi usare htmlentities($_GET['citta']) e vedere se cambia qualcosa..
sempre se è quello il problema.

Kenger
10-04-2011, 11:58
Per toglierti il dubbio se è un problema di encoding hai provato a mettere direttamente nella query il nome della citta al posto della variabile?

Ludo237
13-04-2011, 20:01
Il problema era nella query ... SELECT *, MATCH(nome_citta) AGAINST('$citta' IN BOOLEAN MODE) AS tot FROM citta INNER JOIN province ON province.id_provincia = citta.idprovincia INNER JOIN regioni ON regioni.id_regione = province.idregione INNER JOIN nazionalita ON nazionalita.id_nazione = regioni.idnazionalita WHERE MATCH(nome_citta) AGAINST('$citta' IN BOOLEAN MODE) ORDER BY tot DESC

con questa query funziona benissimo :read:

black_wizard
13-04-2011, 22:00
allora le premesse che hai fatto erano sbagliate. Tu avevi detto che avevi provato la stessa funzione perchè le usavi da altre parti.:mc:

Ludo237
21-04-2011, 23:31
allora le premesse che hai fatto erano sbagliate. Tu avevi detto che avevi provato la stessa funzione perchè le usavi da altre parti.:mc:

si scusa sono un idiota non ho specificato il fatto che della funzione non funzionasse la query XD