vero Posté 6 Août 2005 Posté 6 Août 2005 bonjour, il doit me manquer quelques chose car la condition $duree n'est pas prise en compte pouvez vous m'aider. c'est un formulaire de validation, donc j'envoi un lien comprenant un numero d'id, le membre clique dessus et arrive dans la partie de script qui nous occupe. le script met un 1 dans le champs valide au lieu de 0 et change la valeur de id en 0. cela marche parfaitement bien. Maintenant je voudrai qu'en fonction du champs chiffre qui est dans la base(1,2 ou3) il mette dans le champs abonnement la valeur (0,1 ou 30) et la date du jour. voila le code actuel met 10 (valeur par defaut) dans le champs abonnement quelque soit le champs chiffre. $test = 0; $datab = date("Y-m-d"); require ("sql_connect.php"); $sql = "SELECT COUNT(*) AS nbp FROM admin WHERE id=$_GET[id]";$val = mysql_fetch_array(mysql_query($sql)); $chiffre = $val['chiffre']; if ($chiffre == 1) $duree = 0; elseif ($chiffre == 2) $duree = 30; elseif ($chiffre == 3) $duree = 1; else $duree = 10; if (!$val[0]) { $erreur = 1; } { $sql = "SELECT * FROM admin WHERE id=$_GET[id]"; $qry = mysql_query($sql); $ftc = mysql_fetch_array($qry); mysql_query("UPDATE admin SET Valide='1',abonnement='$duree',datab='$datab', id='0' WHERE id='$id'"); }
mikhawa Posté 6 Août 2005 Posté 6 Août 2005 bon bin je ne sais pas le tester d'où je suis mais si tu changes cette ligne, ça ne fonctionne pas? $sql = "SELECT COUNT(*) AS nbp FROM admin WHERE id=$_GET[id]"; $val = mysql_fetch_array(mysql_query($sql)); $chiffre = $val['chiffre']; par $sql = _AT_mysql_query("SELECT chiffre FROM admin WHERE id=$_GET[id]"); $chiffre = _AT_mysql_result($sql,0,"chiffre"); à+, Mike
Sarc Posté 6 Août 2005 Posté 6 Août 2005 Salut C'est effectivement cette ligne qui ne va pas : $chiffre = $val['chiffre']; Remplace là par : $chiffre = $val['nbp'];
vero Posté 6 Août 2005 Auteur Posté 6 Août 2005 helas ca fonctionne pas mais je crois en effet que la solution est par la. require ("sql_connect.php"); $sql = "SELECT COUNT(*) AS nbp FROM admin WHERE id=$_GET[id]"; $val = mysql_fetch_array(mysql_query($sql)); $chiffre = $val['chiffre']; if ($chiffre == 1) $duree = 0; if ($chiffre == 2) $duree = 30; if ($chiffre == 3) $duree = 1; else $duree = 10; le probleme est que ca va pas chercher le champs chiffre.
Sarc Posté 6 Août 2005 Posté 6 Août 2005 oui, et je viens de te dire le problème dans le post précédent... Là tu vas chercher une variable qui n'existe pas, donc forcément la valeur ne sera pas la bonne Première chose à faire : fais un echo de $sql pou vérifier que la requète est bonne. Essaye ensuite la requète dans MyAdmin si elle te semble bonne écrire à l'écran. Si MyAdmin ne renvoie pas d'erreur, c'est que la requète est bonne, et dans ce cas là ce que je t'ai donné avant doit être bon... Donc essaye la ligne que je t'ai donné auparavant, et fais un echo de la variable pour vérifier...
vero Posté 6 Août 2005 Auteur Posté 6 Août 2005 ca me donne toujours 10 soit la valeur par defaut et non la valeur qui correspond au champ chiffre qui est pour cette enregistrement à 3 et donc la valeur devrait etre 1.
mikhawa Posté 6 Août 2005 Posté 6 Août 2005 $chiffre = $val['nbp']; si elle met ça elle va avoir le nombre de résultats à sa requête et non la valeur du champs chiffre non? Val, c'est pour faire une boucle après et afficher les différents membres que tu fais un SELECT COUNT(*)? Pcq là tu ne fais que compter le nombre de résultat et tu ne sélèctionnes aucun champs....
Sarc Posté 6 Août 2005 Posté 6 Août 2005 $chiffre = $val['nbp']; si elle met ça elle va avoir le nombre de résultats à sa requête et non la valeur du champs chiffre non? Val, c'est pour faire une boucle après et afficher les différents membres que tu fais un SELECT COUNT(*)? Pcq là tu ne fais que compter le nombre de résultat et tu ne sélèctionnes aucun champs.... <{POST_SNAPBACK}> Bien sûr que non... Dans sa requète SQL, elle compte le nombre de champs, (SELECT count(*)) et le met dans la variable nbp, donc quand elle prend la valeur nbp elle obtient comme résultat le nombre de champs qu'il y a dans la BDD... Mais j'y pense, si l'id est une clef unique, il risque pas de te renvoyer grand chose à part 0 ou 1 en fait... Donc je comprend peut-être ce que tu veux dire finalement J'étais parti du principe que sa requète était bonne... Mais de toute manière le PHP n'est pas bon derrière Bref, vero je veux bien t'aider, mais il faudrait suivre ce que je te conseille, sinon je ne peux vraiment rien faire pour toi... Je t'ai dis d'afficher $sql, puis de l'essayer dans myadmin, puis d'afficher $chiffre, et non de dire le résultat final...
vero Posté 6 Août 2005 Auteur Posté 6 Août 2005 oui j'ai besoin d'aller chercher lla valeur du champs chiffre de cet enregistrement c'est ca mais comment je fais? pour l'instant j'ai: $sql = "SELECT COUNT(*) AS nbp FROM admin WHERE id=$_GET[id]"; $val = mysql_fetch_array(mysql_query($sql)); $chiffre = $val['chiffre']; if ($chiffre == 1) $duree = 0; if ($chiffre == 2) $duree = 30; if ($chiffre == 3) $duree = 1; else $duree = 10;
vero Posté 6 Août 2005 Auteur Posté 6 Août 2005 y a t il un champion pour m'aider? Je suis perdue... mon script marche parfaitement bien sauf une condition non prise en compte aidez moi
Sarc Posté 6 Août 2005 Posté 6 Août 2005 Bah dans ce cas là c'est ta requète SQL qui n'est pas bonne, et c'est donc ce qu'avait dit mikhawa effectivement... Si tu veux la valeur de chiffre, la requète à faire est : $sql = "SELECT chiffre FROM admin WHERE id='".$_GET[id]."'";$val = mysql_fetch_array(mysql_query($sql)); En fait, on sait ce que tu as comme code, tu l'as copié trois fois dans le topic... Si tu étais bien explicite, et que tu nous aidais avec un peu plus d'infos (comme un exemple, ou la structure de la BDD), ça serait plus facile de t'aider...
vero Posté 6 Août 2005 Auteur Posté 6 Août 2005 j ai mis le texte ci dessous comme demandé et ca me met toujours 10 le chiffre par defaut. $sql = "SELECT chiffre FROM admin WHERE id='".$_GET[id]."'"; $val = mysql_fetch_array(mysql_query($sql)); $chiffre = $val['chiffre']; if ($chiffre == '1') $duree = 0; if ($chiffre == '2') $duree = 30; if ($chiffre == '3') $duree = 1; else $duree = 10;
Sarc Posté 6 Août 2005 Posté 6 Août 2005 $sql = "SELECT chiffre FROM admin WHERE id='".$_GET[id]."'";$val = mysql_fetch_array(mysql_query($sql));$chiffre = $val['chiffre'];echo "La requète SQL envoyée : $sql<br><br>Le chiffre annoncé par la requète : $chiffre"; Essaye de mettre ça et donne ce qui est mis à l'écran...
vero Posté 6 Août 2005 Auteur Posté 6 Août 2005 Le chiffre annoncé par la requète : 2 mais le chiffre inscrit dans la base est 10 au lieu de 30
Sarc Posté 6 Août 2005 Posté 6 Août 2005 Je t'ai demandé de tout mettre s'il te plaît vero sois sympa avec moi... La requète SQL était plus importante que le chiffre, et tu ne donnes que le chiffre... Vérifie la requète SQL qu'il t'affiche à l'écran, vérifie que la valeur $_get['id'] est bien affichée dans la requète, puis lance la requète dans MyAdmin pour voir ce qu'il te renvoie... Voilà tant que tu n'auras pas fait ça, je ne répondrai plus ici...
vero Posté 6 Août 2005 Auteur Posté 6 Août 2005 c'est ca que tu voulai? La requète SQL envoyée : SELECT chiffre FROM admin WHERE id='860635403' Le chiffre annoncé par la requète : 2 j'ai essayé avec dans le champ chiffre 1,2 et 3 et si ca met bien 1 avec le3 , les 2 autres mettent 10 si ca peux t'aider merci pour ta patience, j'y suis depuis 8 h ce matin et j'ai jamais vue ca
Sarc Posté 6 Août 2005 Posté 6 Août 2005 Ce que je cherche, ne connaissant ni ton script, ni ta base de donnée, ni rien du tout d'ailleurs, c'est de savoir si le problème provient de la requète SQL, ou alors du traitement en PHP derrière... C'est vraiment pas facile de savoir ça comme ça... Tu as essayé avec MyAdmin ou pas ? Il te renvoie le chiffre que tu attends lui ?
vero Posté 6 Août 2005 Auteur Posté 6 Août 2005 bon ca me parait pas possible sur un forum donc je te remercie pour ton aide et je vais abandonner ce projet en attendant d'avoir au retour des vacances un de mes amis progrmeur sur icq. Merci pour ta patience et bonnes vacances
Anonymus Posté 7 Août 2005 Posté 7 Août 2005 Non, effectivement, ca ne parait pas possible sur un forum. Sarc, très patient, t'as demandé un certain nombre de choses, qui lui sont indispensables pour pouvoir t'aider (voir son dernier topic). Ce n'est pas pour t'em.., c'est bien pour t'aider. Si tu ne réponds pas aux questions, ni lui ni personne (je crains) ne pourra t'aider. Sur un forum comme sur icq/msn/autres. Anonymus.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant