Redirection Header en rapport avec SQL

Résolu
Stelino -  
 Stelino -
Bonjour,

Sur le script d'une page, je souhaite que lors de la récupération des données de la table [rang] de ma banque MySQL, une redirection soit produite vers une autre page.

exemple:

Si [rang] *//contient une donnée existante dans la table rang
Alors (redirection vers nouvelle page)

Sinon (faire apparaître une image sur la page actuelle)

Voici mon code:

<?php
     $req = mysql_query('select id, username, avatar, email, rang from users');
         while($dnn = mysql_fetch_array($req))
{
?>


<?php
     if($dnn['rang']!='')
{
    header('Location: ./nouvelle_page.php');
   exit();
}
     else
{
     echo '<img src="http://leadinvest.fr/images/Discuter.PNG" style="max-width: 500px;max-height: 500px;margin-bottom:7px;margin-left: 430px;" />';
}
?>


<?php
}
?>


mon problème est qu'aucunes redirection est produite malgré ce code, d'ou viens ce problème?

Merci

2 réponses

KikiAmboara Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
 
Est-ce que l'image apparait?
0
Stelino
 
Oui, elle apparaît' j'ai l'impression que c'est dans le header que sa foire.
0
KikiAmboara Messages postés 21 Date d'inscription   Statut Membre Dernière intervention   > Stelino
 
Essaie alors ce code

<?php
    $req = mysql_query('select id, username, avatar, email, rang from users');
    while($dnn = mysql_fetch_array($req))
    {
        if($dnn['rang']!=null) // au lieu de if($dnn['rang']!='')
        {
            header('Location: /nouvelle_page.php');
            exit();
        }
        else
        {
            echo '<img src="http://leadinvest.fr/images/Discuter.PNG" style="max-width: 500px;max-height: 500px;margin-bottom:7px;margin-left: 430px;" />';
        }
    }
0
Stelino
 
Merci pour ta correction mais le problème persiste, je suis rediriger sur une nouvelle page alors que la valeur de la table [rang] est nulle.

Bizarrement sur une de mes autres pages, j'arrive à faire en sorte que lorsqu'une table est utiliser ou nulle, le code que je présentais au début fait bien la différence et agit de le sorte:

si rang
alors image1
sinon image 2

j'ai la net impression que la fonction header prend le dessu sur le reste.
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Quels sont les valeurs possibles de $dnn['rang'] ?
<?php
    $req = mysql_query('select id, username, avatar, email, rang from users');
    while($dnn = mysql_fetch_array($req))
    {
        var_dump($dnn['rang']);
    }


Est-ce normal que ta requête porte sur tous les utilisateurs ? Ne devrait-il pas y avoir un paramètre pour ne récupérer les infos d'un seul utilisateurs ?
Actuellement il suffit que le rang d'un seul utilisateur soit null pour effectuer la redirection, peu importe le rang des autres utilisateurs.
0
Stelino
 
bonne question, car en utilisant plusieurs méthodes afin de régler le problème, il se trouve que c'est ce à quoi je commence à pensé.

les changement d'image qui se produise par rapport au fait que [rang] soit null ou non s'affiches à tous les utilisateurs.
c'est pourquoi la fonction header n'agit pas indépendamment pour chaque utilisateurs et les renvois tous vers la nouvelle page.

Ya t'il un moyen de porter sur 1 seul utilisateur?
que faut'il faire?
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Salut,

L'appel de la fonction header() pour modifier les entêtes http (tel qu'une redirection) doit être fait avant que le moindre contenu ne soit envoyé au client (affichage html, echo, ligne blanche...)
https://www.php.net/manual/fr/function.header.php

L'ouverture et la fermeture des balises PHP avec les 3 lignes vides, en plus d'être inutiles, sont peut être la cause de non fonctionnement de la redirection (Erreur php headers already sent).

A corriger :
<?php
    $req = mysql_query('select id, username, avatar, email, rang from users');
    while($dnn = mysql_fetch_array($req))
    {
        if($dnn['rang']!='')
        {
            header('Location: /nouvelle_page.php');
            exit();
        }
        else
        {
            echo '<img src="http://leadinvest.fr/images/Discuter.PNG" style="max-width: 500px;max-height: 500px;margin-bottom:7px;margin-left: 430px;" />';
        }
    }


PS : pour la redirection, préfère plutôt le chemin absolu depuis la racine de ton site (commençant par un /).

Bonne journée
0
Stelino
 
Merci pour ta correction et le temps que tu m'as accorder.

La redirection est bien produite mais ne prend pas en compte la présence d'une donnée entrée dans la table [rang]

je voulais que :

Si une donnée est entrée dans la table [rang]
Alors redirection
Sinon faire apparaître image
0