Problème requête PHP/MySQL

Fermé
delaville81 Messages postés 188 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 12 avril 2024 - 6 oct. 2010 à 14:32
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 9 oct. 2010 à 08:44
Bonjour,
Je sollicite votre aide pour résoudre un problème que je rencontre sur une requête. C'est le fichier PHP que j'ai trouvé sur un site pour créer un imput autocompletion.
mon code
<?php
//SÈcuritÈ pour empÍcher d'interroger la base librement : liste des table et des champs utilisables
$check = array(
	'vin' => array('clevin', 'id_vin')
);

//Connexion # la base de donnÈes
@mysql_connect('serveur', 'login', 'motdepasse') or die('Connexion # la base de donnÈes impossible');
@mysql_select_db('login') or die('base de donnÈes inexistante');

$table = (isset($_GET['table']) ? $_GET['table'] : 'vin');
$field = (isset($_GET['field']) ? $_GET['field'] : 'clevin');
$search = (isset($_GET['search']) ? $_GET['search'] : 'id_vin');

if(isset($check[$table]) && in_array($field, $check[$table])){ //VÈrification
	if($table && $field && $search){
		$search = strtolower(mysql_escape_string($search));

		header("content-type: application/xml");
		echo '<?xml version="1.0" encoding="iso-8859-1" ?>';
		echo '<suggests>';
		
		$query = 'SELECT ''.$field.'' FROM ''.$table.'' WHERE lower(''.$field.'') LIKE "'.$search.'%" ORDER BY ''.$field.''';
		$result = mysql_query($query);
		while($row = mysql_fetch_array($result)){
			echo '	<suggest>'.$row[$field].'</suggest>';
		}
		
		echo '</suggests>';
	}
}
else{
	die('RequÍte interdite');
}
?>


J'ai renseigné serveur, login et mot de passe
Mon problème est le suivant, je n'arrive pas à afficher la liste des champs que je veux. Il ne se passe rien.
Il y a sureent une erreur dans le code, si oui, je ne la trouve pas.
De plus à la suite le la ligne
echo '<?xml version="1.0" encoding="iso-8859-1" ?>';

le code PHP se termine. Je ne sais pas comment le coder pour relancer le php proprement.
Merci d'avance pour votre aide


A voir également:

6 réponses

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
6 oct. 2010 à 14:54
Bonjour,

Il y a un problème avec les apostrophes et quotes dans cette ligne :
$query = 'SELECT ''.$field.'' FROM ''.$table.'' WHERE lower(''.$field.'') LIKE "'.$search.'%" ORDER BY ''.$field.''';

Remplace par :
$query = 'SELECT ''.$field.'' FROM ''.$table.'' WHERE lower(''.$field.'') LIKE "'.$search.'%" ORDER BY ''.$field.''';


Xavier
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
6 oct. 2010 à 14:56
Ah, ok, c'est CCM qui remplace les (alt gr + 7) par des simples quotes... pas pratique pour écrire des requête MySQL !!

Bon, alors pour voir déjà si le script marche, que se passe-t-il dans ton navigateur si tu appelles directement le script, sans passer par ta page où tu veux qu'il s'affiche ?
0
delaville81 Messages postés 188 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 12 avril 2024
6 oct. 2010 à 15:16
Merci Xavier pour ta réponse si rapide
mais lors que je lance le script, j'obtient :

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /xxxxxxxxxxxxxxxxx/autocomplete_ajax.php on line 29

La ligne 29 est la ligne du SELECT
J'ai donc besoin encore de ton aide
Merci d'avance
0
delaville81 Messages postés 188 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 12 avril 2024
6 oct. 2010 à 16:13
En enlevant les doubles quotes, j'ai une autre message (dans un cadre rouge) que je n'ai jamais vu

This page contains the following errors:

error on line 1 at column 47: ParsePI: PI php space expected
Below is a rendering of the page up to the first error.

Pour être franc, je ne comprend pas la signification

Merci pour votre aide
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
6 oct. 2010 à 16:18
Écris-la comme ça :
$query = 'SELECT '.$field.' FROM '.$table.' WHERE lower('.$field.') LIKE "'.$search.'%" ORDER BY '.$field;

Ça donne quoi ?
0
delaville81 Messages postés 188 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 12 avril 2024
6 oct. 2010 à 16:33
C'est toujours pareil, rien ne s'affiche
Dans le code source de la page interprétée j'obtient
<suggests></suggests>

Avez vous une idée ?

De plus j'ai viré de ma page
echo '<?xml version="1.0" encoding="iso-8859-1" ?>';

Parce que la page montrée une erreur incompréhensible (voir message précèdent)
Si vous connaissez le moyen de coder cette ligne pour qu'elle ne face plus afficher d'erreur je suis preneur

Merci de votre aide
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
7 oct. 2010 à 10:59
Bonjour,

Mets un echo $query;
juste après ta requête, et affiche le code source... Tu devrais voir apparaître ta requête, ce qui devrait te permettre de comprendre ce qui ne va pas par rapport à ta base de données.

Xavier
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
delaville81 Messages postés 188 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 12 avril 2024
7 oct. 2010 à 16:13
Xavier,
Merci,
en faisant
$query = 'SELECT '.$field.' FROM '.$table.' WHERE lower('.$field.') LIKE "'.$search.'%" ORDER BY '.$field; 


ça marche.

Mais j'ai toujours le problème avec
echo '<?xml version="1.0" encoding="iso-8859-1" ?>';

Le code à la suite s'affiche en HTML. Il prend en compte le ?> à la fin de la ligne comme fin du code PHP. Je ne sais pas comment l'intégrer différemment.
Si vous avez une idée
Merci
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
8 oct. 2010 à 08:58
Pour ce problème, je pense que le mieux est de ne pas l'inclure dans du php avec echo, mais de le mettre simplement dans le flux de la page...
Comme ceci :
if(isset($check[$table]) && in_array($field, $check[$table])){ //VÈrification
    if($table && $field && $search){
        $search = strtolower(mysql_escape_string($search));

        header("content-type: application/xml");
?>
<?xml version="1.0" encoding="iso-8859-1" ?>
<?php
        echo '<suggests>';
0
delaville81 Messages postés 188 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 12 avril 2024
8 oct. 2010 à 15:46
Merci pour ta réponse mais malheureusement en ajoutant cette ligne, mon autocompletion ne marche plus.
Donc pour le moment j'enlève la ligne.
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
9 oct. 2010 à 08:44
Tu peux en dire plus ?
0