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 :

Problème élaboration requête


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 26
    Par défaut Problème élaboration requête
    Bonjour,

    Voici mon code :

    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
     
    $query = "SELECT id,nom FROM $table ORDER by  nom";
    $result = mysql_query($query);
    $resultat= mysql_numrows($result);
     
    $a=1;
    $idnom=1;
     
    while($resultat<$a) {
    $query = "INSERT INTO $table (idnom)";
    $query .= "VALUES ('$idnom')";
    $result = mysql_query($query);
    $idnom++;
    $a++;
    }
    En fait le but est de lister la table client par ordre alphabétique et que la valeur 1 soit attribué à la colonne idnom pour le premier de la liste, ensuite 2, ensuite 3 etc (pour faire un classement alphabétique après)

    SVP ne me dite pas que je peux faire autrement j'ai besoin de cette méthode.

    Merci beaucoup à vous

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2002
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 194
    Par défaut
    et le code ne marche pas
    il me parait bizarre

    1)
    supposons que la requete renvoie 6 lignes
    alors
    $resultat=6
    $a=1
    et quand on arrive au while

    while($resultat<$a) devient while(6<1)
    donc on entre pas dans la boucle
    (si je ne fais pas d'erreur il est tot mon cerveau est encore engourdi par le froid)


    2)
    meme si ça passait ça n'irait pas
    mysql_query() permet d'executer la requete mais pas de récupérer les enregistrement 1 par 1 comme tu le voudrais
    il faut rajouter ensuite
    un mysql_fetch_assoc()
    (ou mysql_fetch_row ou... regarde dans une doc/un tuto pour savoir les différents moyen de récupérer ce que tu veux...)

    mysql_fetch_assoc te permet par exemple de récupérer le valeur d'un champ à partir de son nom


    3)
    utilise des noms de variables différents et significatifs, là ça gène pas trop mais à mon avis ça risque de te poser des problèmes un jour où l'autre


    4)
    insert pour mettre à jour je ne suis pas sur que ça marche
    (update ça veux dire mettre à jour en anglais)
    et il n'y a pas de condition pour savoir dans quel enregistrement mettre ton $idnom




    si tu as des problèmes essaye de faire un algorithme (et non du code) pour avoir la logique à suivre dans ton code...
    (en gros tu décris très précisément en langage naturel ce que tu veux faire : genre
    j'execute telle requete
    je récupère les enregistrement un par un
    dans chaque enregistrement je fais ça...)
    ensuite tu le testes à la main et une fois qu'il fonctionne c'est bon


    si tu as la logique on peut t'expliquer comment faire techniquement, si tu veux qu'on réfléchisse et qu'on te fasse tout à ta place ce ne sera pas moi.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 26
    Par défaut
    Merci beaucoup,
    En fait oé c'était évident ses erreurs.
    M'enfin j'ai pondut ça hier soir (fatigue toussa toussa...)

    Et j'avais posté ça sur un forum avant de partir du taff (et j'ai fais copié coller se matin me disant que je ne voyais pas l'erreur sans regarder encore une fois)

    Merci beaucoup (ça m'apprendra à pas me relire le lendemain)

    (et désolé pour t'avoir fait perdre ton temps)

    EDIT 1(D'ailleur INSERT INTO devrait marcher vu que les champs de la colonne idnom sont vide ^^)
    EDIT 2(et je ne veux pas récup les enregistrement 1 par 1, executer la requête me suffit ^^)
    EDIT 3 (ah si il faut récup les enregistrement j'avais regardé au mauvaise endroit oupsss)

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2002
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 194
    Par défaut
    Citation Envoyé par izbing
    (et désolé pour t'avoir fait perdre ton temps)

    EDIT 1(D'ailleur INSERT INTO devrait marcher vu que les champs de la colonne idnom sont vide ^^)
    à mon avis je ne perds pas mon temps car tu risques de revenir
    mais bon tu réfléchis donc je reviens

    oui au niveau logique c'est insérer dans un champ qui est vide...
    mais au niveau technique c'est différent je m'explique (et j'en dis plsu que je ne voulais :p)

    imaginons que tu ais un enregistrement avec idnom vide
    id | nom | idnom
    25| toto |

    et que tu veuille lui donner l'idnom 60
    il va falloir lui dire que tu veux ajouter 60 dans la case idnom qui correspond à l'enregistrement 25 | toto
    (sinon il ne va pas savoir ou l'ajouter)

    il faut donc récupérer les valeurs de cet enregistrement
    et lui dire de mettre 60 dans idnom pour l'enregistrement avec id=25 et nom=toto
    (si id est unique pour chaque enregistrement il suffit juste d'indiquer la valeur de id pour identifier clairement ton enregistrement)


    et un insert c'est pour un nouvel enregistrement et non un nouveau champ
    si tu fais insert tu risques d'essayer de créer un nouvel enregistrement avec idnom à 60 mais ça ne changera pas l'ancien
    vu que l'enregistrement existe déjà c'est update qu'il faut utilisé, même si le champ est vide

  5. #5
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 494
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 494
    Par défaut
    salut,
    esaye ca :

    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
    $sql= "SELECT * FROM ta_table group by ta_colonne order by ta_meme_colonne";
     
    		  $result=mysql_query($sql,$dbh);
    		  $num_rows=mysql_num_rows($result);
    		  $row = mysql_fetch_array($result);
     
    		  $compteur=1;
     
    		  echo '<TABLE>';
    		  echo '<TR>';
    		  echo '<TH>titre de la 1ère colonne</TH>';
    		  echo '<TH>titre de la 2ème colonne</TH>';
    // ect...
    		  echo '</TR>';
     
    		  while ( $num_rows >= $compteur)
    		  {
     
      echo '<TR bgcolor="'.$couleur.'">';
      echo '<TD align="center">'.$row["ta_colonne_1"].'</TD>';
      echo '<TD align="center">'.$row["ta_colenne_2"].'</TD>';
    // ect...
      echo '</TR>';
     
    $row = mysql_fetch_array($result);
      $compteur=$compteur+1;
     }
     echo '</TABLE>';
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 26
    Par défaut
    Oui oui j'ai parlé trop vite.

    (bon en fait si vous voulez tout savoir, j'arrête de fummer en se moment et je passe pas des super bonne nuit et depuis... bah j'fais pas grand chose de bon )

    Et je suis revenut pour mettre la solution à mon problème
    Enfin si ça intérresse quelqu'un on sait jamais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $query =  mysql_query("SELECT id,nom FROM $table ORDER  by  nom");
    $resultat = mysql_numrows($query);
     
    $idnom=1;
    while($result = mysql_fetch_array($query)) {
    $req = "UPDATE $table SET idnom='".$idnom."'  WHERE nom=\"".$result[nom]."\"";
    $result = mysql_query($req);
    $idnom++;
    echo $idnom;
    }

  7. #7
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 494
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 494
    Par défaut
    bon, je vais me calmer sur les post ... je comprends plus rien la...
    je vais mettre ca sur le compte de la fatigue....
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

Discussions similaires

  1. Réponses: 19
    Dernier message: 27/08/2003, 15h32
  2. problème de requête avec jointures
    Par tinhat dans le forum Requêtes
    Réponses: 7
    Dernier message: 11/08/2003, 10h33
  3. Problème de requètes concurentes
    Par Emmanuel.G dans le forum XMLRAD
    Réponses: 3
    Dernier message: 08/08/2003, 16h51
  4. Réponses: 2
    Dernier message: 16/07/2003, 14h40
  5. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 18h02

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