Appler une page php et faire disparaitre la page en cour

cs_jzeel Messages postés 156 Date d'inscription mercredi 21 décembre 2005 Statut Membre Dernière intervention 10 mars 2011 - 30 mars 2009 à 02:38
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 - 31 mars 2009 à 20:39
Bonjour a tous,

J'ai cree un formulaire et si tout est ok il appele une page  :
<?
if($ok_=="true"){
        include('ajout_membres_db.php');
}
?>

Le probleme c'est qu'il affiche la page a l'intérieur de la page en cour... c'est quoi la methode pour appeler une page tout en faisant disparaitre la page en cour.

Existe-il une facon sans include?

Merci!

Jzeel

13 réponses

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
30 mars 2009 à 06:37
Salut Jzeel,

if ($ok_ == 'true') {
   header('Location: ajout_membres_db.php');
    exit;
}

Attention : il ne faut rien envoyer au navigateur avant header (même pas un retour à la ligne)

Cordialement,

Kohntark -
0
hafidtdi Messages postés 21 Date d'inscription mardi 3 mars 2009 Statut Membre Dernière intervention 8 avril 2009
30 mars 2009 à 14:27
Slt,
j'ai le méme probléme comme toi .j'ai essayer Require("index2.php");
mais il y'a toujour ce probléme.
jecrois qu'il y'a une méthode sous java script pour cela.
merci;
0
cs_jzeel Messages postés 156 Date d'inscription mercredi 21 décembre 2005 Statut Membre Dernière intervention 10 mars 2011
30 mars 2009 à 19:13
Non cela ne marche pas, je vous explique un peu mon dode en bref et vous pouvez aller faire le test sur http://reseauinteraction.com/reseau/fr/membres/ajout_membres.php



---
PAGE ajout_membres.php

<?
//
Apres avoir validé tous les champs de mon formulaire... ok_= =true et j'appele la page 'ajout_membres_db.php' qui va se connecter à la base de données et verifier si le nom d'usager rentré existe déjà si OUI il doit revenir a la page ajout_membre.php, sinon il enregistre le nouveau usager et va a la page index.php(ou il y a mon header) voir ci-dessous:
//

if($ok_ == "true"){
 include_once('ajout_membres_db.php');
        if ($_failure_ajout_user){?>
                         ----
&nbsp;Votre nom d'usager à déjà été pris, veuillez rentrer un nouveau nom d'usager!

    <? }
}?>

PAGE ajout_membres_db.php

<?php
// On dé­¡rre la session
session_start();
include('unset_all.php');
$_failure_ajout_user = false;



