IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

changer l'url de header("location"), est-ce possible ?


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut changer l'url de header("location"), est-ce possible ?
    Bonjour tout le monde,

    Je vous explique ce qu'il se passe :

    J'ai un bouton qui ajoute une ligne à un tableau dans une page web.

    Le script qui met à jour le tableau revient sur la page précédente avec ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("Location: ".$_SERVER['HTTP_REFERER']);
    Il parraît que header ne fonctionne qu'en local, c'est vrai cela ?

    Je me demandais si il était possible de de lancer une page PHP dans le location à la place de $_SERVER['HTTP_REFERER']) ?

    Merci d'avance pour l'aide.

    beegees

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2008
    Messages : 215
    Points : 170
    Points
    170
    Par défaut
    Oui c'est tout à fait possible il me semble :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("Location: tapage.php");
    Et si jamais tu veux mettre une tempo (5sec) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("Refresh: 5;url=tapage.php");
    $_SERVER['HTTP_REFERER'] donne l'adresse de la page en cours.

    Et chez moi la fonction header marche sans problème avec Easyphp.

  3. #3
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut
    Bonsoir

    Citation Envoyé par beegees Voir le message
    Il parraît que header ne fonctionne qu'en local, c'est vrai cela ?
    Non pas à ma connaissance, d'ailleurs je l'utilise sur mon site et sans souci...

    Citation Envoyé par beegees Voir le message
    Je me demandais si il était possible de de lancer une page PHP dans le location à la place de $_SERVER['HTTP_REFERER']) ?
    Là je suis pas sur de comprendre... Tu peut faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("Location: http://www.monsite.fr/index.php");
    C'est ce que tu veux faire ?

  4. #4
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par Niki59 Voir le message
    Oui c'est tout à fait possible il me semble :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("Location: tapage.php");
    Et si jamais tu veux mettre une tempo (5sec) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("Refresh: 5;url=tapage.php");
    $_SERVER['HTTP_REFERER'] donne l'adresse de la page en cours.

    Et chez moi la fonction header marche sans problème avec Easyphp.
    Citation Envoyé par 12monkeys Voir le message
    Bonsoir



    Non pas à ma connaissance, d'ailleurs je l'utilise sur mon site et sans souci...



    Là je suis pas sur de comprendre... Tu peut faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("Location: http://www.monsite.fr/index.php");
    C'est ce que tu veux faire ?
    Bonsoir,

    Merci à vous deux pour vos réponses.

    Le but est de rappeler un script PHP nommé "Changer_De_Table.php" qui se trouve dans le dossier "Script".

    J'ai donc utilisé ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("Location: Scripts/Changer_De_Table.php");
    Il me donne alors ces messages d'erreur :

    Warning: include(Scripts/connexion.php) [function.include]: failed to open stream: No such file or directory in C:\wamp\www\Scripts\Changer_De_Table.php on line 3

    Warning: include() [function.include]: Failed opening 'Scripts/connexion.php' for inclusion (include_path='.;C:\php5\pear') in C:\wamp\www\Scripts\Changer_De_Table.php on line 3
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 30' at line 1
    Merci encore pour votre aide très précieuse.

    beegees

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2008
    Messages : 215
    Points : 170
    Points
    170
    Par défaut
    Tu es sûr d'avoir un fichier connexion.php dans le dossier Scripts ?

  6. #6
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut
    D'abord as tu vérifié le chemin vers ton fichier ?

    Sinon peut on voir ton code ? parce que ton erreur me parait bizarre...

  7. #7
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par Niki59 Voir le message
    Tu es sûr d'avoir un fichier connexion.php dans le dossier Scripts ?
    Re,

    Oui j'ai bien un fichier nommé "connexion.php" dans le dossier scripts.

    Merci pour ton aide.

    beegees

    Citation Envoyé par 12monkeys Voir le message
    D'abord as tu vérifié le chemin vers ton fichier ?

    Sinon peut on voir ton code ? parce que ton erreur me parait bizarre...
    Voici le code qui appelle l'URL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <?php
    session_start();
    include('Scripts/connexion.php'); 
     
    $NbLignes = $_GET["nligne"];
     
    //echo '&NbLignes vaut '.$NbLignes;
     
    //var_dump($_POST);
     
    //echo $_SESSION['LaTable'];
     
    foreach ($_POST['new'] as $key=>$NomCol) {
     $sqlset = array();
     $sqlwhere = array();
     
     
     foreach ($_POST['new'][$key] AS $NomCol=>$value) 
     {
                  $sqlset[] = $NomCol . "= '" . $value ."' ";
     
                  $sqlwhere[] = $NomCol . "= '" . $_POST['old'][$key][$NomCol] . "' ";
      }
    $sql = 'UPDATE ' . $_SESSION['LaTable'] . ' SET ' . implode(",", $sqlset) . ' WHERE ' . implode(" AND ", $sqlwhere); 
     
    $execution=mysql_query($sql, $link)or die($query . " - " . mysql_error());
     
     
    }
    echo $sql;
     
    header("Location: Scripts/Changer_De_Table.php");
     
    /*echo('
    
    <script langage="javascript" type="text/javascript">
    	//revient une page en arrière :
    history.back();
    //Recharger la page en cours (refresh) :
    window.location.reload(true); 
    </script>
    
    ');
    */
     
    ?>
    et voici l'URL appelée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    <?php
    $array = array($NomCollone => $ValeurColonne);
    include('Scripts/connexion.php'); 
     
     
    echo '<table border="1" id="TableauUpdate">';
    //Je crée une variable de session ici afin que le nom de la table puisse être utilisé dans le script "Mettre à jour".
    $table = $_POST['select_Nom_Tables'];
    $_SESSION['LaTable'] = $table;
     
    $query = mysql_query("SELECT * FROM $table LIMIT 30") or exit(mysql_error()."</br>$query");
    $num_rows = mysql_num_rows($query) or exit(mysql_error()."</br>$query");
     
    echo "$num_rows Rows\n";
     
     
     
    	echo '<form action="MettreAJour.php" method="post" name="frmSaisie" id="frmSaisie">';
     
     
    	echo '<tr>';
    	for($i=0;$i<mysql_num_fields($query);$i++)
    		{
    		echo '<th>'.mysql_field_name($query,$i).'</th>';
    		}
    	echo '</tr>';
     
    	$nligne = 0;
    	$nbColonnes = 0;
    	while($row = mysql_fetch_array($query,MYSQL_ASSOC)) 
    	{
     
    	echo '<tr>';
    	foreach($row as $NomCol => $Valeur)
    		{
    			   echo '<td> <textarea name="new[' . $nligne . '][' . $NomCol . ']" . $>'.$Valeur.'</textarea> <input name="old[' . $nligne . '][' . $NomCol . ']" type="hidden"  value="'.$Valeur.'"/></td>';	
    		}
    	$nligne++;
    				echo '</tr>';
    	}
     
     
    	echo '<input type="submit" name="btnUpdate" value="Mettre la table à jour" onClick="UpdateSQL()" />' ; 
     
    	echo '</p>';
    	echo '</form>';
     
     
     
     
     
    $NbFields = mysql_num_fields($query);
     
    		//echo 'le nombre de champ de cette table vaut ' . $NbFields;
    		echo '<input type="submit" name="btnInsertInto" value="Ajouter un enregistrement à cette table" onClick="InsertIntoSQL()" />' ; 
    		//echo 'le nombre de ligne - 1 dans cette table est ' . $num_rows; 
    		echo '</table>';		
    		?>
     
    <script langage='javascript'>
    function UpdateSQL()
    {
    	document.forms['frmSaisie'].action ='MettreAJour.php';
    	document.forms['frmSaisie'].submit();
    }
    function InsertIntoSQL()
    {
    	document.forms['frmSaisie'].action ='Insert_Into_Generation_Chaine_SQL.php';
    	document.forms['frmSaisie'].submit();
    }
    </script>
    Je me demande si ce n'est pas à cause que je devrais appeler connexion.php au départ avec require_once ???

    Merci encore à vous deux pour l'aide.

    beegees

  8. #8
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut
    Bonjour

    Une chose est sure : c'est que dans tes deux codes tu fais un include :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include('Scripts/connexion.php');
    à chaque fois à la ligne 3 et c'est ce fichier connexion.php qui n'est pas trouvé. Je me disais bien, c'est pas un message d'erreur lié au header...

    Par contre je ne sais pas à quoi correspondent tes deux codes : lequel appelle l'autre, lequel est est inclus dans l'autre, ou pas, d'ailleurs...

    C'est pour ça, je me répète, que tu dois bien vérifier le chemin vers ce fichier connexion.php...

    Aller faisons une supposition : si je comprends bien ton second code est le fichier Changer_De_Table.php qui se trouve dans le dossier Scripts, si c'est le cas dans ce second code tu appelles Scripts/connexion.php.

    Donc tu appelles un même fichier connexion.php dans dans deux fichiers qui ne se trouvent pas au même endroit, mais en utilisant le même chemin...

    Il y a un truc qui ne vas pas, tu vois ce que je veux dire...

    Maintenant je peut me tromper, mais alors il faudrait préciser comment s'appelle le fichier contenant ton premier code, idem pour le second code, qu'on y voit un peu plus clair...

  9. #9
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par 12monkeys Voir le message
    Bonjour

    Une chose est sure : c'est que dans tes deux codes tu fais un include :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include('Scripts/connexion.php');
    à chaque fois à la ligne 3 et c'est ce fichier connexion.php qui n'est pas trouvé. Je me disais bien, c'est pas un message d'erreur lié au header...
    En effet, je fais un include dans les deux fichiers.

    Par contre je ne sais pas à quoi correspondent tes deux codes : lequel appelle l'autre, lequel est est inclus dans l'autre, ou pas, d'ailleurs...
    MettreAJour.php met à jour ma base de données MYSQL, ça me donne alors un écran blanc, le but était juste de revenir en arrière et afficher la table qui a été mise à jour.

    La table qui a été mise à jour est une table qui a été sélectionnée par une liste déroulante, lors du choix, la variable de session $_SESSION['LaTable'] contient le nom de la table sélectionnée.

    Je me disais donc que le script appelé par le header pouvait afficher la table avec sa ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = mysql_query("SELECT * FROM $table LIMIT 30") or exit(mysql_error()."</br>$query");
    la variable $table correspond à la variable de session $_SESSION[LaTable].

    C'est pour ça, je me répète, que tu dois bien vérifier le chemin vers ce fichier connexion.php...
    La feuille MettreAJour.php qui contient le header est en dehors de Scripts.

    Aller faisons une supposition : si je comprends bien ton second code est le fichier Changer_De_Table.php qui se trouve dans le dossier Scripts, si c'est le cas dans ce second code tu appelles Scripts/connexion.php.
    Changer_de_table est en effet le second code. Cette page php se trouve dans Scripts.

    Donc tu appelles un même fichier connexion.php dans dans deux fichiers qui ne se trouvent pas au même endroit, mais en utilisant le même chemin...
    Ah bon, là, je ne comprends pas
    Il y a un truc qui ne vas pas, tu vois ce que je veux dire...
    Non, désolé

    Maintenant je peut me tromper, mais alors il faudrait préciser comment s'appelle le fichier contenant ton premier code, idem pour le second code, qu'on y voit un peu plus clair...
    Je pense avoir répondu à cela mais si cela ne te semble pas clair, n'hésite pas à me le dire.

    Un big pour ton aide.

    beegeees

  10. #10
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut
    Citation Envoyé par beegees Voir le message
    Ah bon, là, je ne comprends pas

    La feuille MettreAJour.php qui contient le header est en dehors de Scripts.

    Changer_de_table est en effet le second code. Cette page php se trouve dans Scripts.
    Bon alors je réessaye, ce sera plus clair avec tes précisions :

    Le fichier Changer_de_table.php se trouve donc dans le dossier Scripts, dossier dans lequel se trouve aussi le fichier connexion.php.

    Or dans le fichier Changer_de_table.php tu essayes d'inclure le fichier connexion.php avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include('Scripts/connexion.php');
    alors que connexion.php se trouve au même niveau que Changer_de_table.php, il faut utiliser le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include('connexion.php');
    Avec ton code tu inclue un fichier connexion.php qui se devrait se trouver dans un sous répertoire appelé Scripts qui devrait se trouver lui même dans le répertoire Scripts dans lequel se trouve les fichiers Changer_de_table.php et connexion.php.

  11. #11
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Merci beaucoup pour ton explication.

    J'ai retiré "Script/"

    Mon code fonctionne toujours mais la manipulation ne fonctionne pas.

    Je vais sans doute devoir penser à résoudre mon problème autrement, genre :

    Revenir sur la page, sélectionner avec la liste déroulante la valeur de ma variable de session et simuler le clic sur le bouton.

    Je pense que cela sera plus facile.

    Merci encore pour ton aide et bon Week-End de Toussaint.

    beegees

Discussions similaires

  1. [RegEx] URL + e-mail en même temps, est-ce possible ?
    Par jojodivx dans le forum Langage
    Réponses: 2
    Dernier message: 10/09/2010, 16h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo