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 :

lecture de tableau array


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 36
    Points : 16
    Points
    16
    Par défaut lecture de tableau array
    Bonsoir,

    Je suis en train de bloquer sur un tableau array:

    Je travail avec php & mysql, pour générer un graphique
    J'ai une table:

    users
    id_user
    nom
    prenom
    cnx_comp //nombre de connection
    log_date //type datetime
    logout_date //type datetime

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    //les tableaux
    $resultat1 = array();
    $resultat2 = array();
    $resultat3 = array();
    
    //je fais quelques conditions pour modifier les dates et le tout dans une 
    //boucle for() pour récupérer les données pour un mois entier.
    
    for(blabla)
    {
    $req= mysql_query("
    SELECT COUNT(*)
    FROM users
    WHERE cnx_comp=1
    AND log_date BETWEEN $date1 AND $date2
    ");
    $rez= mysql_fetch_array($req);
    $resultat1[]= $rez[0];
    
    $req2= mysql_query("
    SELECT COUNT(*)
    FROM users
    WHERE cnx_comp=2
    AND log_date BETWEEN $date1 AND $date2
    ");
    $rez2= mysql_fetch_array($req2);
    $resultat2[]= $rez2[0];
    
    $req= mysql_query("
    SELECT COUNT(*)
    FROM users
    WHERE cnx_comp=3
    AND log_date BETWEEN $date1 AND $date2
    ");
    $rez3= mysql_fetch_array($req3);
    $resultat3[]= $rez3[0];
    }
    je transmet ensuite les infos via l'url de l'image(img.php?resultat=$resultat&Etc...)

    mais rien ne s'affiche. Quand je fais un echo $rez[0]; le resultat s'affiche bien sur la page.

    Si je transmet les infos avec des tableau du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $resultat1= array(1, 12, 3, 6, 4, 7, 9, 12);
    $resultat2= array(5, 2, 3, 16, 4, 8, 4, 12);
    $resultat3= array(11, 2, 13, 6, 4, 18, 5, 12);
    le graphique s'affiche bien.

    pouvez-vous me dire ce qui cloche?

    Merci

  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
    Bonsoir,

    Tu ne peux pas passer un tableau comme ca dans l'url.
    Tu pourrais utiliser la fonction serialize() mais la meilleure methode serait d'executer ta requete dans img.php auquel tu passerais simplement les données variables.
    Tu eviterais ainsi le passage de données d'une page a une autre.


    Pour tes requetes, tu pourrais recuperer tout d'un coup :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $req= mysql_query("
    SELECT COUNT(*)
    FROM users
    WHERE log_date BETWEEN $date1 AND $date2 
    GROUP BY cnx_comp
    ");
    Je te deconseille en tout cas de faire des requetes dans des boucles, tu multiplies le temps de lecture de la base.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 36
    Points : 16
    Points
    16
    Par défaut
    Bonjour,

    J'utilise déjà la fonction serialize() pour l'image, et je ne veux pas utiliser img.php pour faire les requete parce que je vais l'utiliser pour d'autres requetes..

    sinon, quand tu dis tu pourrais tout récupérer d'un coup, je ne comprend pas comment avec cette requete insérer le resultat dans un tableau??

    Merci

  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
    je ne comprend pas comment avec cette requete insérer le resultat dans un tableau?
    Tu parcours le resultat de la requete et tu construis ton tableau.

    je ne veux pas utiliser img.php pour faire les requete parce que je vais l'utiliser pour d'autres requetes
    Tu peux passer un parametre indiquant quelle image tu veux.
    sinon il y a les sessions.
    sinon c'est serialize.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 36
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Tu parcours le resultat de la requete et tu construis ton tableau.
    J'ai suivi tes conseils:
    pour la requete, en effet, quand je regarde dans phpmyadmin, les resultats affiché sont les bons.

    J'ai donc mis dans une boucle ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $req= mysql_query("
    SELECT COUNT(*)
    FROM users
    WHERE log_date BETWEEN $date1 AND $date2 
    GROUP BY cnx_comp
    ");
    $rez = mysql_fetch_array($req);
    $values1[] = $rez[1];
    $values2[] = $rez[2];
    $values3[] = $rez[3];
    lorsque je rajoute
    echo $rez[1];
    echo $rez[2];
    echo $rez[3];
    je n'ai pas de resultat, mais quand je rajoute
    echo $rez[0];
    il m'affiche bien le resultat de la premiere ligne..

    J'ai loupé quelque chose?

  6. #6
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Ici tu ne fais pas de boucle

    Sabotage voulait surement dire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $req= mysql_query("
    SELECT COUNT(*) as T
    FROM users
    WHERE log_date BETWEEN $date1 AND $date2 
    GROUP BY cnx_comp
    ");
    while($rez = mysql_fetch_array($req)){
    $values1[] = $rez['T'];
    echo $rez['T'].'<br/>';
    }

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 36
    Points : 16
    Points
    16
    Par défaut
    le truc, c'est que je veux ajouter les données dans 3 tableaux qui ne prennent qu'une ligne par resultat, or dans le code que tu me proposes, il met toutes les lignes dans le même tableau($values1).

    je met la requete dans une boucle parce que les dates changent, donc je ne sais pas faire autrement... une idée?

  8. #8
    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
    c'est que je veux ajouter les données dans 3 tableaux qui ne prennent qu'une ligne par resultat,
    Quelle est la raison de cela ?
    Multiplier le nombre de variable ce n'est pas se simplifier la vie.

    exemple :
    je veux construire un graphique avec x lignes de données.
    J'utilise le code d'obito et j'obtiens donc ma premiere serie dans $values[0], ma deuxieme dans $values[1] etc.
    Cette facon de procéder est flexible : elle fonctionne que je veuille recuperer 1 ou 50 séries ; je n'ai pas besoin de m'en préoccuper.
    Meme chose a l'arrivée, je construis mon graphique en parcourant $values, je n'ai pas besoin de savoir combien de série il contient ni quel nom elles ont : j'attend juste une variable $values qui contient mes séries.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 36
    Points : 16
    Points
    16
    Par défaut
    Alors,

    j'utilise un graphique que je n'ai pas fait, je me contente d'envoyer les données via cette url:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src='graph.php?values1=".urlencode(serialize($values1))."&values2=".urlencode(serialize($values2))...etc..
    donc, ce que j'essai de faire, c'est de remplir des tableaux de ce genre la:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $values1 = array(1, 2, 3, 5, 2, 35, 6, 14, 1, 68, 12, 3, 15 ,14, 8);
    $values2 = array(5, 2, 5, 6, 9, 2, 12, 1, 2, 3, 5, 2, 5, 6, 4);
    $values3 = array(9, 2, 12, 1, 42, 5, 16, 4, 11, 55, 19, 23, 25 ,114, 160);
    Vous pensez que je devrait tout mettre dans un seul tableau? il va falloir que je touche au code du graphique dans ce cas, et j'aimerais éviter de faire cela.

  10. #10
    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
    Si tu reprends ce que j'ai écris, il te vient naturellement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src='graph.php?values1=".urlencode(serialize($values[0]))."&values2=".urlencode(serialize($values[1]))...etc..

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 36
    Points : 16
    Points
    16
    Par défaut
    j'ai suivi vos conseils, mais l'image ne s'affiche toujours pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $req= mysql_query("
    SELECT COUNT(*) as T
    FROM users
    WHERE log_date BETWEEN $date1 AND $date2 
    GROUP BY cnx_comp
    ");
    while($rez = mysql_fetch_array($req)){
    $values[] = $rez['T'];
    }
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src='graph.php?values1=".urlencode(serialize($values[0]))."&values2=".urlencode(serialize($values[1]))...etc..

  12. #12
    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
    j'ai suivi vos conseils, mais l'image ne s'affiche toujours pas
    Ca c'etait sure , on a juste ré-ecris ton code de manière plus sympathique mais le fond de ton probleme n'a pas changé.

    Il faudrait que ton controle a l'arrivée que tu recuperes bien ton tableau.

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 36
    Points : 16
    Points
    16
    Par défaut
    Voici le code a l'arrivé:
    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
       // On vérifie que les données à afficher sur le graphique existent
       if(isset($_GET['values1']) === FALSE) {
          exit;
       }
          if(isset($_GET['values2']) === FALSE) {
          exit;
       }
          if(isset($_GET['values3']) === FALSE) {
          exit;
       }
       // On récupère les valeurs à afficher sur le graphique dans $_GET['values'] et on les désérialize
     
       $data = @unserialize($_GET['values1']);
       $data2 = @unserialize($_GET['values2']);
       $data3 = @unserialize($_GET['values3']);   
     
       // On vérifie que les données passées en GET sont correctes
       if(is_array($data) === FALSE) {
          exit;
       }
       if(is_array($data2) === FALSE) {
          exit;
       }
          if(is_array($data3) === FALSE) {
          exit;
       }
    quelque chose vous choque? j'ai l'impression que tout va bien ici

  14. #14
    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
    fait des print_r() pour valider la bonne recomposition de tes tableaux.

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 36
    Points : 16
    Points
    16
    Par défaut
    j'ai mis les print_r() juste apres les:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        $data = @unserialize($_GET['values1']);
       $data2 = @unserialize($_GET['values2']);
       $data3 = @unserialize($_GET['values3']);
    mais ça ne change rien

  16. #16
    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
    print_r() ca affiche des choses, ca ne corrige pas les problèmes

    appelle directement l'adresse de l'image avec les parametres pour pouvoir voir ce qui s'y passe.

Discussions similaires

  1. Réponses: 10
    Dernier message: 26/04/2016, 01h52
  2. erreur de lecture de tableau incompréhensible
    Par Anouschka dans le forum C++
    Réponses: 2
    Dernier message: 27/01/2006, 14h40
  3. C++ et lecture de tableau
    Par ero-sennin dans le forum C++
    Réponses: 17
    Dernier message: 01/11/2005, 00h42
  4. Tableau(Array) sans taill
    Par krfa1 dans le forum ASP
    Réponses: 4
    Dernier message: 21/09/2005, 23h31
  5. tableau array
    Par laclac dans le forum Langage
    Réponses: 8
    Dernier message: 01/09/2005, 12h04

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