[RESOLU] Problème recherche autocomplete depuis migration php 5.3 à 5.4

Eléphant du PHP | 283 Messages

12 juin 2016, 18:45

Bonjour,

Je viens de modifier ma version de php et depuis j'ai un certain nombres de fonctionnalités qui ne fonctionnent plus. Entre autre la recherche en autocompletion sur mon site.
Je n'ai aucun message d'erreur mais elle a cessé de fonctionner. Donc je voulais savoir comment activer les erreurs ajax pour voir où se situe le problème ?
Voici le code :
<?php
define(PROTECTION_FICHIER, 	'protection_Projet');
include('inc/config.php');
function searchForKeyword($keyword) {
    global $bdd;
	$stmt = $bdd->prepare("SELECT * FROM `fiche_film` WHERE titre LIKE ? ORDER BY titre limit 6");
    $keyword = '%'. $keyword . '%';
    $stmt->bindParam(1, $keyword, PDO::PARAM_STR, 100);
    $isQueryOk = $stmt->execute();
    $results = array();
    if ($isQueryOk) {
      $results = $stmt->fetchAll();
    } else {
      trigger_error('Error executing statement.', E_USER_ERROR);
    }
	//
	$serieslimit=6-count($results);
	$stmt2 = $bdd->prepare("SELECT * FROM `fiche_serie` WHERE titre LIKE ? ORDER BY titre limit $serieslimit");
    $keyword = '%'. $keyword . '%';
    $stmt2->bindParam(1, $keyword, PDO::PARAM_STR, 100);
    $isQueryOk = $stmt2->execute();
    $results2 = array();
    if ($isQueryOk) {
      $results2 = $stmt2->fetchAll();
    } else {
      trigger_error('Error executing statement.', E_USER_ERROR);
    }

    $bdd = null; 
	
	$results_fin = array_merge($results, $results2);

    return $results_fin;
}
$keyword = $_GET['keyword'];
$data = searchForKeyword($keyword);
echo json_encode($data);
?>
Merci d'avance.

Eléphant du PHP | 283 Messages

13 juin 2016, 00:44

Je me suis rendu compte qu'en allant sur la console debug j'avais ce message :

SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data

Est ce que ça peut être l'erreur qui cause le non fonctionnement de la recherche en autocomplétion ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

13 juin 2016, 09:41

salut,

oui y a des chances.
A priori il y a un truc que js n'aime pas au début de la structure json.
tu devrais avoir un onglet réseau te permettant d'afficher les requêtes http de la page en court.
sélectionne celle qui correspond à l'url de ton service et tu pourras voir le retour (et donc ce qui n'est pas "bon" dans le json envoyé).

Tu peux aussi simplement appeler le service json dans ton navigateur directement pour le tester / déboguer.

Il est possible que tu ai une erreur php qui met le souk la dedans. Tu le verras simplement en examinant le retour de la requête serveur.

un validateur json : https://jsonformatter.curiousconcept.com/


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 283 Messages

13 juin 2016, 14:07

Du coup j'ai réussi à corriger le problème. En fait il fallait modifier la première ligne de code :
define(PROTECTION_FICHIER, 	'protection_Projet');
Et ajouter les apostrophes comme ceci :
define('PROTECTION_FICHIER', 	'protection_Projet');
Merci encore Moogli ! ;)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

13 juin 2016, 14:14

de rien :)

@+
Il en faut peu pour être heureux ......