Bonjour à tous :)

j'essais d'installer le script " AutoComplétion Code Postal/Ville avec jQuery"...

mais coté PHP je ne programme pas en PDO, de fait le fichier AutoCompletion.php ne fonctionne pas ....

J'essai donc de le réécrire en PHP/MySQL classique, mais le tableau $list

retourne
0: "{CodePostal:63000, Ville:Clermont-Ferrand}"
1: "{CodePostal:63000, Ville:Clermont-Ferrand}"
2: "{CodePostal:63001, Ville:Clermont-Ferrand}"

au lieu de
0: {CodePostal:63000, Ville:Clermont-Ferrand}
1: {CodePostal:63001, Ville:Clermont-Ferrand}
2: {CodePostal:63002, Ville:Clermont-Ferrand}

de fait ca BUG :(

quelqu'un pourrait-il me dire comment faire, SVP ?
MERCI DE VOTRE AIDE !! :)

// --------------------------------------------------------------------------------
require_once('./config.inc.php');

//Initialisation de la liste
$list = array();

//Construction de la requete
$strQuery = "SELECT CP AS CodePostal, VILLE AS Ville FROM cp_autocomplete WHERE ";

if (isset($_POST"codePostal"])){
$strQuery .= "CP LIKE '".mysql_real_escape_string($_POST'codePostal'])."%' ";
}
else {
$strQuery .= "VILLE LIKE '".mysql_real_escape_string($_POST'ville'])."%' ";
}
$strQuery .= "AND CODEPAYS = 'FR' ";

//Limite
if (isset($_POST"maxRows"])){
$strQuery .= "LIMIT 0,".mysql_real_escape_string($_POST'maxRows'])."";
}

$query = mysql_query($strQuery);

$i=0 ;
while ($enr = mysql_fetch_array($query)) {

$list$i] = "{CodePostal:".$enr'CodePostal'].", Ville:".addslashes($enr'Ville'])."}" ;

$i++;
}

// --------------------------------------------------------------------------------

// le code initial étant
// --------------------------------------------------------------------------------

require_once('./AutoCompletionCPVille.class.php');

//Initialisation de la liste
$list = array();

//Connexion MySQL
try
{
$db = new PDO('mysql:host=localhost;dbname=bdname', 'root', 'root');
}
catch (Exception $ex)
{
echo $ex->getMessage();
}

//Construction de la requete
$strQuery = "SELECT CP CodePostal, VILLE Ville FROM autocomplete WHERE ";
if (isset($_POST"codePostal"]))
{
$strQuery .= "CP LIKE :codePostal ";
}
else
{
$strQuery .= "VILLE LIKE :ville ";
}
$strQuery .= "AND CODEPAYS = 'FR' ";
//Limite
if (isset($_POST"maxRows"]))
{
$strQuery .= "LIMIT 0, :maxRows";
}
$query = $db->prepare($strQuery);
if (isset($_POST"codePostal"]))
{
$value = $_POST"codePostal"]."%";
$query->bindParam(":codePostal", $value, PDO::PARAM_STR);
}
else
{
$value = $_POST"ville"]."%";
$query->bindParam(":ville", $value, PDO::PARAM_STR);
}
//Limite
if (isset($_POST"maxRows"]))
{
$valueRows = intval($_POST"maxRows"]);
$query->bindParam(":maxRows", $valueRows, PDO::PARAM_INT);
}

$query->execute();

$list = $query->fetchAll(PDO::FETCH_CLASS, "AutoCompletionCPVille");;

echo json_encode($list);
// --------------------------------------------------------------------------------

Merci bonne journée

2 réponses


iCreative
Auteur
Réponse acceptée

Merci Chokkan Web pour ton aide,

cela fonctionne "partiellement" en effet si le résultat contient un caractére accentuée, alors le JS retourne NULL, j'ai donc opté pour la solution suivante

while ($enr = mysql_fetch_array($req)) {
// $list] = json_decode(json_encode($enr), FALSE);
         $list] = array(
                'CodePostal' => $enr'CodePostal'],
                'Commune' => "".utf8_encode($enr'Commune']).""
        ) ;
}

Merci encore pour ton aide

Salut,

Moi si j'étais toi, je "tricherais" en faisant ça

// --------------------------------------------------------------------------------
require_once('./config.inc.php');
//Initialisation de la liste
$list = array();
//Construction de la requete
$strQuery = "SELECT CP AS CodePostal, VILLE AS Ville FROM cp_autocomplete WHERE ";
if (isset($_POST"codePostal"])){
    $strQuery .= "CP LIKE '".mysql_real_escape_string($_POST'codePostal'])."%' ";
}
else {
    $strQuery .= "VILLE LIKE '".mysql_real_escape_string($_POST'ville'])."%' ";
}
$strQuery .= "AND CODEPAYS = 'FR' ";
//Limite
if (isset($_POST"maxRows"])){
    $strQuery .= "LIMIT 0,".mysql_real_escape_string($_POST'maxRows'])."";
}
$query = mysql_query($strQuery);
while ($enr = mysql_fetch_assoc($query)){
    $list] = json_decode(json_encode($enr), FALSE);
}
echo json_encode($list);

En fait json_encode($enr) transforme ton tableau php en tableau json et json_decode avec comme deuxième paramètre FALSE, transforme un tableau json en objet php :)

Bisous