8797 sujets

Développement web côté serveur, CMS

Bonjour,

Dans le code qui suit, je tente une redirection vers "questionnaire.php" mais ça ne fonctionne pas. On reste dans la page courante (je le vois par le <title> dans le navigateur) mais je me retrouve devant une page blanche et rien ne s'affiche.

Pour information :

1) La requête SQL vérifiant l'existence du code dans ma bdd fonctionne parfaitement. Si je remplace la redirection par un -- echo 'le code existe' --, tout fonctionne à merveille et j'ai les réponses attendues (le message s'affiche / pas de page blanche).

2) "questionnaire.php" existe et est localisé dans le même répertoire que l'autre page contenant le code qui suit (autrement dit, pas de problèmes liés à l'emplacement de "questionnaire.php")



<?php if (isset($_POST['Code'])) {$Code = $_POST['Code'];} ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr"
 lang="fr">

<head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type" />
<link href="style_questionnaire.css" rel="stylesheet" type="text/css" media="screen" />

<?php if (empty($Code)) { ?>
<title>Questionnaire - veuillez entrer votre code d&rsquo;identification</title> <?php ;} else { ?>
<title>Questionnaire - code invalide</title> <?php ;} ?>
</head>

<body>
<?php if (empty($Code)) { ?>
<p><em>Attention!</em> Pour remplir le questionnaire, vous devez obligatoirement indiquer le code d&rsquo;identification que vous a remis la responsable de recherche. Si vous ne vous souvenez plus de votre code, veuillez contacter &Eacute;milie Viau au num&eacute;ro de t&eacute;l&eacute;phone ***********.</p>

<?php include("includes/inc_saisiecode.php");} 

else {

mysql_connect("localhost", "monid", "monmotdepasse") or die("Erreur de connexion au serveur");
mysql_select_db("viae2601") or die("Erreur de connexion");

$requete1 = 'SELECT `Id` FROM `code_liste` WHERE `Code` = "'.$Code.'"';
$resultat = mysql_query($requete1);

if (!mysql_fetch_row($resultat)) { ?>
<p>Le code que vous avez saisi (<em><?php echo $Code ?></em>) est invalide. Veuillez entrer &agrave; nouveau votre code. Si le probl&egrave;me persiste, vous pouvez communiquer avec &Eacute;milie Viau, au num&eacute;ro de t&eacute;l&eacute;phone ***********.</p>

<?php include("includes/inc_saisiecode.php");}

else { header("Location: questionnaire.php");}  //si le code existe, accès au questionnaire

mysql_close(); } ?>

</body>
</html>




Merci à l'avance pour toute aide apportée,

Nalita33
Modifié par nalita33 (03 Oct 2008 - 03:25)
Modérateur
Salut,

Pour relire ton code, c'est pas vraiment ça. À vu de nez, je crois que ton header() ne fonctionne pas parce que tu as de l'affichage avant et normalement tu aurais dû avoir un message d'erreur. Regarde ma réponse à ce sujet.

Tu peux t'en inspirer aisément.

++
Hello,

Php.net a écrit :
N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé, soit par des lignes HTML habituelles dans le fichier, soit par des affichages PHP.


Il te faut tout simplement executer tes tests (et l'appel à header) avant de mettre le moindre code html.
Tymlis a écrit :
Hello,



Il te faut tout simplement executer tes tests (et l'appel à header) avant de mettre le moindre code html.


Oui, c'est ce que j'avais compris de l'intervention de Nolem. C'est corrigé et tout fonctionne.


Merci Smiley biggrin