[RESOLU] Pb syntaxe sur requete avec conditions multiples

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] Pb syntaxe sur requete avec conditions multiples

Re: [RESOLU] Pb syntaxe sur requete avec conditions multiple

par jojolapine » 15 sept. 2012, 15:50

Pas de soucis, pas besoin d'excuses :)
L'apprentissage auto-didacte n'est pas forcément facile (je suis passé par là).

N'hésites pas si tu as d'autres questions.

Bonne continuation et bon apprentissage !

Re: Pb syntaxe sur requete avec conditions multiples

par Angela81 » 15 sept. 2012, 15:43

Merci Jojolapine ! :mrgreen:
Je me suis prise la tête à essayer toutes les combinaisons possibles et imaginables sur la requete alors qu'il me manquait un = sept lignes plus bas.... #-o
effectivement avec if($res==0), ça marche beaucoup mieux et je suis (enfin !) redirigée vers la page que je voulais. Je ne sais pas si c'est à cette solution que tu pensais .

Quand à ce que tu m'a dit plus haut
Cela fonctionne peut-être, mais ça n'est pas une bonne pratique.
Mon très faible niveau en php ne me donne absolument pas le droit de te contredire sur ce point là ! Je te crois donc sur parole.
J'ai un problème, que beaucoup de débutants autodidactes doivent avoir également : on apprend avec des tutos trouvés sur le net, y'en a un nombre impressionnant et chacun est un peu différent de l'autre, pas dans les grandes lignes mais dans les "détails". Mais quant on y connait rien, on ne peut pas savoir quels sont les détails qui sont corrects et quels sont ceux qui ne le sont pas. On teste : ça marche, c'est bien, ça marche pas, on cherche un autre tuto... du coup on apprend des trucs qui fonctionnent mais qui ne respectent pas toujours les règles de l'art.
Soit l'affichage des erreurs est désactivé chez toi, soit ta configuration est différente.
des messages d'erreur j'en ai tout plein et souvent (je les règle au fur et à mesure jusqu'à ce qu'il y en ai plus !). Donc je pense pouvoir dire que l'affichage des erreurs est bien activée !
pour la configuration... j'en ai pas la moindre idée. je fais les installations standard.
Quand au comment on redirige des visiteurs selon leurs choix, je ne comprend pas trop ta question...
Ce qui est tout à fait normal puisque JE me suis très très mal exprimée. J'aurais du parler de "circonstances" et non de "choix".
par exemple, la page qui me posait problème un peu plus tôt, on peut y arriver :
- soit lors de la première visite et dans ce cas là je redirige vers une autre page (qui finira par me ramener à la première page après avoir créer une nouvelle entrée dans ma base),
- soit lors des visites suivantes pour continuer là où on s'était arreté lors de la visite précédente. Dans ce cas là, il ne doit pas y avoir de redirection.

Je suis pas sûre d'être beaucoup plus claire...

et tu sais quoi ? en prenant le temps de reflechir calmement pour te répondre... j'ai eu un éclair de génie/lucidité. Je crois que j'ai compris comment mettre effectivement ma partie contenant le header, avant les balises html ! :mrgreen: j'essaierais ça ce soir . (vais encore passer une soirée sur mon pc :mrgreen: ). Et si ça marche, je te devrais des excuses pour avoir parlé trop vite durant ma première réponse :oops:

En tout cas merci pour ton aide.

Re: Pb syntaxe sur requete avec conditions multiples

par jojolapine » 15 sept. 2012, 14:38

Ah en faite ton erreur est autrement plus simple...
regarde bien ta condition dans ton if :
if($res=0)
Rien ne parait louche ?

Re: Pb syntaxe sur requete avec conditions multiples

par jojolapine » 15 sept. 2012, 14:36

Cela fonctionne peut-être, mais ça n'est pas une bonne pratique.
Soit l'affichage des erreurs est désactivé chez toi, soit ta configuration est différente.

Quand au comment on redirige des visiteurs selon leurs choix, je ne comprend pas trop ta question...
Soit tu as des liens hyper-textes (<a>), et dans ce cas là pas besoin de redirection php.
Soit dans le cas de formulaires, c'est lors de la validation de ce dernier (et avant tout affichage) que tu décides de rediriger le visiteur vers une page de remerciement ou le cas échéant vers le formulaire si ce dernier n'est aps correctement rempli.....

Dans la mesure du possible, il faut essayer de séparer le code logique (requêtes, traitements, etc...) de l'affichage...

Maintenant revenons à ton problème...
Visiblement $res ne contient pas le résultat que tu attends...
donc ajoutes un
var_dump($sql,$res);
Et montre nous le résultat...

Re: Pb syntaxe sur requete avec conditions multiples

par Angela81 » 15 sept. 2012, 14:22

Merci d'avoir pris la peine de me répondre.
Mais des header() à l'intérieur des balises html, j'en ai sur beaucoup d'autres pages de ce site (et sur mes autres sites aussi) et ça fonctionne très bien :D
quand à la personne qui a écrit l'article que tu cites.... va falloir qu'il m'explique comment il fait pour rediriger les visiteurs de son site selon leurs choix ou leurs actions parce que si les header sont tous placés avant le contenu des pages, le visiteur se balade de pages en pages sans avoir le temps de lire quoi que ce soit ni de faire quoi que ce soit.

quand à ma page liée à mon souci du jour, elle ne me renvoie aucun message d'erreur (ni du type "headers already sent ...", ni d'aucun autre type), elle m'affiche le contenu du echo qui est à la ligne 65 (après le header).

Re: Pb syntaxe sur requete avec conditions multiples

par jojolapine » 15 sept. 2012, 14:02

Bonjour,

La fonction header() doit être appelée avant tout affichage.
Sinon on tombe sur une erreur « headers already sent ... » (http://www.commentcamarche.net/faq/1916 ... dy-sent-by)
Il faut donc revoir la structure de ton code pour placer les vérifications amenant à la redirection avant tout affichage (comme tu l'as fait pour session_start())

Bon courage :)

Pb syntaxe sur requete avec conditions multiples

par Angela81 » 15 sept. 2012, 13:31

Bonjour à tous ! :D
J'ai un petit souci et votre aide me sera très très utile. Un grand Merci d'avance à ceux qui m'aideront

Mon souci : J'ai une page qui, en l'état actuel des choses, est sensée me faire une redirection vers une autre page. ça ne marche pas : le visiteur reste sur cette page alors qu'il ne devrait pas. La redirection est déclenchée par une requete (l52) et je pense que le pb vient de là.
Ne maitrisant pas bien du tout la syntaxe php, j'ai essayé un certain nombre de choses sans en trouver une seule qui me fasse marcher le truc ! sauf que là, je ne vois pas ce qui peut clocher...
Voici le code de ma page. Tout fonctionne sauf la redirection.
<?php
session_start();
$IdDo = $_SESSION['IdDo'];
$IdInteg = $_COOKIE['IdInteg'];
$NomDo = $_SESSION['NomDo'];
//ecriture du cookie IdDo et du cookieNomDo
$expire = 365*24*3600;
setcookie("IdDo","$IdDo",time()+$expire);
setcookie("NomDo","$NomDo",time()+$expire);
?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>do_ac</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1" />
<!-- ....................................-->
<!--[if lt IE 9]>
<script
src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]--> <!-- ce commentaire est un commentaire spécial qui est lu par Internet explorer pour assurer la compatibilité avec les versions antérieures a IE9 
...............................-->
<link rel="stylesheet" href="css1.css" />
<link rel="stylesheet" href="css2.css" />
<!-- le lien contenu dans href=" " renvoi vers le fichier css utilisé sur la page. à modifier en fct° -->  
</head>

<body>
<?php // connexion à mysql et selection de la base test1 
$db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error());
mysql_select_db('test1',$db)  or die('Erreur de selection '.mysql_error()); ?>
<div id="entete">
	<div id="infos"><p>
			<?php //Affichage des infos liées aux $_SESSION
echo 'Session :  IdInteg : '.$_SESSION['IdInteg'].' ; pseudo : '.$_SESSION['pseudo'].' ; niveau licence : '.$_SESSION['lic'].'. - ';
	// Affichage du dossier en cours d'utilisation
echo 'Dossier en cours : '.$IdDo.'  '.$NomDo.'';?>
	</p></div>
</div>
<div id="corpsGen">
	<div id="corpsGauche">
		<div id="lic">
			<?php echo '<p>Licence n°: '.$_COOKIE['IdInteg'].'<br />de niveau : '.$_COOKIE['lic'].'<br />Attribuée à : '.$_COOKIE['pseudo'].'</p>'; ?>
		</div>
		<div id="Do_act">
			<?php echo '<p>Dossier ouvert :<br />N° du dossier : '.$IdDo.'<br /> Nom du dossier : '.$NomDo.'</p>'; ?>
		</div>
	</div>
	<div id="corpsDroite">
	<?php include('menu_top.php');?>
	<?php	// on regarde si au moins 1 IdIndiv existe déjà pour cet IdInteg et ce IdDo
    $sql = 'SELECT IdIndiv FROM indiv WHERE IdInteg= "'.$_COOKIE['IdInteg'].'" AND IdDo= "'.$_COOKIE['IdDo'].'"'; 

    $req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());  
     
    // on compte le nombre de résultats 
    $res = mysql_num_rows($req); 

    if($res=0)  // si y'en a pas, direction le formulaire pour rentrer le 1er !
        { 
        header('location:nv_Indiv.php');
		exit;
        } 
    else 
echo 'on est sur la page do_acc qui est sensée afficher l\'organigramme comprenant au moins le premier individu et les autres si ils existent. A FAIRE !!! après avoir fini le form état civil et son traitement...';
?>

</div>
</div>	
</body>
</html>
Certitudes :
Les cookies sont bien présents et contiennent bien les valeurs que j'attend (ces valeurs s'affichent ailleurs sur la page grâce aux lignes 43 pour le IdInteg et 46 pour le IdDo)

ma table indiv : elle existe bien, elle contient bien un champs IdIndiv, un autre champs IdInteg et encore un autre champs IdDo. Comme je viens de créér cette table, elle est vide (plus vide que ça, c'est le désert !) donc le résultat de la requete ne peut être que =0 quelques soient le IdInteg et le IdDo. sauf que ma page se comporte comme si le résultat est !=0...