problème avec mysql_fetch_array

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : problème avec mysql_fetch_array

par Invité » 21 févr. 2007, 11:19

alors j'ai vérifié encore une fois et j'ai trouvé un problème: la requette ne me renvoie pas la date du jour sélectionné mais la date du jour meme (seulement hier il y avait un évennement dans la base :oops: )
pour le print (merci pour le lien Ultim4T0m :wink: ) il ne renvoie rien (mais c'est surement normal puisque aujourd'hui il n'y a pas d'évennement de prévu). Je vais bosser un peu tout ca, merci pour votre aide
a bientot

par Ultim4T0m » 21 févr. 2007, 10:28

Pour print_r(), petit tour vers la doc ;)

http://us3.php.net/manual/fr/function.print-r.php

(tu peux également y accéder en cliquant sur la fonction directement)

par nina_bee » 21 févr. 2007, 09:52

bonjour,
alors j'ai vérifié ma table et les noms sont corrects.
la requette $req fonctionne (elle me renvoie la date du jour sélectionné).
ensuite $result renvoie ressource id#5
c'est après que ca se gate :( :$ligne ne renvoie rien du tout!!!!
j'ai testé tout ca avec des "echo"
je vais revérifier la requette comme tu me l'a dit (mais si l'erreur etait la il y aurait un message d'erreur et de ce coté la rien à signaler non plus :? ).
je vais aussi essayer de voir ce qui se passe quand je lance ma requette par myadmin.
Par contre je ne sais pas à quoi correspond print_r()? normalement quesqu'il doit me renvoyer?
merci pour ton aide en tout cas
a bientot

par Ryle » 21 févr. 2007, 09:17

Il faut procéder par étape pour essayer de trouver à partir d'où cela ne fonctionne pas :
Est ce la requête SQL qui est incorrecte ? => Affiche le code SQL contenu dans $req, vérifie que les valeur des $today_* sont bonnes.

Est ce la requête SQL qui est invalide ou la base qui est innaccessible ? => Ajoute un or die(mysql_error()) après le mysql_query()

Est-ce le contenu de la base ? => Joue la requête dans mysql et vérifie qu'elle te donne bien le résultat attendu...

Est-ce un problème de récupération des données dans php ? => Fait un print_r() de $ligne pour voir comment il a été initialisé, si les noms des champs correspondent aux index que utilises (c'est pour cela aussi qu'il vaut mieux lister explicitement les champ récupérés dans le select plutôt que de faire un "select * ")
echo '<pre>';
print_r($ligne);
echo '</pre>';

problème avec mysql_fetch_array

par nina_bee » 21 févr. 2007, 00:51

bonsoir,
je développe actuelement un site internet comportant un agenda en php. Son fnctionnement est simple: quand l'internaute clique sur une date , il est automatiquement redirrigé vers une page contenant les infos de l'évennement. Les infos sont chargées en fonction de l'id de l'évennement. Théoriquement je devrais récuperer les infos grace à $ligne=mysql_fetch_array mais aucunne donnée ne saffiche. Je ne comprend pas ou est l'erreur d'autant que j'ai déja utilisé cette fonction plusieurs fois sans problème :cry:
voici le code:
module de l'agenda:
<?php
/*******************AGENDA************************/

//include_once ("fonctions.inc.php");
  
  // Création d'un tableau contenant les 12 mois de l'année.
    $mois = array(
        "1"=>"Janvier",
        "2"=>"Février",
        "3"=>"Mars",
        "4"=>"Avril",
        "5"=>"Mai",
        "6"=>"Juin",
        "7"=>"Juillet",
        "8"=>"Août",
        "9"=>"Septembre",
        "10"=>"Octobre",
        "11"=>"Novembre",
        "12"=>"Décembre");

    $today_day = date("j"); // Jour du mois sans les zéros initiaux (1 - 31)
    $today_mont = date("n"); // Mois sans les zéros initiaux (1 - 12)
    $today_year = date("Y"); // Année sur 4 chiffres (Exemples : 1999 et 2003)
   
    // On envoie une requête au serveur pour avoir les évènement du mois.
    $query = mysql_query('SELECT * FROM agenda WHERE mois='.$today_mont.' AND annee='.$today_year);
        // on crée un boucle qui passe chaque résultat obtenu un a un...
        while ($champs = mysql_fetch_array ($query)) {
            // On crée un tableau qui contient le jour de l'évènement comme nom et son ID comme valeur...
            $evenement[$champs['jour']] = $champs['id'];
        }

    // mktime renvoie le nombre de seconde depuis le 1er Janvier 1970
    // mktime(heure, minute, second, mois, jour, année));
    $mo = mktime(0, 0, 0, $today_mont, 01, $today_year);
    // w : Jour de la semaine au format numérique (0 (pour dimanche) à 6 (pour samedi))
    $first = date("w","$mo");
   // t : Nombre de jours dans le mois (28 - 31)
    $last = date("t","$mo");
    // On donne la valeur 0 a la variable j qui nous servira plus tard.
    $j = 0;

