Probleme de requette dans php

Fermé
ayman23 - 25 mai 2010 à 10:28
 ayman - 30 mai 2010 à 00:05
Bonjour,
le probleme que j ai compte facile mais j ai pas encore trouvé la solution acause d un message d array!! ce message apparai apres avoir creer une requette qui appel des informations d'un tableau cree dans ma base de donnee: si la requette est simple ou j ai donnee une seul condition les resultats s'affiche dans ma page comme je veux, si j ai specifié plusieur condition comme "(.....where personne=".$P."and age=>".$Age) la je trouve un seul mot dans ma page php qui est "array"!!
svp je sais pas c quoi le probleme car je croi que la requette est juste !! dites moi quoi faire ?
et merci d avance
A voir également:

12 réponses

atout1 Messages postés 216 Date d'inscription mardi 11 mai 2010 Statut Membre Dernière intervention 17 juin 2011
25 mai 2010 à 10:38
bonjour,

tas fais un mysql_fetch_array($requete) ????

tu peux montrer ton code ??

A+
0
salut,

oui j ai utilisé le fetch et ca marche dans tt les requettes que j ai fait sans conditions! mais celle la non!! le code est:

$requette1= $bdd->query("SELECT * FROM annee WHERE annee_debut =<".$annee_debut."AND annee_fin >=".$annee_fin) or die($bdd->errorInfo());
$requette1->execute();
$cont1=$requette1->rowCount();

for($i=0;$i<=$cont1+1;$i++)
{
$donnees=$requette1->fetch();
echo $donnees[0];
}
merci de m aider
0
jeangilles Messages postés 816 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 185
26 mai 2010 à 08:59
Heu ....


=< n'existe pas; c'est <= qu'il faut utiliser ^^
0
merci, mais meme avec le => et <= ca marche pas sauf qu 'avec le code:

$requette1= $bdd->query("SELECT * FROM annee WHERE annee_debut =>".$annee_debut)

mais lorsque j ajoute "AND annee_fin<=$annee_fin" je trouve dans ma page php le mot "array":

$requette1= $bdd->query("SELECT * FROM annee WHERE annee_debut =>".$annee_debut."AND annee_fin <=".$annee_fin)

dites moi quoi faire svp et merci encore
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
atout1 Messages postés 216 Date d'inscription mardi 11 mai 2010 Statut Membre Dernière intervention 17 juin 2011
26 mai 2010 à 11:29
essaye ce code :
$reponse = mysql_query("SELECT * FROM annee

WHERE annee_debut >= '$annee_debut'
AND annee_fin <='$annee_fin'") or die (mysql_error());

while($donnees = mysql_fetch_array($reponse))

{

echo "$donnees[nom_colonne_tu_veux_afficher] <br/>";

}
0
salut,

merci de m suivi atout1 tres jentil de votre part :)

j ai essayé avec ce code que vous m avez proposé mais s affiche le meme probleme "array"!!

si vous avez d autre proposition aidez moi merci
0
atout1 Messages postés 216 Date d'inscription mardi 11 mai 2010 Statut Membre Dernière intervention 17 juin 2011
27 mai 2010 à 09:40
bizzare car j'ai tester chez moi et ça marche bien..

tu peux montrer ton code ??
0
j crois que le probleme est dans mes tableaux de base de donnee je vai vous montrer tt le code

<html>
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname= nom', 'root1', ' ');
}

catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
?>

<body>
<?php
//voila les exemples que je donne slm pour l tester
$annee_debut = 2006;
$annee_fin = 2010;

?><p><strong><?php echo 'De la date '.$annee_debut.' a la date '.$annee_fin;?></strong></p>
</br>
</br>
</br>

<center >

<table BGCOLOR="#fff000" BORDER=3 WIDTH="80%">
<tr>
<thead>
<th><p> Nom </p></th>
<th><p> age </p></th>
<th><p> La date </p></th>
<thead>
</tr>
<tbody>
/*normalement ce que j ai dans la table c la date separait de trois
champs: jour mois et annee avec nom et age ...*/
<?php
$requet1= $bdd->query("SELECT * FROM annee WHERE annee_debut =>".$annee_debut." AND annee_fin <=".$annee_fin) or die($bdd->errorInfo());
$requet1->execute();
$cont1=requet1->rowCount();

for($i=0;$i<=$cont1+1;$i++)
{

$donnees=$requet1->fetch();

?>
<tr>
<td><p> <?php echo $donnees[1];?></p></td>
<td><p> <?php echo $donnees[2];?></p></td>
<td><p><?php echo $donnees[3].'/ '.$donnees[4].'/'.$donnees[5];?></p></td>

</tr>

<?php

}


?>


</tbody>
</TABLE>

</center>



<?php

?>
</body>
</html>
j espere que vous avez compris merci encore de m aider
0
atout1 Messages postés 216 Date d'inscription mardi 11 mai 2010 Statut Membre Dernière intervention 17 juin 2011
Modifié par atout1 le 27/05/2010 à 20:26
copie le code suivant dans un fichier.php
<?php
// connection a la base de donnees
$db = mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("NOM_BASE") or die(mysql_error());
echo "
<html>
<body>";

//voila les exemples que je donne slm pour l tester
$annee_debut = 2006;
$annee_fin = 2010;
echo "<p><strong>De la date $annee_debut a la date de $annee_fin </strong></p>";
echo "
<table BGCOLOR=#fff000 BORDER=3 WIDTH=80% align=center>
<tr>
<thead>
<th><p>Nom</p></th>
<th><p>Age</p></th>
<th><p>La date</p></th>
<thead>
</tr>
<tbody>";
$reponse = mysql_query("SELECT * FROM annee WHERE annee >= '$annee_debut'AND annee <='$annee_fin'") or die (mysql_error());
while($donnees = mysql_fetch_array($reponse))
{
echo"
<tr>
<td>$donnees[nom]</td>
<td>$donnees[age]</td>
<td>$donnees[jour]/$donnees[mois]/$donnees[annee]</td>
</tr>";
}
echo "
</tbody>
</table>
<body>
</html>";
?>

toi tas moi dans ton WHERE annee_debut <= $annee_debut et annee_fin<= $annee_fin
mais normalement le champ dans la base de donnees s'appelle annee.
en plus au lieu </br> met plutot <br/>
et prkoi tu utilise le $rowcount() ???? tas pas besoin.

ton table dans la base de donnees doit contient les champs suivant id (cle primaire), nom, age, jour, moi, annee , etc.. de ce genre :
CREATE TABLE IF NOT EXISTS 'annee' (
'id' int(11) NOT NULL AUTO_INCREMENT,
'nom' varchar(10) NOT NULL,
'age' int(2) NOT NULL,
'annee' int(4) NOT NULL,
'jour' int(2) NOT NULL,
'mois' int(2) NOT NULL,
PRIMARY KEY ('id')
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;


essaye ce code et dis moi si ca marche ou pas.. il doit marche car il y a rien de complique .

A+
0
merci bcq atout1 ca marche !!!!! vous ma sauvez merci bcq :)

si vous voulez, dites moi pour bien specifier les resultats de date c.a.d jour mois et annee j ai fait cette requette et ca m donne le resultat mais il donne pas l importante parfoi au mois et autre au jour !!

au lieu de l annee slm :

$reponse = mysql_query("SELECT * FROM annee WHERE annee_debut >= '$annee_debut'AND annee_fin <='$annee_fin'") or die (mysql_error());

on fait:

$jour_debut=7;
$jour_fin=6;
$mois_debut= 4;
$mois_fin= 7;
$annee_debut=2006;
$annee_fin=2009;

