[php] problème au niveau de ma requete SQL

Résolu/Fermé
maudus Messages postés 41 Date d'inscription lundi 19 juin 2006 Statut Membre Dernière intervention 6 novembre 2007 - 2 mai 2007 à 14:48
maudus Messages postés 41 Date d'inscription lundi 19 juin 2006 Statut Membre Dernière intervention 6 novembre 2007 - 4 mai 2007 à 09:51
Bonjour à tous,
Je suis débutante en php et pour le site internet que je suis en train de créer, j'ai trouvé un script sur internet qui permet de créer un petit calendrier qui affiche les évènements contenus dans ma base de données. J'ai donc adapté le code à mon site, qui se divise en 4 pages distinctes :
- agenda.php qui affiche le calendrier
- calendar.php qui est le script du calendrier
- connexion.php pour la connexion à la bdd
- event.php qui affiche les évènements quand on clique sur les différentes dates.

Quand je fais le test en local mon calendrier s'affiche bien mais quand je veux afficher un évènement, il me met le message d'erreur suivant :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\*******\event.php on line 22

Si vous pouviez m'aider à trouver ce qui ne va pas ce serait super car ça fait plusieurs jours que je suis dessus et je sèche complètement... Merci d'avance pour votre aide

je vous donne donc le code de event.php :

<?php
include ("connexion.php");
function mysql_date_fr($champ)
{
$annee=substr($champ,0,4);
$mois=substr($champ,5,2);
$jour=substr($champ,8,2);
return $jour."-".$mois."-".$annee;
} 
$ref_event = $_GET["ref"];
$result = mysql_query("SELECT * FROM events where idevent=\"$ref_event\" ");
while ($val = mysql_fetch_array($result)) 
{ 
$idevent = $val["idevent"];
$date_event = mysql_date_fr($val["date_event"]);
$desc_event = $val["desc_event"];
echo "le <b class=\"title2\">".$date_event."</b><br /><br />";
echo "<p class=\"text4\">".$desc_event."</p>";
}
?>


et également le code de calendar.php :

<?php
	include ("connexion.php");
	function mysql_date($champ)
	{
		$annee=substr($champ,0,4);
		$mois=substr($champ,5,2);
		$jour=substr($champ,8,2);
		return $jour;
	} 
	function premier_jour_du_mois($mois,$annee)
	{
 		$intPremierJour = date("w",mktime(0,0,0,$mois,1,$annee));
 		if($intPremierJour == 0) $intPremierJour = 7; // si c'est un dimanche
 		return $intPremierJour-1;
	}
	function nbjour($m,$a)
	{
	 	if(($a%4)==0)
	 	{
	 	$fev=29;
	 	}
		else
	 	{
		$fev=28;
	 	}
	$mois = array(0,31,$fev,31,30,31,30,31,31,30,31,30,31);
	for($x=1;$x<13;$x++)
	{
		if($m == $x)
		{
			return $mois[$x];
		}
	}
	}
	
	function lister_table()
	{
		$table="events";
		$dates = array();
		$query = "SELECT * FROM $table"; 
		$result = mysql_query($query);
		while ($val = mysql_fetch_array($result)) 
		{ 
			$date_event =mysql_date($val["date_event"]);
			echo $date_event;
	
		}
	} 
	
    function afficheMois($mois, $annee)
    {
		$tab = getdate();
		$jourc = $tab["mday"];
		$anneec = $tab["year"];
		$moisc = $tab["mon"];
        $labelMois = array(" ","Janvier", "Février", "Mars", "Avril",
                    "Mai", "Juin", "Juillet", "Août", "Septembre",
                    "Octobre", "Novembre", "Décembre");
        $labelJour = array("Lu.","Ma.","Me.","Je.","Ve.","Sa.","Di.");

		$nbJours=nbjour($mois,$annee);
		$css = "text";	

        echo "<table border=0>\n";
		
		$mp=$mois+1;
		$mm=$mois-1;
		$ap=$annee+1;
		$am=$annee-1;
		$acp=$annee;
		$acm=$annee;
		
		if($mp==13)
			{
				$mp=1;
				$acp=$acp+1;
				if($acp==2038)
				{
					$acp=1980;
				}
			}
		if($mm==0)
			{
				$mm=12;
				$acm=$acm-1;
				if($acm<1980)
				{
					$acm=2037;
				}
			}
			
		if($ap>2037){$ap=1980;}
		if($am<1980){$am=2037;}
		
		echo "<tr>".
		//modifier les liens ci-dessous avec votre chemin
		"<td colspan=\"4\" class=\"$css\"><a href=\"http://localhost/54agauche/agenda.php?mois=$mm&annee=$acm\"><img src=\"images/arrow_left.gif\" border=\"0\">".
		"</a> $labelMois[$mois] <a href=\"http://localhost/54agauche/agenda.php?mois=$mp&annee=$acp\"><img src=\"images/arrow_right.gif\" border=\"0\"></a></td>";
        echo "<td colspan=\"3\" align=\"right\" class=\"$css\"><a href=\"http://localhost/54agauche/agenda.php?mois=$mois&annee=$am\"><img src=\"images/arrow_left.gif\" border=\"0\"> ". 
		"</a>$annee<a href=\"http://localhost/54agauche/agenda.php?mois=$mois&annee=$ap\"> <img src=\"images/arrow_right.gif\" border=\"0\"></a> </td></tr>";
		
		
        echo "<tr>";
        for ($i = 0; $i < 7; $i++) {
            echo "<td class=\"$css\">$labelJour[$i]</td>";
        }
        echo "</tr>\n";
        
        echo "<tr>";
        for ($i = 0; $i < premier_jour_du_mois($mois,$annee); $i++) 
		{
            echo "<td></td>";
        }
     	/********************************/
        	for ($i = 1; $i <= $nbJours; $i++) 
			{
            	if (($i-1 + premier_jour_du_mois($mois,$annee)) % 7 == 0) 
				{
                	echo "</tr>\n<tr>";// Retour à la ligne chaque Lundi
            	}
				if(($i-1==$jourc-1)&&($annee==$anneec)&&($mois==$moisc))
				{
					$cssClass = "datejour";
					$htmltext = "<td align=\"right\" class=\"$cssClass\">$i</td>";
				}
            	else
				{
					$cssClass = "date";
					$htmltext = "<td align=\"right\" class=\"$cssClass\">$i</td>";
				}
				/*****************/
				$debut_mois = date("Y-m-d", mktime(0,0,0,$mois,1,$annee));
				$fin_mois = date("Y-m-d", mktime(0,0,0,$mois,$nbJours,$annee)); 
		
				$query = "SELECT *FROM events where date_event >='$debut_mois' and date_event <='$fin_mois' ORDER BY date_event"; 
				$result = mysql_query($query);
				while ($val = mysql_fetch_array($result)) 
				{ 
					$date_event = mysql_date($val["date_event"]);
					$idevent = $val["idevent"];
					if($i==$date_event)
						{
							$cssClass = "date_event";
							$htmltext = "<td align=\"right\" class=\"$cssClass\"><a href=event.php?ref=$idevent\" class=\"lien\" title=\"date événement\">$i</a></td>";
						}
				}	
				echo $htmltext;
        	}
		/******************************/
        echo "</tr>";
        echo "</table>";
	}   
?>
A voir également:

4 réponses

Salut,

Il est probable que ta requete n'est pas bonne

ajoute un affichage de l'erreur :

$result = mysql_query("SELECT * FROM events where idevent=\"$ref_event\" ");
echo mysql_error();
while ($val = mysql_fetch_array($result)) 


Cela devrait te renseigner.

ec
0
maudus Messages postés 41 Date d'inscription lundi 19 juin 2006 Statut Membre Dernière intervention 6 novembre 2007 1
4 mai 2007 à 08:55
j'ai fait ce que tu m'a dit et voilà l'erreur affichée :
Erreur de syntaxe près de '"38""' à la ligne 1
(sachant que 38 est la l'identifiant de l'évènement sur lequel j'ai cliqué)
donc ca ne m'avance pas beaucoup...
0
Salut,

Moi cela me renseigne... Il me semble voir des guillemets de trop...

Et en regardant le code au bon endroit je vois

<a href=event.php?ref=$idevent\" 


il ne faudrait pas plutot

<a href=\"event.php?ref=$idevent\" 



????

ec
0
maudus Messages postés 41 Date d'inscription lundi 19 juin 2006 Statut Membre Dernière intervention 6 novembre 2007 1
4 mai 2007 à 09:51
alors là vraiment un très grand merci à toi ça fait 2 semaines que je me prenais la tête sur ce code tout ça pour un histoire de guillemets! et maintenant ca fonctionne impeccable
Merci beaucoup pour ton aide précieuse et ta sympathie
0