Page 1 sur 1

requête avec WHERE et une date comme condition

Posté : 04 déc. 2006, 14:36
par bibi85
bonjour,
j'ai le script suivant:
// date du jour
$date=strftime("%Y-%m-%d %T");
//connexion au serveur
include ("../includes/fonctions/connexion.php");
//RECUPERATION DU NUM_CLIENT
$requete_num_client="SELECT num_client FROM clients WHERE date_inscription<$date";
echo "$requete_num_client";
$resultat_num_client=mysql_query($requete_num_client);
while ($donnees=mysql_fetch_array($resultat_num_client))
{
$num_client=$donnees['num_client'];
}

//affichage des coordonnées
$requete_client="SELECT * FROM clients WHERE num_client='$num_client'";
//exécution de la requete
$resultat_client=mysql_query($requete_client);
if($resultat_client)   
etc etc...
il m'affiche le message d'erreur suivant (j'ai fait afficher ma requête):
SELECT num_client FROM clients WHERE date_inscription<2006-12-04 13:34:17
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home.10.2/ideeloc/www/ideeloc/intranet/liste_clients.php on line 10

si qqun peut m'aider... merci d'avance

Posté : 04 déc. 2006, 14:58
par charabia
Le champ date_inscription est de quel type dans ta table ?

As-tu essayé de faire ta requête directement sur phpMyAdmin ?

Posté : 04 déc. 2006, 15:01
par Ryle
En testant l'exécution de ta requête par mysql, en ajoutant un "or die(mysql_error())" après le mysql_query(), tu verrais qu'il y a une erreur de syntaxe dans ta requête :)
De même si tu exécutes la requête que tu as affiché directement dans mysql.

Bon aller, pour te mettre sur la piste, une date est considérée comme une chaine de caractères, et en sql autour d'une chaine de caractères on met des ...... ;)

Posté : 04 déc. 2006, 15:40
par bibi85
merci pour vos réponses
j'ai mis :
date_inscription<'$date'
mais il ne m'affiche que le dernier enregistrement de la table, j'en conclu que la condition est mal posée... voici la suite du script:
//AFFICHAGE DES COORDONNEES
$requete_client="SELECT * FROM clients WHERE num_client='$num_client'";
//exécution de la requete
$resultat_client=mysql_query($requete_client);
if($resultat_client)   
{ //début de if   
	while ($donnees=mysql_fetch_array($resultat_client))
	{ 
	$civilite=$donnees["civilite"];
	$nom=$donnees["nom"];
	$prenom=$donnees["prenom"];
	$tel_fixe=$donnees["tel_fixe"];
	$portable=$donnees["portable"];
 
 echo "
	<html>
	<body bgcolor=#FFFF66>
	<table border=0 cellpadding=0 width=760 cellspacing=0>
		
	<tr>
		<td bgcolor=#FF9900><FONT size=4><B>$num_client</B></FONT></td>
		<td bgcolor=#FF9900><FONT size=4><B>$civilite $nom $prenom</B></FONT></td>
		<td bgcolor=#FF9900><FONT size=4><B>$tel_fixe</B></FONT></td>
		<td bgcolor=#FF9900><FONT size=4><B>$portable</B></FONT></td>
		<td bgcolor=#FF9900><FONT size=4><B></B></FONT></td>
	</tr>

	</table>
	</body>
	</html>"; 
	}//fin de while
}//fin de if
else
		{
		echo"pas de nouveaux clients!";
		}  
mysql_close();	
pourquoi cela ne fonctionne pas ? merci

Posté : 04 déc. 2006, 15:45
par charabia
Houlàlà déjà grosse erreur. Il ne faut surtout pas mettre tout le code HTML dans ta boucle. Dans ton cas tu auras une multiplication de <html> et <body bgcolor=#FFFF66>.

Tu ne dois mettre à l'intérieur de la boucle que le résultat à afficher de la requête.

De plus pourquoi fais-tu 2 requêtes différentes ? Imbriques tes conditions :
$requete_client="SELECT * FROM clients WHERE num_client=".$num_client." AND date_inscription < '".$date."'";

Posté : 04 déc. 2006, 16:15
par bibi85
je dois d'abord aller chercher le num_client pour pouvoir faire ma 2nde requête puisque c'est ma condition, non ?
je le défini comme variable ce qui me permet de faire ma requête par rapport à elle.
je ne comprends pas tout ce que tu m'as dit...

Posté : 04 déc. 2006, 16:23
par charabia
Si j'ai bien comprisn ta requête est la suivante :

J'affiche les infos du client dont la date d'inscription est inférieure à une date donnée c'est bien ça ?

Si c'est bien ça ta requête ne sera plus que :
$requete_client="SELECT * FROM clients WHERE date_inscription < '".$date."'";
Le numéro client étant récupéré dans cette même requête.

Posté : 04 déc. 2006, 16:47
par bibi85
merci beaucoup charabia pour m'éclaircir l'esprit...
c'est bien ce à quoi je voulais arriver, et cela fonctionne...
pour moi, le php, c'est pas gagné !
bonne journée :lol: