Probleme de requette dans php

ayman23 -  
 ayman -
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

12 réponses

  1. atout1 Messages postés 236 Statut Membre
     
    bonjour,

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

    tu peux montrer ton code ??

    A+
    0
  2. ayman23
     
    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
  3. jeangilles Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   186
     
    Heu ....

    =< n'existe pas; c'est <= qu'il faut utiliser ^^
    0
  4. ayman23
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. atout1 Messages postés 236 Statut Membre
     
    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
  7. ayman23
     
    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
    1. atout1 Messages postés 236 Statut Membre
       
      bizzare car j'ai tester chez moi et ça marche bien..

      tu peux montrer ton code ??
      0
  8. ayman23
     
    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
  9. atout1 Messages postés 236 Statut Membre
     
    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
  10. ayman23
     
    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
    1. ayman23
       
      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
    2. atout1 Messages postés 236 Statut Membre
       
      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
  11. ayman23
     
    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
    1. atout1 Messages postés 236 Statut Membre
       
      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
    2. ayman
       
      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
  12. ayman23
     
    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
    1. atout1 Messages postés 236 Statut Membre
       
      cé koi les résultats attendus ???
      0
  13. ayman23
     
    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