Forum de discussion et d'aide au php
Vous n'êtes pas identifié.
|
Regles d'utilisation des forums : pensez à toujours les respecter si vous désirez obtenir des réponses rapides. FAQ : pensez à toujours chercher dedans si la réponse à votre question est dedans. Proposez vos news : si vous avez un evenement à annoncer le chat : venez discuter de php. |
||
Bonjour,
Après l'envoi d'un formulaire, on redirige vers une page php qui entre les données dans la BDD.
Après traitement, il faudrait revenir à la page d'acceuil.
Question: Quel est la ligne de code qui permet de faire cette redirection?
Dans l'attente d'un réponse...
Hors ligne
hello,
tu peux utiliser la fonction header();
header('location: ton-url');attention, un header doit etre placé avant tout echo, ou code envoyé à la page (ton <?php doit etre en tout début de page, et il ne doit y avoir aucun echo avant)
Hors ligne
Oais les header c'est le mieux. mais si tu as déjà renvoyé du code, tu vas avoir une erreur 'Headers have arleady been sent...' dans ce cas là le + simple est demander à php de sortir un petit coup de javascript :
echo "<script language='javascript'>"; echo "document.location.href = '".$RedirectURL."?msg=Save Successfull.';"; echo "</script>";
Hors ligne
à savoir que ca fonctionnera chez toi, mais ne sera pas suivi par 99% des robots (le 1% restant, je le cherche encore)
donc, ta seconde page ne sera pas indéxée dans les moteurs de recherche
Hors ligne
Ben en même temps, si ca deuxième page ne fait qu'enregistrer les données et rediriger vers la page d'accueil, c'est pas très grave vu que l'accueil est référencé... Ca influe sur le pageRank c tout.. non ?
Enfin moi c pas le genre de trucs qui me dérange car je fais principalement des intranets & extranets. Pas besoin de référencement ;o)
Hors ligne
Comme solution, j'ai juste ajouté un meta refresh en début de page sachant que le traitement des données prend moins d'une seconde.
Pas très rigoureux mais ca marche bien donc tant mieux.
<html>
<head>
<meta http-equiv="refresh" content="1; url=Quotation.php">
</head>
<body>merci pour vos réponses
Hors ligne
Pas très rigoureux mais ca marche bien donc tant mieux.
jusqu'au jour ou ton hebergeur a une mauvaise bande passante pour une raison x ou y, et la, la page sera rechargée avant le chargement complet :mrgreen:
Hors ligne
pas faux,
alors comment insérer les réponses précédentes dans mon code -
ie,
1) qu'est ce que ce header? où le mettre?
2) idem pour la fonction javascript?
merci pour les future réponses
Hors ligne
alors,
1 - le header
c'est les informations qui sont envoyées au navigateur. elles contiennent les types de données qu'il recevra dans la page...
l'avantage : tous les robots suivront la redirection
le désavantage : la redirection doit etre envoyée avant toute donnée dans la page
header('location: url');2 - le javascript
c'est une redirection comme un meta, excepté que c'est en javascript
l'avantage : peut etre placé n'importe ou dans la page
le désavantage pas suivi par les moteurs, possibilité de probleme en cas de vitesse lente
Hors ligne
Je m'excuse de ne pas m'être très bien exprimé dans la dernière réponse,
mais ma réelle question était:
Comment insérer vos réponses dans mon code actuel, en particulier l'appel du script?
<html>
<head>
<meta http-equiv="refresh" content="1; url=Workforce.php">
</head>
<body>
<?php
// catch the data from the "formulaire"
$FamilyName = $_POST['familyname'] ;
$FirstName = $_POST['firstname'] ;
//etc...
$FamilyName = strtoupper($FamilyName);
$FirstName = ucfirst($FirstName) ;
//etc...
// insertion into the table
$sqlserver='localhost';
$login='root';
//$password='';
$base='bdd-xxxxxxx;
mysql_connect($sqlserver,$login) or die('Connexion impossible');
mysql_select_db($base) or die('Sélection de la base impossible');
$requete="INSERT INTO workforce values(0,'$FamilyName',...) ";
mysql_query($requete);
?>
</body>
</html>Hors ligne
Salut,
en fait, tu n'a même pas besoin de mettre les balises html : il te suffit de mettre ton code php pour insérer les données puis de faire un header, genre :
<?
// code pour insérer les données
header('location: url');
?>
ça devrait suffire comme page php
Hors ligne
Attention les yeux MDR.
J'ai souvent eu les mêmes problêmes et grâce au PHP (mise a part dans des cas extremes) adieu META et autres Javascript de redirection.
Je m'explique. :shock:
:shock: Principe :
Une fois un formulaire rempli, on veut que celui ci soit traiter et que en resultat la page d'acceuil s'affiche.
:shock: Réponse :
###### FORM.PHP ou FORM.HTML ###### <form method=post action=acceuil.php> <input .......... // ton formulaire en entier à poster <input type=hidden name='redirection' value='traitement'> </form>
##### ACCEUIL.PHP ######
<?php
// on recupere la valeur envpoyé par ton formulaire
$redirection = $_POST['redirection'];
// ensuite si on va envoyé le formulaire avec la bonne valeur (traitement)
// ton script qui traite le formulaire se met en route et la page d'acceuil
// s'affiche.
// Sinon, ta page d'acceuil s'affiche et ton script ne fait rien
if ($redirection == "traitement") {
// ici tu met ton script qui traite le formulaire
}
?>
<html><body> ..... <?php ..... // le contenu de ta page d'acceuilJ'espère t'avoir été utile . SETH
Hors ligne
C'est bien et tout a fait vrai mais pas viable pour les sites à grosse structure ou tu veux que tous les formuylaires reviennent vers la page d'accueil.
Tu imagines la tete du code de la page d'accueil ?
Le mieux pour moi est réellement d'utiliser PHP_SELF comme target du formulaire et de rediriger vers l'accueil après l'insertion en utilisant un header ou (si tu as besoin de faire des outputs avant traitement - Je pense notement à l'utilisation de templates avec un code gors HTML bloqué) d'utiliser le javascript.
Hors ligne