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 :

redirection à partir d'un formulaire


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 139
    Points : 50
    Points
    50
    Par défaut redirection à partir d'un formulaire
    Bonjour à tous,

    J'ai un petit formulaire html qui alimente une BDD.
    Sur une page html, je propose de visionner le contenu de ma table.

    Sur cette page, j'ai un mot de passe à entrer (pour supprimer le contenu de ma table) : name =codesecret, une case à cocher pour savoir en plus si on exporte le contenu de la table avant effacement dans une fichier XLS : name=export.

    Le souci, c'est que si je ne choisis pas d'exporter la table, il me ramène bien sur mon html à jour (donc vide).
    Mais si je choisis d'exporter la table.....la redirection ne fonctionne plus.
    Pouvez vous m'aider svp ? Merci d'avance.



    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
     
    <?php 
     
    $hote     = "sql.free.fr";  
    $user     = "monlogin";  
    $password = "monpassword"; 
    $db       = "maDB"; 
     
    $db = mysql_connect($hote, $user, $password); 
    mysql_select_db("bdd",$db); 
     
    function redir($url)
    { 
    echo "<script language=\"javascript\">"; 
    echo "window.location='$url';"; 
    echo "</script>"; 
    } 
     
    if ($codesecret == 1111) 
      {
     
       $export_oui  = $_POST["export"]; 
     
       if ( $export_oui ) 
       {
       header("Content-type: application/vnd.ms-excel; charset=UTF-16LE");
       header("Content-Disposition: attachment; filename=export_contacts.xls");
     
       $sql = "SELECT * FROM DemandeRDV";
       $res = mysql_query($sql) or die("BUG");
     
       $num_fields = mysql_num_fields($res); // Récupere le nb de champs de la table
       $num_rows = mysql_num_rows($res); // Récupere le nb d'enregistrement
       $tbl= ' <table border="1px"><tr>';
     
       for($i=0;$i<$num_fields;$i++){
       $tbl = $tbl . "<td>".mysql_field_name($res, $i)."</td>"; // Affiche dans l'entête du tableau le nom de tous les champs renvoyer par la requete SQL
    	}
    	$tbl = $tbl . "</tr>";
    	while ($data = mysql_fetch_array($res))
    	{
    		$tbl = $tbl . "<tr>";
     
    		for($i=0;$i<$num_fields;$i++){
    			$tbl = $tbl . '<td align="center">'.$data[mysql_field_name($res, $i)].'</td>'; // Affiche le contenu de chaque ligne retourné par la requete SQL
    		}
    		$tbl = $tbl . "</tr>";
    	}
    	$tbl = $tbl . "</table>";
       	print $tbl ;
       }
         $reqmod = mysql_query("Delete from DemandeRDV" ); 
         redir("./index.php");    
      } 
    else
      {
         redir("./index_erreur.php");
      }
    mysql_close();   
    ?>

  2. #2
    Membre chevronné
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Points : 2 015
    Points
    2 015
    Par défaut
    Normal, tu ne lui dis pas de se rediriger.

    En fait tu lui transmets la demande de redirection uniquement si l'utilisateur ne demande pas l'export. Donc quand tu le demandes, forcément, il ne redirige pas.

    Correction:
    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
    <?php 
     
    $hote     = "sql.free.fr";  
    $user     = "monlogin";  
    $password = "monpassword"; 
    $db       = "maDB"; 
     
    $db = mysql_connect($hote, $user, $password); 
    mysql_select_db("bdd",$db); 
     
    function redir($url)
    { 
    echo '<script language="javascript">'; 
    echo 'window.location=\''.$url.\'';'; 
    echo '</script>'; 
    } 
      
    if ($codesecret == 1111) 
      {
       
       $export_oui  = $_POST['export']; 
        
       if ( $export_oui ) 
       {
       header('Content-type: application/vnd.ms-excel; charset=UTF-16LE');
       header('Content-Disposition: attachment; filename=export_contacts.xls');
     
       $sql = 'SELECT * FROM DemandeRDV';
       $res = mysql_query($sql) or die("BUG");
    	
       $num_fields = mysql_num_fields($res); // Récupere le nb de champs de la table
       $num_rows = mysql_num_rows($res); // Récupere le nb d'enregistrement
       $tbl= ' <table border="1px"><tr>';
     
       for($i=0;$i<$num_fields;$i++){
       $tbl .= '<td>'.mysql_field_name($res, $i).'</td>'; // Affiche dans l'entête du tableau le nom de tous les champs renvoyer par la requete SQL
    	}
    	$tbl .= '</tr>';
    	while ($data = mysql_fetch_array($res))
    	{
    		$tbl .= "<tr>";
     
    		for($i=0;$i<$num_fields;$i++){
    			$tbl .= '<td align="center">'.$data[mysql_field_name($res, $i)].'</td>'; // Affiche le contenu de chaque ligne retourné par la requete SQL
    		}
    		$tbl .= '</tr>';
    	}
    	$tbl .= '</table>';
       	print $tbl ;
       }
         $reqmod = mysql_query('Delete from DemandeRDV');
         redir('./index.php');
      } 
    else
      {
         redir('./index_erreur.php');
      }
    mysql_close();
    redir('./index.php');
    ?>
    Au passage, je t'ai un peu optimisé le code:
    -> n'utilise pas de double quotes dans tes chaines de caractères surtout quand elles ne contiennent pas de variables. Les doubles quotes indiquent à php qu'il doit les parcourir pour remplacer les variables, ce qui n'est pas systématiquement nécessaire. En utilisant des simple quote, tu indiques à php d'utiliser la chaîne telle qu'elle est, et donc gagne en temps de traitement.
    -> $taVar = $taVar . 'toto';
    ça se fait aussi comme ça:
    $taVar .= 'toto';
    C'est plus rapide et réduit les risques de fautes de frappe

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 139
    Points : 50
    Points
    50
    Par défaut
    Merci.
    Par contre, ca ne fonctionne toujours pas.
    Après m'avoir demandé d'enregistrer le fichier, il ne réactualise pas mon index.php.......
    Alors qu'il le fait si on n'entre pas dans la boucle "export"

  4. #4
    Membre chevronné
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Points : 2 015
    Points
    2 015
    Par défaut
    Ah c'est étonnant ça...

    Essaie ça pour voir:
    Code php : 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
    <?php 
     
    $hote     = "sql.free.fr";  
    $user     = "monlogin";  
    $password = "monpassword"; 
    $db       = "maDB"; 
     
    $db = mysql_connect($hote, $user, $password); 
    mysql_select_db("bdd",$db); 
     
    function redir($url)
    { 
    echo '<script language="javascript">'; 
    echo 'window.location=\''.$url.'\';'; 
    echo '</script>'; 
    } 
     
    if ($codesecret == 1111) 
      {
     
       $export_oui  = $_POST['export']; 
     
       if ( $export_oui ) 
       {
       header('Content-type: application/vnd.ms-excel; charset=UTF-16LE');
       header('Content-Disposition: attachment; filename=export_contacts.xls');
     
       $sql = 'SELECT * FROM DemandeRDV';
       $res = mysql_query($sql) or die("BUG");
     
       $num_fields = mysql_num_fields($res); // Récupere le nb de champs de la table
       $num_rows = mysql_num_rows($res); // Récupere le nb d'enregistrement
       $tbl= ' <table border="1px"><tr>';
     
       for($i=0;$i<$num_fields;$i++){
       $tbl .= '<td>'.mysql_field_name($res, $i).'</td>'; // Affiche dans l'entête du tableau le nom de tous les champs renvoyer par la requete SQL
    	}
    	$tbl .= '</tr>';
    	while ($data = mysql_fetch_array($res))
    	{
    		$tbl .= "<tr>";
     
    		for($i=0;$i<$num_fields;$i++){
    			$tbl .= '<td align="center">'.$data[mysql_field_name($res, $i)].'</td>'; // Affiche le contenu de chaque ligne retourné par la requete SQL
    		}
    		$tbl .= '</tr>';
    	}
    	$tbl .= '</table>';
       	print $tbl ;
            redir('./index.php');
       }
         $reqmod = mysql_query('Delete from DemandeRDV');
         redir('./index.php');
      } 
    else
      {
         redir('./index_erreur.php');
      }
    mysql_close();
    ?>

    EDIT : Je viens de comprendre pourquoi, en fait, j'avais glissé une coquille dans ta méthode de redirection où j'avais écrit dans le mauvais ordre \' et ' sur la deuxième partie. AU lieu de '\', j'avais mis \''
    Ce qui ne pouvait que faire planter, théoriquement, t'as dû avoir une erreur javascript.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 139
    Points : 50
    Points
    50
    Par défaut
    J'avais corrigé la coquille

    Par contre, rien à faire ! Il veut pas me recharger la page actualisée !!!

  6. #6
    Membre chevronné
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Points : 2 015
    Points
    2 015
    Par défaut
    T'as pas d'erreur javascript? ou t'as essayé un debug php?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 139
    Points : 50
    Points
    50
    Par défaut
    Non, pas d'erreur JS.

    Est ce que je peux remplacer la function function redir($url) par un simple header ? (car j'ai récupéré cette source presque toute faite)

  8. #8
    Membre chevronné
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Points : 2 015
    Points
    2 015
    Par défaut
    Non, tu afficherais des trucs avant de l'appeler ce qui provoquait une erreur fatale.

    Quand tu demandes l'export, il fait tout correctement sauf la redirection elle-même?

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 139
    Points : 50
    Points
    50
    Par défaut
    Oui c'est exactement ça.

Discussions similaires

  1. Executer une application a partir d'un formulaire
    Par ibticeme dans le forum IHM
    Réponses: 36
    Dernier message: 26/10/2006, 23h16
  2. Réponses: 27
    Dernier message: 16/09/2005, 18h40
  3. Réponses: 2
    Dernier message: 15/06/2005, 18h32
  4. Réponses: 6
    Dernier message: 12/10/2004, 20h12
  5. [C#] New DataRow à partir d'un formulaire
    Par ScottLewis dans le forum ASP.NET
    Réponses: 10
    Dernier message: 03/05/2004, 16h14

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