[PHP] redirection d'erreur

Résolu/Fermé
kunt45 Messages postés 124 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 22 mars 2012 - 10 mars 2010 à 09:12
kunt45 Messages postés 124 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 22 mars 2012 - 10 mars 2010 à 10:21
Bonjour,
voila je vous explique mon problème.je cherche dans mon code un chemin et après selon si le chemin existe ou non il renvoi sur le fichier de ce chemin ou doit rediriger vers une page d'erreur.je ne vois absolument pas comment faire.si vous aviez l'amabilité de m'aider.alors je sais qu'il y a une possibilité avec base de donnée mais sa me demande de changer tout le code. en effet, je suis en stage j'avais proposer a mon maitre de stage une solution pour le site crée il ma pris pour un "jeune con" qui y connaissait rien et ma obliger a appliquer sa technique or après création je me retrouve avec plein de bug en partie régler et maintenant que j'ai ce pb il me demande de tout recommencer selon ma méthode car elle était effectivement bonne.comme je n'ai ni le courage ni l'envie ni le temps je vous demande votre aide. en vous remerciant par avance.

<?php
$annee = $_POST['annee'];
$statut = $_POST['statut'];

if ($statut == "") {
echo "ERREUR DE SAISIE : ";
echo "Le champ statut est obligatoire !";
exit;
}

if ($annee == "") {
echo "ERREUR DE SAISIE : ";
echo "Le champ année est obligatoire !";
exit;
}
//$designstatut=$statut[0];

$host = "******";
$user = "******";
$bdd = "*******";
$passwd = "******";


mysql_connect($host,$user,$passwd) or die("erreur de connexion au serveur");

mysql_select_db($bdd)or die("erreur de connexion a la base de donnees");


$query = "SELECT designstatut FROM statut WHERE libellestatut='$statut';";
$result = mysql_query($query);

while ($row = mysql_fetch_row($result)){
$designstatut = $row[0];
}



$nomfichier=$annee.$designstatut.".htm";
$nomdossier=$annee.$designstatut;

$dest = "./$nomdossier/$nomfichier";



$result=header("Location: $dest");

if($result= "TRUE")
{
header("Location: $dest");
}

else
{
header("Location: erreur.html");
}

?>

4 réponses

Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
10 mars 2010 à 10:01
Bonjour, que testes tu, à cette ligne :
$result=header("Location: $dest"); 

?
header n'a pas de valeur de retour :-/

https://www.php.net/manual/fr/function.header.php
0
N31B4F Messages postés 6 Date d'inscription mardi 9 mars 2010 Statut Membre Dernière intervention 17 mars 2010 3
10 mars 2010 à 10:02
Bonjour,
Dans l'idée c'est pas mal mais en fait je vois pas vraiment à quel moment intercepter l'erreur.
Ce que je peux dire c'est qu'en cas de ton test.
   if($result= "TRUE")  
   {
       header("Location: $dest");
   } 


Tu risques d'avoir un problème au niveau des '=' il t'en faut au moins deux voire 3 si tu enlèves la chaine de caractère. Est-ce que c'est une faute de frappe dans ton code ou une faute lorsque tu as recopié?

Vu que tu fais des 'exit;' lorsqu'il y a une erreur, tu n'iras pas vers ta page d'erreur, mais si tu ne les fais pas vu que tu balances des 'echo' php ne voudra pas modifier le header.

Enfin toujours avec les headers si tu n'empêches pas php d'afficher les erreurs ( je ne me souviens plus de la variable à modifier mais dans la doc php tu dois trouver ça facilement ) . S'il y a une erreur sql par exemple il ne va pas vouloir modifier les headers car il aura affiché le message d'erreur.

Avec plus de précisions on peut aller plus loin alors si tu souhaites traiter les erreurs sql par exemple tu peux tenter un
    try{

    }catch(){} 

là c'est plutôt Java mais en php ça existe ( je ne me souviens plus à partir de quelle version ).
0
N31B4F Messages postés 6 Date d'inscription mardi 9 mars 2010 Statut Membre Dernière intervention 17 mars 2010 3
10 mars 2010 à 10:06
Effectivement je n'avais pas remarqué le test sur :

 $result=header("Location: $dest");  


Le lien vers la doc explique tout je ne pense pas que ça soit possible, par contre si tu travailles avec des includes c'est déjà plus possible de tester l'existence de ton fichier.

essaie plutôt
< ?php
 $result = file_exists($dest);
?> 




voilà si ça peut aider
0
kunt45 Messages postés 124 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 22 mars 2012 6
10 mars 2010 à 10:21
c'est bon sa marche merci :D
0