[PHP] redirection d'erreur

Résolu
kunt45 Messages postés 124 Date d'inscription   Statut Membre Dernière intervention   -  
kunt45 Messages postés 124 Date d'inscription   Statut Membre Dernière intervention   -
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");
}

?>
A voir également:

4 réponses

Defouille Messages postés 388 Date d'inscription   Statut Membre Dernière intervention   54
 
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   Statut Membre Dernière intervention   3
 
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   Statut Membre Dernière intervention   3
 
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   Statut Membre Dernière intervention   6
 
c'est bon sa marche merci :D
0