Redirection Header en rapport avec SQL

Résolu/Fermé
Stelino - 4 oct. 2015 à 23:49
 Stelino - 7 oct. 2015 à 15:20
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

A voir également:

2 réponses

KikiAmboara Messages postés 21 Date d'inscription jeudi 24 septembre 2015 Statut Membre Dernière intervention 27 janvier 2016
5 oct. 2015 à 09:45
Est-ce que l'image apparait?
0
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 jeudi 24 septembre 2015 Statut Membre Dernière intervention 27 janvier 2016 > Stelino
6 oct. 2015 à 06:45
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
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 lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
6 oct. 2015 à 11:01
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
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 lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
Modifié par Pitet le 5/10/2015 à 11:35
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
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