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

Résolu/Fermé
Alcantara75 Messages postés 16 Date d'inscription mercredi 11 décembre 2019 Statut Membre Dernière intervention 17 décembre 2019 - Modifié le 12 déc. 2019 à 13:40
Alcantara75 Messages postés 16 Date d'inscription mercredi 11 décembre 2019 Statut Membre Dernière intervention 17 décembre 2019 - 12 déc. 2019 à 16:04
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

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
12 déc. 2019 à 15:20
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....


1
Alcantara75 Messages postés 16 Date d'inscription mercredi 11 décembre 2019 Statut Membre Dernière intervention 17 décembre 2019
12 déc. 2019 à 16:04
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
0