[RESOLU] erreur dans une requête

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] erreur dans une requête

Re: erreur dans une requête

par phibad » 20 sept. 2014, 21:32

Voilà, ça marche.
Merci à ceux qui m'ont aidé.
J'ai appris à utiliser var_dump et print_r
Mon seul problème, c'est que je n'ai pas vraiment identifié où était l'erreur !
J'ai testé à plusieurs endroits avec var_dump, puis j'ai enlevé le test... finalement, ça a dû déclencher quelque chose.
Je ne crois pas à la magie, mais parfois...
Merci à vous.
Philippe

Re: erreur dans une requête

par xTG » 20 sept. 2014, 19:09

Avant ta redirection regardes ce qu'il y a dans $_POST (commentes donc pour ce test la redirection).
Puis après redirection regardes ce qu'il y a dans $_SESSION.

var_dump sert à afficher pour le debug le contenu d'une variable.

Re: erreur dans une requête

par phibad » 20 sept. 2014, 17:35

Après réflexion, je cherche dans le fichier précédent, celui dans lequel est choisi le membre. Je m'explique. Il s'agit d'enregistrer les cotisations des membres d'une association. Dans un premier fichier, on cherche dans la base le membre pour lequel on va enregistrer une cotisation : il y a une table 'membre', une table 'activite' et une table 'relmembreactivite' de relation entre les deux autres. Et il s'agit des activités 102 à 109. Voici ce fichier de choix du membre :
<h1>Choisir un membre</h1>
<?php
if ($submit == "")
{
?>
<FORM method="POST" name="choixmembre" action="enregistrecotis1.php">
<select name="idmembre" value ="idmembre" size="1">
<?php
$sql= "SELECT * FROM membres as m, relmembreactivite as ma
WHERE ma.idactivite>101 AND ma.idactivite<110
AND m.idmembre=ma.idmembre
ORDER BY nom";
$base= mysql_query($sql);
while($ligne_liste=mysql_fetch_array($base))
{
echo "<OPTION Value=\"".$ligne_liste['idmembre']."\">".$ligne_liste['nom']." ".$ligne_liste['prenom']."</OPTION>";
}
?>
</SELECT>
<input type="submit" name="submit" value="Valider le choix" >
</FORM>
<?php
}
else
{
$_SESSION['idmembrechoisi']= $_POST['idmembre'] ;
$adresse="enregistrecotis2.php";
rediriger($adresse);
}
?>

</div>
Je ne vois rien d'anormal...

Re: erreur dans une requête

par phibad » 20 sept. 2014, 15:59

Merci sirakawa
J'ai donc remplacé par une équivalence plus simple l'écriture de la variable.
Voici le résultat affiché après cette modification :
La cotisation de Array ( [idmembre] => )
Je suis perplexe. Où puis-je trouver la signification de ce qui est affiché quand on fait var_dump ou pront_r

Re: erreur dans une requête

par sirakawa » 20 sept. 2014, 14:45

$req= "select * from membres WHERE idmembre ='".$_SESSION['idmembrechoisi']."'" ;
Quand on obtient un comportement inattendu, il faut tester les diverses variables.
On gagnerait en lisibilité et en sécurité à écr:ire
$îd_membre = $_SESSION['idmembrechoisi'].; //en assortisant cette affectation de vérifications omises ici
$req= "select * from membres WHERE idmembre =' $id_membre"';
print "<br>$req"; die();
et si la requete ainsi affichée est incorrecte, ajouter tout au début
print_r($_POST); die();

Re: erreur dans une requête

par phibad » 20 sept. 2014, 11:25

Bonjour
Merci Arnaud69 et xTG pour vos réponses.
Après avoir corrigé les doublons, puis ajouté var_dump et echo $req
j'obtiens le message suivant :

La cotisation de string(0) ""
membre n°select * from membres WHERE idmembre =''

Inutile de vous dire que je ne comprends pas :roll: Je vais aller chercher ce qu'est ce var_dump.
Mais peut-être pouvez-vous me faire avancer avec ça.

Arnaud, excuse moi, je ne comprends pas non plus ce que tu me dis à propos des conditionnelles courtes et du code entre balises :oops: Je suis donc vraiment débutant (faux débutant, en fait, je m'y remets laborieusement).

Re: erreur dans une requête

par xTG » 19 sept. 2014, 14:08

Que te donnes un :
var_dump($_SESSION['idmembrechoisi']);
juste avant la requête ?

Et sinon je ne comprends pas tes deux parties de message...
En bas c'est une variable $_POST pour idmembrechoisi, en haut c'est une variable de session.

Re: erreur dans une requête

par arnaud69 » 19 sept. 2014, 11:02

Bonjour,

Pourquoi tu as 2 fois

Code : Tout sélectionner

$idcourant= isset($_SESSION['idcourant'])?$_SESSION['idcourant']:"";
:?: :?: #-o #-o

Et à la fin, fais un echo $req.

Sinon, vu que tu dois pas être un grand pro du codage, je t'invite à éviter les conditionnelles courtes (lisibilité, aide des copains, etc...) et présenter ton code entre balise

Code : Tout sélectionner

:wink:

erreur dans une requête

par phibad » 19 sept. 2014, 10:39

Bonjour
Je ne trouve pas une erreur dans cette requête ci-dessous. J'ai vérifié le nom de la table dans la base, la connexion, j'ai essayé beaucoup de présentations du la variable : avec quotes, guillemets.
Mon fichier fonctionnait jusqu'à une modification récente, avec la présentation de la variable suivante :
$req= 'select * from membres WHERE idmembre ='.$_SESSION['idmembrechoisi'] ;
Maintenant j'ai un message d'erreur de syntaxe, que je crois avoir corrigé, après l'essai d'une multitude de positionnement des quotes et des guillemets, voir ci-dessous. Mais ma requête ne fonctionne pas.

<h1>La cotisation de
<?php
$req= "select * from membres WHERE idmembre ='".$_SESSION['idmembrechoisi']."'" ;
$res = mysql_query($req) or die(mysql_error());
$resultat = mysql_fetch_assoc($res);
echo $resultat['prenom']." ".$resultat['nom']."</H1>";
echo "membre n°".$_SESSION['idmembrechoisi'];
?>

Je n'ai plus de message d'erreur de syntaxe, mais la requête ne fonctionne pas. Donc l'erreur est ailleurs ?
En haut de page, j'ai mis les variables :

<?php
session_start();
ini_set ('session.bug_compat_42', 0);
ini_set ('session.bug_compat_warn', 0);
$idcourant= isset($_SESSION['idcourant'])?$_SESSION['idcourant']:"";
$_POST['idmembre']= isset($_POST['idmembre'])?$_POST['idmembre']:"";
$idcourant= isset($_SESSION['idcourant'])?$_SESSION['idcourant']:"";
$idmembrechoisi= isset($_POST['idmembrechoisi'])?$_POST['idmembrechoisi']:"";
$submit=isset($_POST['submit'])?$_POST['submit']:"";
?>

Merci à qui peut m'aider.