Where & order by
Résolu/Fermé
maxireussite
Messages postés
372
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
11 mars 2020
-
Modifié par pijaku le 22/01/2014 à 08:03
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 - 22 janv. 2014 à 14:16
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 - 22 janv. 2014 à 14:16
A voir également:
- Where & order by
- Home by me - Télécharger - 3D
- Message bounced by administrator - Forum Mail
- Traduction de message - Forum Mail
- To be filled by o.e.m - Forum Logiciels
- Zen by deezer avis - Télécharger - Santé & Bien-être
12 réponses
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
21 janv. 2014 à 12:32
21 janv. 2014 à 12:32
Salut,
Essaye d'afficher ta requête et de l'exécuter dans ton client SQL (PhpMyAdmin ou autre) pour voir si elle est correcte.
Si la variable $code_client dans ta requête n'est pas de type numérique, il faudrait lui ajouter des quotes :
Au passage, il faudrait si possible changer d'API pour les traitements sql (MySQL est obsolète, préférer MySQLi ou PDO) et sécuriser tes requêtes contre les injections.
Bonne journée
Essaye d'afficher ta requête et de l'exécuter dans ton client SQL (PhpMyAdmin ou autre) pour voir si elle est correcte.
Si la variable $code_client dans ta requête n'est pas de type numérique, il faudrait lui ajouter des quotes :
$requete2 = mysql_query("SELECT apayer_id, date_apayer, code_client FROM oc_apayer WHERE code_client = '$code_client' ORDER BY date_apayer DESC");
Au passage, il faudrait si possible changer d'API pour les traitements sql (MySQL est obsolète, préférer MySQLi ou PDO) et sécuriser tes requêtes contre les injections.
Bonne journée
maxireussite
Messages postés
372
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
11 mars 2020
5
21 janv. 2014 à 16:05
21 janv. 2014 à 16:05
MErci bcp Pitet,
je vais tester en suivant tes conseils.
Bonne soirée.
je vais tester en suivant tes conseils.
Bonne soirée.
maxireussite
Messages postés
372
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
11 mars 2020
5
Modifié par maxireussite le 21/01/2014 à 17:17
Modifié par maxireussite le 21/01/2014 à 17:17
Bon,
Visiblement le tri par '$code_client' est problématique, mais je ne comprends pas où.
Le script fonctionne très bien avec cette terminaison là :
WHERE TO_DAYS(NOW()) - TO_DAYS(date_apayer) <= 3 ORDER BY date_apayer DESC") or die("Pb avec la requette ".mysql_error());
Qui voit d'où vient le problème avec 'code_client" :
WHERE code_client = '$code_client' ORDER BY date_apayer DESC");
MErci à vous.
Visiblement le tri par '$code_client' est problématique, mais je ne comprends pas où.
Le script fonctionne très bien avec cette terminaison là :
WHERE TO_DAYS(NOW()) - TO_DAYS(date_apayer) <= 3 ORDER BY date_apayer DESC") or die("Pb avec la requette ".mysql_error());
Qui voit d'où vient le problème avec 'code_client" :
WHERE code_client = '$code_client' ORDER BY date_apayer DESC");
MErci à vous.
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
Modifié par Pitet le 21/01/2014 à 17:15
Modifié par Pitet le 21/01/2014 à 17:15
As tu une erreur SQL ? Si oui, quelle est cette erreur ?
Plusieurs causes possibles :
- le champ code_client n'existe pas dans la table
- la valeur de $code_client n'est pas correcte ou contient une injection sql
- il n'y a aucun enregistrement correspondant à la valeur de $code_client
- ...
Plusieurs causes possibles :
- le champ code_client n'existe pas dans la table
- la valeur de $code_client n'est pas correcte ou contient une injection sql
- il n'y a aucun enregistrement correspondant à la valeur de $code_client
- ...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
maxireussite
Messages postés
372
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
11 mars 2020
5
Modifié par maxireussite le 21/01/2014 à 17:24
Modifié par maxireussite le 21/01/2014 à 17:24
Ah si si il existe bien.
C quoi une injection ?
En fait il renvoie toujours le même résultat, les seuls champs de la table où code_client est vide...
C quoi une injection ?
En fait il renvoie toujours le même résultat, les seuls champs de la table où code_client est vide...
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
21 janv. 2014 à 17:44
21 janv. 2014 à 17:44
Et ta variable $code_client ne serait-elle pas vide par hasard ?
-> retour à mon premier message : Essaye d'afficher ta requête et de l'exécuter
Une injection SQL est une faille qui permet de modifier ta requête SQL, quelques exemples ici : https://fr.wikipedia.org/wiki/Injection_SQL
-> retour à mon premier message : Essaye d'afficher ta requête et de l'exécuter
$query = "SELECT apayer_id, date_apayer, code_client FROM oc_apayer WHERE code_client = $code_client ORDER BY date_apayer DESC"; var_dump($query); $requete2 = mysql_query($query);
Une injection SQL est une faille qui permet de modifier ta requête SQL, quelques exemples ici : https://fr.wikipedia.org/wiki/Injection_SQL
maxireussite
Messages postés
372
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
11 mars 2020
5
Modifié par pijaku le 22/01/2014 à 08:04
Modifié par pijaku le 22/01/2014 à 08:04
Avec ton code cela me donne le message d'erreur suivant :
string(106) "SELECT apayer_id, date_apayer, code_client FROM oc_apayer WHERE code_client = '' ORDER BY date_apayer DESC"
J'ai testé la zone de liste avec un code_client fixe, cela fonctionne très bien.
jej pense qu'il faut que je mette la récupération du code_client pour que aies une vue d'ensemble :
string(106) "SELECT apayer_id, date_apayer, code_client FROM oc_apayer WHERE code_client = '' ORDER BY date_apayer DESC"
J'ai testé la zone de liste avec un code_client fixe, cela fonctionne très bien.
jej pense qu'il faut que je mette la récupération du code_client pour que aies une vue d'ensemble :
<?php if(isset($_POST['code_client'])) $code_client=$_POST['code_client']; else $code_client=""; $db='*****'; $cnx=mysql_connect('localhost', '*****', '*****') or die("Pb connexion serveur".mysql_error()); $db_sel=mysql_select_db($db) or die("Erreur de selection ".mysql_error()); $query = "SELECT apayer_id, date_apayer, code_client FROM oc_apayer WHERE code_client = '$code_client' ORDER BY date_apayer DESC"; var_dump($query); $requete2 = mysql_query($query); ?>
chico200987
Messages postés
791
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
30 juillet 2018
143
21 janv. 2014 à 18:39
21 janv. 2014 à 18:39
Salut,
En mettant :
Tu spécifies que la page est appelée depuis un formulaire ayant un champ nommé "code_client".
Est-ce bien le cas ? Quel est le formulaire HTML qui appelle cette page PHP ?
En mettant :
if(isset($_POST['code_client'])) $code_client=$_POST['code_client']; else $code_client="";
Tu spécifies que la page est appelée depuis un formulaire ayant un champ nommé "code_client".
Est-ce bien le cas ? Quel est le formulaire HTML qui appelle cette page PHP ?
maxireussite
Messages postés
372
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
11 mars 2020
5
21 janv. 2014 à 18:44
21 janv. 2014 à 18:44
Ah non ! la page "appelante" est index2.php.
Je teste cela, plus tard, faut que j'y aille !
Merci 1000 fois en tout cas.
Bonne soirée.
Je teste cela, plus tard, faut que j'y aille !
Merci 1000 fois en tout cas.
Bonne soirée.
chico200987
Messages postés
791
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
30 juillet 2018
143
21 janv. 2014 à 18:47
21 janv. 2014 à 18:47
Le "Ah non" répond à quel question ? C'est forcément le cas si tu veux récupérer ta valeur comme tu le fais. Le code HTML doit être dans ta page index2.php, si tu nous montres le formulaire de cette page on pourra peut-être mieux comprendre pourquoi la valeur n'est pas transmise sur la page appelée ;)
Bonne soirée à toi aussi !
Bonne soirée à toi aussi !
maxireussite
Messages postés
372
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
11 mars 2020
5
Modifié par pijaku le 22/01/2014 à 08:05
Modifié par pijaku le 22/01/2014 à 08:05
Voici le formulaire :
</script>
<form action="index3.php" name="sendform1" onsubmit="check1(); return false;" enctype="application/x-www-form-urlencoded">
<table cellpadding="0" cellspacing="5" class="formtab pluginwidth">
<tr>
<td colspan="2" class="h" id="myerror"></td>
</tr>
<!--Text-->
<?php
$db='****';
$cnx=mysql_connect('localhost', '****', '****') or die("Pb connexion serveur ".mysql_error());
$db_sel=mysql_select_db($db) or die("Erreur de selection ".mysql_error());
$requete = mysql_query("SELECT nom, code_client FROM oc_clients") or die("Pb avec la requette ".mysql_error());
?>
<td class="auto-style2" style="width: 131px; height: 29px;">code client *</td>
<td style="height: 29px"><select name="code_client" style="width: 159px">
<option selected="selected"></option>
<?php
while ($valeur = mysql_fetch_array($requete)){
echo "<option value=\"". $valeur['code_client'] ."\" cli_name=\"". $valeur['nom'] ."\">". $valeur['code_client'] ." ". $valeur['nom'] ."</option>n";
}
?>
maxireussite
Messages postés
372
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
11 mars 2020
5
Modifié par maxireussite le 21/01/2014 à 21:42
Modifié par maxireussite le 21/01/2014 à 21:42
Bonjour chico200987,
Désolé, Oui c bien la cas 'code_client' provient d'un formulaire.
En me disant que la valeur n'est pas transmise, vous me mettez la puce à l'oreille,
je fais qques vérifs et je vous dis ce qu'il en est.
Désolé, Oui c bien la cas 'code_client' provient d'un formulaire.
En me disant que la valeur n'est pas transmise, vous me mettez la puce à l'oreille,
je fais qques vérifs et je vous dis ce qu'il en est.
maxireussite
Messages postés
372
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
11 mars 2020
5
Modifié par pijaku le 22/01/2014 à 08:05
Modifié par pijaku le 22/01/2014 à 08:05
Bon, mes vérifs n'ont rien donné, normal suis un bleu :).
bon voilà mon formulaire sur index2.php :
bon voilà mon formulaire sur index2.php :
<form action="index3.php" name="sendform1" onsubmit="check1(); return false;" enctype="application/x-www-form-urlencoded">
<table cellpadding="0" cellspacing="5" class="formtab pluginwidth">
<tr>
<td colspan="2" class="h" id="myerror"></td>
</tr>
<!--Text-->
<?php
$db='****';
$cnx=mysql_connect('localhost', '****', '****') or die("Pb connexion serveur ".mysql_error()); // connexion à la base
$db_sel=mysql_select_db($db) or die("Erreur de selection ".mysql_error()); // sélection de la base //messages de TEST à oter ensuite qd ça marchera
$requete = mysql_query("SELECT nom, code_client FROM oc_clients") or die("Pb avec la requette ".mysql_error());
?>
<td class="auto-style2" style="width: 131px; height: 29px;">code client *</td>
<td style="height: 29px"><select name="code_client" style="width: 159px">
<option selected="selected"></option>
<?php
while ($valeur = mysql_fetch_array($requete)){
echo "<option value=\"". $valeur['code_client'] ."\" cli_name=\"". $valeur['nom'] ."\">". $valeur['code_client'] ." ". $valeur['nom'] ."</option>n";
}
?>
maxireussite
Messages postés
372
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
11 mars 2020
5
22 janv. 2014 à 14:16
22 janv. 2014 à 14:16
J'ai trouvé !
En fait ma page initiale provenait d'une page récupérée à partir de 'Web to date", et je l'avais "bidouillée" vu que j'touche pas trop en PHP.
Vu les difficultés à la faire fonctionner, je suis reparti de zéro d'une page blanche en testant des trucs simples. Et là, la page appelée à fonctionné.
Le problème (que je n'ai pas réussi à détecter) provenait non pas du formulaire, mais de la page elle-même vu que le même script fonctionne sur une page "blanche"...
MErci à tous en tous cas.
En fait ma page initiale provenait d'une page récupérée à partir de 'Web to date", et je l'avais "bidouillée" vu que j'touche pas trop en PHP.
Vu les difficultés à la faire fonctionner, je suis reparti de zéro d'une page blanche en testant des trucs simples. Et là, la page appelée à fonctionné.
Le problème (que je n'ai pas réussi à détecter) provenait non pas du formulaire, mais de la page elle-même vu que le même script fonctionne sur une page "blanche"...
MErci à tous en tous cas.