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 :

Problème de redirection


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 37
    Points : 26
    Points
    26
    Par défaut Problème de redirection
    Bonjour,
    j'essais d'envoyer des mails par paquets et j'ai un soucis de redirection
    Voila ce que je fais
    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
     
            define('NBMAILS',50);  // nombre de mail par paquets 
            $nombreTour = 0;   
            if( isset($_GET['debut']) ) 
                        { 
                            $debut=$_GET['debut']; 
                        } else  
                        { 
                            $debut=0; 
                        } 
     
    $Test='SELECT COUNT(*) FROM TClientBis WHERE News = 1 '; 
    $Rest=mysql_query($Test,$db); 
    $nombreEmail = mysql_numrows($Rest); 
     
    $Requete='SELECT NoID,User,Nom,Prenom,Email,Pass,News,Activite FROM TClientBis WHERE News = 1 LIMIT '.$debut.','.NBMAILS.' ';
    $Result=mysql_query($Requete,$db); 
    $NbreClients = mysql_numrows($Result); 
    for ($i=0;$i<$NbreClients;$i++) 
        {  
        // ici je taite les envois de mail  : mail($Email,$Subject,$Texte,$Headers); 
         $nombreTour++; // pour connaitre le nombre de mails envoyés j'ai initialisé à 1 avant la boucle et je l'incrémente 
            }   
         $Total = NBMAILS+$debut;  // j'ajoute  
     
    if($nombreEmail == $nombreTour) header('Location: index.php?g_pg=9&NbreEmail='.$nombreEmail .'&NbreTour='.$nombreTour.' '); 
     
        else header('Location: '.$_SERVER['PHP_SELF'].'?debut='.$Total.'');
    Ca fonctionne mais la redirection au final ne fonctionne pas : j'arrive à 500 et pas de redirection pour sortir de la page !
    Est ce que quelqu'un voit ou je merdois
    Merci de votre aide

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    As-tu contrôlé tes variables ?
    En regardant ton code est diagonale, je diras que tu ne tombes simplement pas pile sur 500 lignes dans ta base et donc que ta condition n'est jamais vérifiée.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 37
    Points : 26
    Points
    26
    Par défaut
    Comment verais tu la vérification ?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    avec un simple echo ou un var_dump
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 37
    Points : 26
    Points
    26
    Par défaut
    merci,
    mais un print ou echo, j'ai dépassé ce stade !

    Si j'ai posté ce post c'est que j'ai fais le tour du problème sans trouver de solution.

    A force de ligne de code on a + les idées bien claires.....d'où mon post

    Merci quand même

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Un echo dit tout pourtant.

    $nombreTour est le nombre de lignes traitées dans une page.
    $nombreEmail est le nombre de lignes à traiter.

    Ils ne peuvent être égaux que s'il n'y a qu'une seule fournée de mail.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $Test='SELECT COUNT(*) FROM TClientBis WHERE News = 1 '; 
    $Rest=mysql_query($Test,$db); 
    $nombreEmail = mysql_numrows($Rest);
    La fonction mysql_num_rows() (qui d'ailleurs comporte une erreur de syntaxe car c'est mysql_num_rows et non mysql_numrows) renvoi le nombre de lignes que retourne la requête.
    Or, la particularité de cette requête c'est que le COUNT(*) fera qu'il y aura uniquement 1 seule ligne de retournée, soit 0 soit 1 (jamais au-delà).
    C'est la valeur du COUNT(*) qui contient le nombre de mail, c'est plutôt celle-ci qu'il faudrait exploiter, non ?

    Comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $Test='SELECT COUNT(*) AS total FROM TClientBis WHERE News = 1 '; 
    $Rest=mysql_query($Test, $db);
    $clients = mysql_fetch_array($Rest);
    $nombreEmail = (int)$clients['total'];
    Citation Envoyé par Sabotage
    $nombreTour est le nombre de lignes traitées dans une page.
    $nombreEmail est le nombre de lignes à traiter.
    Effectivement, ça devrait être plutôt $debut + $nombreTour au niveau de la condition pour sortir à la fin, non ?

    D'ailleurs, j'aurais plus vu d'incrémenter $debut dans la boucle, ensuite, transmettre sa valeur pour le prochain paquet, tout simplement, non ?

    Quelque chose dans ce genre là :
    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
     
    $debut = (isset($_GET['debut']) && (int)$_GET['debut'] > 0) ? (int)$_GET['debut'] : 0;
     
    // Nombre total de mails à envoyer
    $Test = 'SELECT COUNT(*) AS total FROM TClientBis WHERE News = 1 '; 
    $Rest=mysql_query($Test, $db);
    $clients = mysql_fetch_array($Rest);
    $nombreEmail = (int)$clients['total'];
     
    // Requête par paquet (50)
    $sql = 'SELECT ... blablabla ... LIMIT '.(int)$debut.', 50';
    ... etc ...
    while ($mails = mysql_fetch_array($rs)) {
        // Envoi des mail
     
        // Incrémentation
        $debut++;
    }
     
    // Redirections
    if ($nombreEmail == $debut) {
        // Tous les mails envoyés : On sort définitivement
    }
    else {
        // Envoie du paquet suivant
    }
    Enfin, c'est une idée, par sût que ça soit correcte.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

Discussions similaires

  1. Réponses: 4
    Dernier message: 25/04/2006, 16h16
  2. Problème de Redirection
    Par pirouette_07 dans le forum Apache
    Réponses: 1
    Dernier message: 30/03/2006, 13h50
  3. [Cookies] Problèmes de redirection
    Par mogway95 dans le forum Langage
    Réponses: 6
    Dernier message: 19/02/2006, 00h13
  4. Problème de redirection d'index
    Par Bluelane dans le forum Apache
    Réponses: 8
    Dernier message: 16/09/2005, 17h50
  5. Problème de redirection avec window.location
    Par Kosti dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 30/11/2004, 18h31

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