Where & order by
Résolu
maxireussite
Messages postés
372
Date d'inscription
Statut
Membre
Dernière intervention
-
maxireussite Messages postés 372 Date d'inscription Statut Membre Dernière intervention -
maxireussite Messages postés 372 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je n'arrive pas à trouver d'où vient l'erreur dans mon script.
La zone de liste demeurant désespérément vide.
Merci bcp.
Je n'arrive pas à trouver d'où vient l'erreur dans mon script.
La zone de liste demeurant désespérément vide.
<?php if(isset($_POST['code_client'])) $code_client=$_POST['code_client']; else $code_client=""; ?> <?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()); $requete2 = mysql_query("SELECT apayer_id, date_apayer, code_client FROM oc_apayer WHERE code_client = $code_client ORDER BY date_apayer DESC"); ?> <?php while ($valeur = mysql_fetch_array($requete2)){ echo "<option value=\"". $valeur['apayer_id'] ."\" cli_name=\"". $valeur['date_apayer'] ."\" cli_name=\"". $valeur['code_client'] ."\">". $valeur['date_apayer'] ." ". $valeur['code_client'] ."</option>n"; } ?>
Merci bcp.
A voir également:
- Where & order by
- Where is it - Télécharger - Gestion de fichiers
- By click downloader avis - Forum Enregistrement / Traitement audio
- Ads by cooking ✓ - Forum Virus
- Order@live-helper.com - Forum Consommation & Internet
- Files by google - Accueil - Applications & Logiciels
12 réponses
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
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.
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
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...
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
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); ?>
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 ?
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.
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 !
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";
}
?>
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.
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";
}
?>
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.