$reponse = mysql_query("SELECT * FROM annee WHERE (annee >= '$annee_debut' AND annee <='$annee_fin')
OR ((mois >= '$mois_debut' AND annee>= '$annee_debut') AND ( mois <= '$mois_fin' AND annee <= '$annee_fin')) OR ((jour>= '$jour_debut' AND mois >= '$mois_debut' AND annee >= '$annee_debut') AND (jour <= '$jour_fin' AND mois <= '$mois_fin' AND annee <= '$annee_fin'))");

ca me donne pas des erreurs mais le resultat est comme par exemple: de 07/04/2006 a 06/12/2009!!!!! et normalement il faut qu il s arret dans 06/07/2009

si vous avez des idees sur ca je serai tres content merci d avance pour votre aide atout1 :)
0
aussi j ai oublié de vous dire atout1, j ai trouvé que le probleme etais dans la base de donnee ou j ai consideré annee comme varchar !!
merci bcq
0
atout1 Messages postés 216 Date d'inscription mardi 11 mai 2010 Statut Membre Dernière intervention 17 juin 2011
Modifié par atout1 le 28/05/2010 à 10:58
bonjour, prkoi tu fais pas des trucs de ce genre : remplace les trois champs (jour, mois, annee) par une seule champ (date de type DATE)

et tu modifier ton code comme suivant

echo "
<html>
<body>";

//voila les exemples que je donne slm pour l tester
$date_debut = "2010-05-27"; (aaaa-mm-jj)
$date_fin = "2010-05-31"; (aaaa-mm-jj)
echo "<p><strong>De la date $date_debut a la date de $date_fin </strong></p>";
echo "
<table BGCOLOR=#fff000 BORDER=3 WIDTH=80% align=center>
<tr>
<thead>
<th><p>Nom</p></th>
<th><p>Age</p></th>
<th><p>La date</p></th>
<thead>
</tr>
<tbody>";
$reponse = mysql_query("SELECT * FROM annee WHERE date >= '$date_debut'AND date <='$date_fin'") or die (mysql_error());
while($donnees = mysql_fetch_array($reponse))
{
echo"
<tr>
<td>$donnees[nom]</td>
<td>$donnees[age]</td>
<td>$donnees[date]</td>
</tr>";
}
echo "
</tbody>
</table>
0
salut,

oui j aime bien faire ca mais mon encadrant a insisté d utiliser trois champs de date pour eviter qlq probleme!!
j espere que vous m comprenez
merci
0
atout1 Messages postés 216 Date d'inscription mardi 11 mai 2010 Statut Membre Dernière intervention 17 juin 2011
Modifié par atout1 le 28/05/2010 à 16:53
essaye avec ce requete , je pense ton requete cé tres complique :D
tas pas besoin de tou ses AND et OR

$reponse = mysql_query("SELECT * FROM annee WHERE (annee >= '$annee_debut' AND annee <='$annee_fin')
AND(mois >= '$mois_debut' AND mois <='$mois_fin') AND (jour >= '$jour_debut' AND jour <='$jour_fin')") or die(mysql_error());


ca doit marche

bonne chance
0
les resultats attendus est l affichage des informations enregistrer chaque jour et pour bien preciser les jours je donne deux dates date1 et date2 et il va m afficher les infos enregistrer dans cette periode.
you get the idea??
thanks
0
salut,

cette requette m affiche qlq reponse mais pas tt! j explique: j ai testé deux exemples de date : de 02/04/2000 a la date 03/04/2010 et il m affiche les dates ont des jours compris entre 02 et 03 avec mois compris entre 04 et 04 pour tt les annees compris entre 2000 et 2010!! et c pas ca qu on veux!
est c que vous avez d autre propos ??
merci
0
atout1 Messages postés 216 Date d'inscription mardi 11 mai 2010 Statut Membre Dernière intervention 17 juin 2011
28 mai 2010 à 18:24
cé koi les résultats attendus ???
0
salut,
comme j ai deja dit il faut qu il m affiche tt les informations compri par exemple entre 02/04/2000 et 03/04/2001
ce que j ai dans mon tableau est de 02/03/1999, 03/03/1999, 04/03/1999 .......jusqu a 12/09/2010
mais ce qu il m donne la requette c les resultats suivantes: 02/04/2000 , 03/04/2000 c fini pour l annee 2000!!! apres 02/04/2001 et 03/04/2001 !!!!!!!!!
alors c comme cette requette controle si les dates que tu as est egale a ces 4 dates je vai les afficher sinon je peux rien faire!!
j espere que vous avez compris ou est le probleme
merci bcq atout1 :)
0