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

PHP & Base de données Discussion :

boucle FOR - synthaxe correcte ? [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de gantec
    Inscrit en
    Février 2007
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 225
    Par défaut boucle FOR - synthaxe correcte ?
    Bonjour,

    je souhaiterai utiliser une boucle FOR. Mais j'ai plusieurs problèmes :
    Je dois compter le nombre d'enregistrements d'une table (j'utilise COUNT en SQL)

    1) il y a un 1 qui s'affiche alors que j'ai 4 enregistrements qui correspondent à mon COUNT

    2) le mysql_result de ma requete ne semble pas fonctionner non plus

    je suis un peu perdu...si quelqu'un pouvait m'éclairer ca serait cool

    voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $sql_test = "SELECT COUNT(idSyn) FROM oc_syn_prof WHERE idProfession=1987";
    $sql_query = mysql_query($sql_test);
    $sql_result = mysql_num_rows($sql_query);
    echo $sql_result;
    une fois que je pourrais compter les enregistrements, j'utiliserai ce nombre pour arrêter ma boucle FOR...enfin ca fonctionne comme ca, si j'ai bien compris...

    mais pour le code de la boucle FOR, aucune idée (synthaxe type):

    for ($z =0;$z = < $le_nombre_recherche; $z++ ){

    echo "<input type='text' value ='".$mes_informations."';";

    }

    je ne sais pas si c'est clair ??mais merci d'avance...

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Transports

    Informations forums :
    Inscription : Février 2006
    Messages : 102
    Par défaut
    Bonjour,

    Il est normal que votre requête retourne 1 car il n'existe dans la base de données qu'un seul identifiant correspondant à celui recherché dans votre where

    Ainsi ce n'est pas sur l'identifiant qu'il faut faire le count.

    Un count(*) vous retournera le bon nombre : il va compter le nombre d'enregistrements retournés.

    En php une fonction existe pour compter le nombre d'enregistrements :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_num_row(mysql_query("SELECT * FROM MA_TABLE;"));
    En ce qui concerne ta boucle for je n'ai pas compris ce que vous souhaitiez faire.

    Voici néanmoins la syntaxe pour l'utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for($i = 0; $i <= $nb_de_tours_a_realiser; $i++){
           MonTraitement();
    }

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2002
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 9
    Par défaut
    Salut,

    Hum, pas trop d'accord avec MightyDucks au sujet du count. En fait, que l'on fasse count(*) ou count(un_champ) cela retournera une table d'une colonne et une ligne, retournant un nombre, ce nombre représentant le nombre de lignes renvoyées par la requête. Le mysql_num_rows retournant le nombre de lignes renvoyées par la requête, cela sera toujours égal à 1.

    Ainsi, pour conserver le count et faire une boucle for derrière, j'aurais plutôt procéder ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $sql_test = "SELECT COUNT(idSyn) as nb_enregistrements FROM oc_syn_prof WHERE idProfession=1987";
    $sql_query = mysql_query($sql_test);
    $sql_result = mysql_fetch_array($sql_query);
    echo $sql_result['nb_enregistrements'];
    La boucle for pouvant se faire ensuite sur $sql_result['nb_enregistrements'] qui représentera bien le nombre de lignes retournées.

    Mais il y a peut être une solution plus adaptée et optimisée.

  4. #4
    Membre confirmé Avatar de gantec
    Inscrit en
    Février 2007
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 225
    Par défaut
    yes didjezik, ca fonctionne nickel. il me retourne le nombre juste. donc il fallait juste renomer le nom de la colonne ??

    Merci à toi aussi mightyducks

  5. #5
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    L'utilisation d'un while ne serait-elle pas plus judicieuse ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql = mysql_query("SELECT * FROM oc_syn_prof WHERE idProfession=1987");
    while($res = mysql_fetch_array($sql))
        {
        echo $res['champ'];
        }
    En français :
    Tant que ma requete renvoie des enregistrements, je boucle.

    Cela ne t'empeche pas de connaitre le nombre d'enregistrements si tu en as besoin quelque part.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nb_enregistrements = mysql_num_rows($sql);

  6. #6
    Nouveau membre du Club
    Inscrit en
    Octobre 2002
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 9
    Par défaut
    De rien !

    La solution de Thomas me parait en effet meilleure encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Boucle for pour afficher le tableau correctement
    Par hamzawhy dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 30/03/2015, 16h37
  2. correction d'une boucle for
    Par dowdow44 dans le forum Excel
    Réponses: 2
    Dernier message: 18/04/2012, 14h16
  3. boucle FOR: quelle synthaxe correcte utiliser?
    Par fhano dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/08/2008, 21h08
  4. [Swing][boucles] for, do, if .....comment faire simple?
    Par chastel dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 02/05/2004, 22h49
  5. [langage] boucle "for" modification du pas
    Par K-ZimiR dans le forum Langage
    Réponses: 4
    Dernier message: 29/04/2004, 11h54

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