?>
page de réception de l'évennement (l'agenda est aussi présent sur cette page):
<?php
require_once ('connection.inc.php');
include_once('module_agenda.inc.php');
$req="SELECT * FROM agenda WHERE jour = '$today_day' AND mois ='$today_mont' AND annee = '$today_year'";
$result = mysql_query($req);
//echo "<br>".$result;//renvoie ressource id#5
$ligne = mysql_fetch_array($result);//pb avec le tableau
//echo "<br> nom= ".$ligne['nom'];
?>


<body>

<div id="conteneur">
	<div id="head"><?php include ("header.inc.php"); ?></div>
	<div id="center">
		<div id="gauche">
			<div id="nav">
				<div class="margehaut"></div>
				<div id="nav">
						   <?php echo '
        <table id="agenda">
            <!--- Rangé pour écrire le nom du mois et l\'année. --->
            <tr><td colspan="7" class="line">' . $mois[$today_mont] . ' (' . $today_year . ')</td></tr>
            <!--- Rangé pour les jours de la semaine... --->
            <tr class="line">
                <td class="case" align="center">D</td>
                <td class="case" align="center">L</td>
                <td class="case" align="center">M</td>
                <td class="case" align="center">M</td>
                <td class="case" align="center">J</td>
                <td class="case" align="center">V</td>
                <td class="case" align="center">S</td>
            </tr>
    ';

        // Création d'une boucle qui se répète pour les 6 rangée des semaines...
        for ($s=1; $s<=6; $s++) {
            // Cration d'une rangée...
            echo '<tr class="line">';
            // Pour chaque rangée, on créé 7 cellules (0 - 6)
                for ($x=0; $x<=6; $x++) {
                    // Numéro de la cellule (0 - 42)
                    $day = (($s-1)*7)+($x);
                        // Si $j existe ou n'est pas null ($j > 0) on lui ajoute 1.
                        if (!empty($j)) {$j = $j + 1;}
                        // Si le numéro de la cellule est égale au premier jour du mois...
                        // On assigne 1 à la variable $j.
                        if ($day == $first) {$j = 1;}
                        // Si $j est plus grand que 0 et plus petit ou égale au dernier jour du mois...
                        if (($j > 0) and ($j <= $last)) {
                                // Si $j est égale au jour actuelle, on colorie la case de ce jour (class="today")...
                                if ($j == $today_day) {
                                        // Si un évènement est daté pour ce jour...
                                        if (!empty($evenement[$j])) {
                                            // On écrit le lien pour aller sur la page des évènement...
                                            echo '<td class="case2"><a href="evenement.php?id='.$evenement[$j].'"><strong>' . $j . '</strong></a></td>';
                                        // Sinon
                                        } else {
                                            // On écrit seulement le jour.
                                            echo '<td class="case2">' . $j . '</td>';
                                        }
                                // Sinon, on ne colorie pas la case ( class="day")...
                                } else {
                                        // Si un évènement est daté pour ce jour...
                                        if (!empty($evenement[$j])) {
                                            // On écrit le lien pour aller sur la page des évènement...
                                            echo '<td class="case"><a href="evenement.php?id='.$evenement[$j].'"><strong>' . $j . '</strong></a></td>';
                                        // Sinon
                                        } else {
                                            // On écrit seulement le jour.
                                            echo '<td class="case">' . $j . '</td>';
                                        }
                                }
                        // Sinon, on ne met rien dans la case...
                        } else {
                            echo '<td class="case"></td>';
                        }
                }
            // On referme les rangées.
            echo '</tr>';
        }
    // On ferme le tableau.
    echo '</table>';
?>
					<div id="recherche"> 
						<div id="search"> <?php include ("recherche_form.inc.php"); ?> </div>
					</div>
					<div id="zic">
				<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase=
					"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="122" height="33" title="player">
				  <param name="movie" value="my_playermini2.swf" />
				  <param name="quality" value="high" />
				  <PARAM name="AUTOPLAY" VALUE="true">
			 	 <PARAM name="LOOP" VALUE="true">
				  <embed src="my_playermini2.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type=
				  "application/x-shockwave-flash" autoplay="true" loop="true" controller="true" 
				  width="122" height="33"></embed>
				</object>

					</div>
				</div>
			</div>
			<div id="margegauche"></div>
			<div class="filet"></div>
		</div>
		
		<div id="milieu">
				<div class="titre"><?php $ligne['nom'] ?></div>
				<div class="infos">
					<p><?php echo $ligne['description']; ?></p>
					<p>Date: <?php echo $ligne['jour']." ".$ligne['mois']." ".$ligne['annee']; ?></p>
					<p>Lieu: <?php echo $ligne['lieu']; ?></p>
				</div>
			<div id="flyer"><img src="<?php echo $ligne ['photo']?>"</div>
			<div id="page">AGENDA</div>
		</div>
		
		<div id="droite">
			<div class="filet"></div>
			<div id="arrows">
				<div class="margehaut"></div>
				<div class="arrow"><img src="img/fleche_up.gif"/></div>
				<div id="middlearrow"></div>
				<div class="arrow"><img src="img/fleche_down.gif" /></div>
		    </div>
			<div id="margedroite"></div>
		</div>
	</div>
	<div id="foot"><?php include ("footer.inc.php");?></div>
</div>
</body>

(désolé pour ce code un peu long :ange: ). Voila merci à tous ceux qui se pencheront sur le problème