/*********



Ici je fait une connection a ma base de données, pour voir s'il y a un enregistrement si c'est le cas il doit retourné a la page ajout_membres.php pour afficher que ce nom d'usager a déjà été pris.





*********/
   if (mysql_num_rows($req_1) > 0) { // si il y a enregistrement
   $_failure_ajout_user = true; // cette variable devient true et va generer l'erreur en retournant sur la page ajout_membre.php
   include_once('ajout_membres.php'); // il retoure sur PAGE ajout_membres.php

 }
 else{ SI TOUT est OK il fait le else en inserant l'info dans la BD et a la derniere ligne il va sur index.php
 $sql = "INSERT INTO membres(id, titre, nom, prenom, adresse, ville, province, code_postal, tel_res, tel_bur, tel_bur_ex, courriel, site_web, profession, conn_reseau, reference, info_supp, besoins_imm, projets_futurs, user, password)
VALUES('','$titre','$nom','$prenom','$adresse','$ville','$province','$code_postal','$tel_res','$tel_bur','$poste','$adresse_courriel','$site_web','$profession','$entendu_reseau','$reference','$info_supp','$besoin_immediat','$projets_futurs','$nom_usager','$password1')";     
    // on verifie si l'insertion s'est bien d鲯ulé®®..
    mysql_query($sql) or die('Erreur SQL !'.$sql.'
'.mysql_error());  
    $sql_2 "SELECT * FROM membres WHERE user '".addslashes($nom_usager)."'";
   $req_2 = mysql_query($sql_2) or die('Erreur SQL :
'.$sql);
   // On vérifie que l'utilisateur existe bien
 $data = mysql_fetch_assoc($req_2);
   $_SESSION['_success_ajout_membres']= true; // condition pour aller a la page index.php
  $_SESSION['_id'] = $data['id'];
  $_SESSION['_code'] = $data['code'];  
etc...
   mysql_close();  // on ferme la connexion                       
 }
if($_SESSION['_success_ajout_membres']){ //SI TOUT EST OK il doit aller à la page index.php
header('location:index.php');

exit;
}
?>

Le problème c'est que au lieu d'aller à index.php il va toujours a ajout_membre.php... y-a t-il une autre solution a part Header??

Merci de votre aide!

Jzeel
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
30 mars 2009 à 20:36
Non cela ne marche pas



=>
Si, cela répond parfaitement à ta question. Que tu aies le reste du code qui ne fonctionne pas est une autre histoire.
Et puis, si tu respectes ce que j'ai noter ça donne ça :
header('Location: index.php');
L'écrire autrement peut poser pb.

Il n'est pas possible de déboguer avec le code que tu donnes. On ne voit pas certaines requêtes, définition de variable, scripts inclus ...
unset_all.php => c'est quoi ?
$req_1 => c'est quoi ?
Plutôt que de chercher une autre solution que header, si j'étais toi, je commencerai par corriger les erreurs de mon code.

Cordialement,

Kohntark -
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_jzeel Messages postés 156 Date d'inscription mercredi 21 décembre 2005 Statut Membre Dernière intervention 10 mars 2011
30 mars 2009 à 21:11
J'ai été très claire sur le problème, Mon problème c'est la redirection de page, tout le reste du code marche... c'est pas pour rien que j'ai mis le lien pour fin de verification,
Le unset_all.php ou $req_1 => n'ont aucun lien avec la redirection. J'ai mis le code en BREF, juste pour avoir une idée de mon objectif
et j'ai bien mis header('Location: index.php'); J'avais mis un L minuscule pour voir si il y avait difference. Bon, je vais debrouiller avec mon problème...

Merci quand même!

Jzeel
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
31 mars 2009 à 00:59
Ben écoute bonne chance, déjà que ce n'est pas facile d'être le seul au monde pour qui header ne fonctionne pas alors si en plus tu te contrefous des idées qui te sont données ...  vraiment bonne chance

J'ai été très claire sur le problème, Mon problème c'est la redirection de page
= > donc, avec le code que tu donnes dans ton premier post, c'est header et rien d'autre

Le unset_all.php ou $req_1 => n'ont aucun lien avec la redirection
=> tu as vu que dans le code que tu as peut être écrit il y a une condition pour l'exécution du header ?? Et que cette condition est donnée par $req_1 ?

et j'ai bien mis header('Location: index.php');
= > et les gens qui te lisent le devine comment si tu écris autre chose que ce que tu as réellement mis ?

Tu as vu que unset_all.php peut agir activement sur le script ?
Que $sql2 ne sert à rien, sinon à complexifier la chose et prendre des ressources machine ?
Que pour mysql_close(); c'est sans doute la même chose ?
Qu'écrire "include_once('ajout_membres.php');  // il retoure sur PAGE ajout_membres.php " est tout simplement faux
Que ça : "if (mysql_num_rows($req_1) > 0) { // si il y a enregistrement" ça ne devrait pas exister ?
Que "if($_SESSION['_success_ajout_membres']){" ne sert à rien

Une dernière pour la route, mais il y en a encore pas mal :
J'avais écrit : "Attention : il ne faut rien envoyer au navigateur avant header (même pas un retour à la ligne)"
=> l'inverse de ce que tu fais, ... ça ne risque pas de fonctionner.

Tu sais moi je m'en fou, c'est ton problème, pas le mien. Je suis très loin d'avoir toujours raison et je dis régulièrement des conneries, comme tout le monde ici, y compris les "vraiment balèzes". Ce que je trouve regrettable c'est que tu ne tiennes pas compte des idées et remarques qui te sont données. Je ne vois pas trop l'intérêt de venir ici si c'est pour dire "ça ne marche pas" sans faire l'effort, malgré les remarques, de penser que les erreurs viennent de ton code.

Bon, tu devrais tout de même relire la doc php concernant header, include, include_once, require etc ...

Bon courage,

Kohntark -
0
hafidtdi Messages postés 21 Date d'inscription mardi 3 mars 2009 Statut Membre Dernière intervention 8 avril 2009
31 mars 2009 à 12:59
slt;
je crois que la méthode header() est la plus utiliser pour se genre de probléme.

bonne chance

merci.
0
hafidtdi Messages postés 21 Date d'inscription mardi 3 mars 2009 Statut Membre Dernière intervention 8 avril 2009
31 mars 2009 à 15:29
Slt;

J'ai trouver la solution avec javascript
essaye ca:

echo( "<script language="javascript">window.location.replace("index2.php");</script>" );

Bonne chanse.
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
31 mars 2009 à 17:33
Salut Hafidtdi,

Pourquoi utiliser javascript alors que header est beaucoup plus adapté pour ce cas de figure ?

Kohntark -
0
hafidtdi Messages postés 21 Date d'inscription mardi 3 mars 2009 Statut Membre Dernière intervention 8 avril 2009
31 mars 2009 à 17:54
slt,


j'ai essayer avec header mais ca ne marche pas.


avec javascropt sa fonctione bien.


merci
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
31 mars 2009 à 18:27
Si ça ne fonctionne pas c'est sans doute que tu as déjà envoyé des données au navigateur avant l'appel de header.

Cordialement,

Kohntark -
0
hafidtdi Messages postés 21 Date d'inscription mardi 3 mars 2009 Statut Membre Dernière intervention 8 avril 2009
31 mars 2009 à 19:20
slt
j'ai pas penser a cela.je vais reesayer.
merci
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
31 mars 2009 à 20:39
Et puis pense à activer l'affichage des erreurs (je doute qu'elles le soient).
Tu peux par exemple ajouter ça au tout début de ton script :
ini_set ('display_errors', 'on');
error_reporting(E_ALL);

Kohntark -
0
Rejoignez-nous