PHP Mysql : problème pour avoir un affichage avec un tri décroissant dans un tab [Résolu]

Signaler
Messages postés
16
Date d'inscription
mercredi 11 décembre 2019
Statut
Membre
Dernière intervention
17 décembre 2019
-
Messages postés
16
Date d'inscription
mercredi 11 décembre 2019
Statut
Membre
Dernière intervention
17 décembre 2019
-
Bonjour,

J'ouvre un nouveau post car l'autre a été résolu, mais en ajoutant une option je recommence a avoir un message d'erreur.

Page qui gère l'affichage des clients dans un tableau avec une fonction de recherche


//on inclus le fichier de connexion à la bdd dont le nom est ????
require_once "../inc/connexion.php";

//connexion à la bdd
$bdd = getDB();

// on récupère PROPREMENT les variables AVANT de les utiliser
$query = !empty($_POST["query"]) ? $_POST["query"]: NULL;

//on prépare la requête SQL
$sql = "SELECT * FROM clients ";

//début du traitement :
if($query){
 $search = $query;
  
  //si il y a une recherche on ajoute le WHERE à la requete :
  $sql .= " WHERE  prenom LIKE '%".$search."%'
                  OR nom LIKE '%".$search."%'
                  OR adresse LIKE '%".$search."%'
                  OR ville LIKE '%".$search."%'
                  OR cp LIKE '%".$search."%'
                  OR email LIKE '%".$search."%'
                  OR id_clients LIKE '%".$search."%' ";
                
                 //  var_dump($sql);

}

//Execution de la requete
try{
  $requete = $bdd -> prepare($sql) ;
  $requete->execute() ;
  $result = $requete->fetchAll(); // on stocke le resultat dans un array
}catch(Exception $e){
  // en cas d'erreur :
   echo " Erreur ! ".$e->getMessage();
}

?>




Pour avoir les derniers clients rentrés qui s'affichent dans le tableau, j'ai ajouté

order by id_clients desc à la requete "SELECT * FROM clients"


ça affiche le mesage ci_dessous :

 Erreur ! SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de 'WHERE prenom LIKE '%232%' OR nom LIKE '%232%' ' à la ligne 1 Données non trouvées 


après un var_dump de la requête j'ai l'affichage ci-dessous :

C:\wamp\www\O2G\fetch\clients.php:38:string ' SELECT * FROM clients order by id_clients DESC  WHERE  prenom LIKE '%232%'
                  OR nom LIKE '%232%'
                  OR adresse LIKE '%232%'
                  OR ville LIKE '%232%'
                  OR cp LIKE '%232%'
                  OR email LIKE '%232%'
                  OR id_clients LIKE '%232%'
                   ' (length=337)


le filtre order by id_clients se met avant le where d'après le var_dump($sql);. j'ai essayé de le mettre après le dernier like pour qu'il s'affiche a la fin.
Il me les affiche bien dans l'ordre du dernier clients rentrés, mais il le fait que lors de la recherche, et non dans le tableau quand je veux juste les afficher.

2 réponses

Messages postés
29910
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
30 octobre 2020
2 903
La concaténation de variable en php ... ça te parle ?

//on prépare la requête SQL
$sql = "SELECT * FROM clients ";

//début du traitement :
if($query){
 $search = $query;
  
  //si il y a une recherche on ajoute le WHERE à la requete :
  $sql .= " WHERE  prenom LIKE '%".$search."%'
                  OR nom LIKE '%".$search."%'
                  OR adresse LIKE '%".$search."%'
                  OR ville LIKE '%".$search."%'
                  OR cp LIKE '%".$search."%'
                  OR email LIKE '%".$search."%'
                  OR id_clients LIKE '%".$search."%' ";
                
                 //  var_dump($sql);

}

$sql .=  " order by..... " ;  // c'est ici que tu dois le mettre....


Messages postés
16
Date d'inscription
mercredi 11 décembre 2019
Statut
Membre
Dernière intervention
17 décembre 2019

En faisant des recherches, c'est ce que j'ai vu, j'ai essayé de faire une concaténation, mais je savais pas ou la mettre, et je parle même pas de la syntaxe.

J'ai commencé hier soir des cours de php en commençant depuis le début.
Je savais faire des insert et afficher des informations dans un tableau et les modifier mais j'ai appris directement comme ça, il y a quelques années, en prenant des fichiers sur internet sans trop comprendre.

Merci infiniment en tout cas