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 en boucle for après mysql_fetch_array


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2007
    Messages : 27
    Par défaut lecture en boucle for après mysql_fetch_array
    Bonjour,

    J'ai un soucis avec mon code PHP. Je charge les résultats d'une requête mysql dans une variable, et ensuite, j'arrive à lire la 1ère ligne seulement. Pour la deuxieme, j'ai l'erreur "Notice: Undefined offset: 1":

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    							<p><center><b>Tournois prévus</b></center></p>
    							<br>
    							<center><TABLE BORDER="1" class="blanc">
    								<TR>
    									<TH width="200"> Date </TH>
    									<TH width="100"> Heure </TH>
    									<TH width="50"> Mise </TH>
    								</TR>
     
    								<?php
    									// Connexion à la BDD
    									mysql_connect("localhost", "root", "");
    									mysql_select_db("ltad");
     
    									// Récupération de l'auteur
    									$sql="SELECT count(id_tournoi) from tournoi where date_tournoi > NOW()";
    									$res = mysql_query($sql);
    									$resultat = mysql_fetch_array($res);
    									$nbtournoisprevus = $resultat[0];
    									$nbtournoisprevus = intval($nbtournoisprevus);
     
    									if ($nbtournoisprevus > 0)
    									{
     
    										// Récupération de la date du tournoi
    										$sql="SELECT date_tournoi from tournoi where date_tournoi >= NOW()";
    										$res = mysql_query($sql);
    										$datestournois = mysql_fetch_array($res);
     
    										// Récupération de l'heure du tournoi
    										$sql="SELECT heure_tournoi from tournoi where date_tournoi >= NOW()";
    										$res = mysql_query($sql);
    										$heurestournois = mysql_fetch_array($res);
     
    										// Récupération de la mise du tournoi
    										$sql="SELECT mise from tournoi where date_tournoi >= NOW()";
    										$res = mysql_query($sql);
    										$misestournois = mysql_fetch_array($res);
     
    										for($i = 0; $i < $nbtournoisprevus; $i++)
    										{
    											$heuretournoi = $heurestournois[$i];
    											$datetournoi = $datestournois[$i];
    											$misetournoi = $misestournois[$i];
     
    											?>
    											<TR>
    												<TD align = "left"> <?php echo "$datetournoi"?> </TD>
    												<TD align = "left"> <?php echo "$heuretournoi"?> </TD>
    												<TD align = "left"> <?php echo "$misetournoi"?> </TD>
    											</TR>
    										<?php
    										}
    									}
    								?>
    							</TABLE></center>
     
    							<!-- Déconnextion de la BDD -->
    							<?php mysql_close(); ?>
    quelqu'un saurait pourquoi?

    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 97
    Par défaut
    "Notice: Undefined offset: 1":
    Cela veut dire que tu essaies d'acceder a un element du tableau qui n'existe pas.

    En fait c'est tout a fait logique, mysql_fetch_array($res) ne te retournes pas un tableau avec toute la table ! Cela te retourne 1 ligne dans un tableau !

    donc equivaut a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $datestournois['date_tournoi']
    Si tu avais selectionne une deuxiemme colonne alors $datetournois[1] n'aurait pas fait d'erreure.

    Mais si j'ai bien compris ce n'est pas ce que tu voulais faire ? n'est-ce pas ?

    Tu dois re-utiliser mysql_fetch_array($res) a chaque fois dans la boucle afin d'obtenir la ligne suivante. ET alors ton code aura une chance de fonctionner....

    Tu aurais quand meme pu facilement deboguer un peu ton code. Un simple print_r et tu aurais ete fixe .... ;-)

  3. #3
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2007
    Messages : 27
    Par défaut
    merci... mais on peut pas fetcher plusieurs lignes d'un coup dans un tableau??

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 97
    Par défaut
    A priori non. Mais tu peux faire une fonction qui le fait pour toi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function mysql_fetch_all($result) 
    {
      $all = array();
      while ($all[] = mysql_fetch_assoc($result)) {}
     
      return $all;
    }
    Neanmoins c'est pas une bonne idee de travailler de cette facon, ca risque d'alourdir
    tes scripts et aussi de ralentir tes traitements. L'idee avec une BD c'est de faire le plus
    de code possible dans la BD... Une requete SQL de 3 lignes peut faire l'equivalent de 100 lignes php (tri, ruptures ...).

    Donc recuperer tout une table dans un tableau pour ensuite le trier, etc etc n'est pas une bonne idee. Mais bon je ne pense pas que c'est cela que tu fasses. Mais ce genre de fonction t'ammenerait vite a faire ca. En outre, les BD sont en general optimisee pour ce genre de traitement et le font propablement plus rapidement et mieux que nous.

  5. #5
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2007
    Messages : 27
    Par défaut
    ok merci je vais essayer

    mais en effet tout ce que je veux c'est afficher les résultats de ma requête ^^

    étrange le php quand même...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Par défaut
    J'ai un peu la meme question que Smile...
    J'interroge 2 tables produits par un select distinct afin de construire un select php, et je voulais savoir si il y avait moyen de recuperer l'ensemble des valeurs de chaque requete sous forme de tableau (sans passer par le traditionnel while ($rowproduit=mysql_fetch_array($resultproduit))... )?

    le but etant de merger les 2 tableaux pour construire le select...

    mais j'ai beau essayé, je ne vois pas comment construire la requete pour recuperer tous mes noms de produits dissiminés sur les 2 tables....

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 97
    Par défaut
    Salut VooDooNet,

    Peut-etre pourais-tu creer un autre sujet etant donne que c'est une autre question en mentionnant les noms et structures exact de ces 2 tables + eventuellement quelques examples de leur contenus.

    Si je comprends bien tu as 2 tables produits et pour l'instant tu fais 2 query et mets le tout dans un select. En passant eventuellement par l'etape tableau dans php ou tu effectuerais un tri.

    Dans tout les cas ce n'est pas une facon tres efficace de proceder. Normalement tu devrais pouvoir t'en sortir en une seul requete, qui triera pour toi tout tes produits. Pour faire une requete sur 2 tables en 1 seul fois tu dois utiliser des JOINTURES. Mais cela presupose qu'il y a des liens referentiels entre tes 2 tables produits. Sinon tu peux utiliser une UNION http://sql.1keydata.com/fr/sql-union.php

    Si tu ne t'en sort pas, cree un nouveau sujet et mets toutes les informations necessaires + les essais que tu as fait.

    Bien a toi ;-)

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Par défaut
    Merci DD!
    je pensais pouvoir posté ici vu que les réponses etait un peu similaire.
    J'ai essayé avec le JOIN et effectivement en rajoutant le select AS et le ORDER BY au bon endroit, c nickel!!

    Par contre j'avais des select DISTINCT au depart et je les ai laissé... La doc dit que le resultat et le mm, et ne dit pas si une methode et mieux que l'autre....

    Merci à toi pour la lecture!
    A+
    VooDoo

    si ca peut aider quelqu'un j'ai meme utilisé ca, car dans ma 2ieme table mon nom de produit est le nom complet + l'emballage...:
    select distinct product from productlist UNION select distinct SUBSTR(Mat_desc, 1,24) as product from mat_list order by product ASC

    ceci tronque le nom a 24 caractere
    je deviens un ouf du sql !

Discussions similaires

  1. Boucle for - afficher élément un après l'autre
    Par SkyBlast dans le forum Android
    Réponses: 2
    Dernier message: 18/07/2011, 16h55
  2. Réponses: 4
    Dernier message: 25/05/2011, 15h38
  3. [XL-2003] VBA problème avec la une boucle for range.end(xlup).row après suppression de lignes
    Par JohnNC115 dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 25/01/2011, 10h21
  4. Variable après un ComboBox dans une boucle FOR
    Par Dream Master dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/05/2007, 09h26
  5. problème dans boucle for de lecture de fichier ini
    Par chourmo dans le forum Delphi
    Réponses: 3
    Dernier message: 06/07/2006, 09h31

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