Forum-webmaster
Technique - programmation => PHP / MySQL => Message commencé par: marygil le le 05-10-2009 a 18:05:07

Titre: Tableau array
Posté par: marygil le le 05-10-2009 a 18:05:07

Bonjour,

Pouvez vous m'aider à mettre en place mon tableau. C'est pour afficher des dates de naissance dans un tableau via un formulaire.
J'essaie de comprendre le PHP mais ce n'ai pas toujours simple.
Merci beaucoup de votre aide.


Code:

<?php
$mois = array
(
   'janvier',
   'fevrier',
   'mars',
   'avril',
   'mai',
   'juin',
   'juillet',
   'aout',
   'septembre',
   'octobre',
   'novembre',
   'decembre'
);

$resultats = $connexion->query("
   SELECT *
   FROM cruet_membre
   WHERE `cruet_membre`.`id` <> 0
   AND `cruet_membre`.`membre` <> 'sortant'
   AND `cruet_membre`.`nom` <> 'ADMIN'
   ORDER BY nom, prenom ASC");
$nb = $resultats->setFetchMode(PDO::FETCH_OBJ);

$tableau = array();

while ($user = $resultats->fetch())
{
   $exp = explode("-",$user->naissance);
   $mois_user = $exp[1];

   /*
    Si la date est du genre JJ-MM-AAAA
    $exp = explode("-",$user->naissance);
    $mois_user = $exp[1];
   */
   $tableau[$mois_user][] = $user;
}
?>

<table id="anniversaire" width='100%'>
<tr>

<?php
for($i=0;$i<12;$i++)
{

   if($i%3 == 0 && $i != 0)
      echo '</tr><tr>';

   echo '<td valign="top"><center><div style="background: #E0FFFF; padding: 3px;"><b><u>JANVIER</u></b></div>';

   foreach($tableau[ $i ] as $user)
   {
      echo $user->naissance.' '.$user->nom. ' ' .$user->prenom.' <br />';
   }

   echo '</td>';

}
?>

   </tr>
</table>

Titre: Re:Tableau array
Posté par: herlock31 le le 06-10-2009 a 09:34:38

Vous voulez faire quoi exactement ?

Titre: Re:Tableau array
Posté par: marygil le le 06-10-2009 a 09:58:39

Bonjour et merci

En fait je veux afficher dans un tableau les dates de naissance de tous les membres de mon association.
voilà ce que j'ai mis en place un tableau, enfin avec des recherche sur le net car je débute en php ce qui est simple ça peux aller mais sinon..........

Merci beaucoup de m'aider.


Code:

$NbrLigne = 4;
$tableau = array
(
   'JANVIER',
   'FEVRIER',
   'MARS',
   'AVRIL',
   'MAI',
   'JUIN',
   'JUILLET',
   'AOUT',
   'SEPTEMBRE',
   'OCTOBRE',
   'NOVEMBRE',
   'DECEMBRE'
);
$resultats = $connexion->query("
   SELECT *
   FROM cruet_membre
   WHERE `cruet_membre`.`id` <> 0
   AND `cruet_membre`.`membre` <> 'sortant'
   AND `cruet_membre`.`nom` <> 'ADMIN'
   ORDER BY nom, prenom ASC");
$nb = $resultats->setFetchMode(PDO::FETCH_OBJ);


$NbreData = sizeof($tableau);
$NbrCol = 0;


if ($NbreData != 0)
{
   $k = 0; // indice du tableau
      echo '<table id="anniversaire" width="100%"><tr>';
   while ($k < $NbreData)
   {
      echo '<td valign="top">';
      echo '<table id="anniversaire" width="100%">';
   for ($i=1; $i<=$NbrLigne; $i++)
      {
if ($k < $NbreData)
      {
      echo '<tr><td><center><div style="background: #E0FFFF; padding: 3px;">';

// DONNEES A AFFICHER dans la cellule
      echo $tableau[$k];

      echo '</td></tr></div>';
   $k++;
      }
if ($i == $NbrLigne)
      {
      echo '</table>';
      echo '</td>';
      }
      }
      $NbrCol++;
   }
      echo '</tr></table>';
}
?>




Titre: Re:Tableau array
Posté par: marygil le le 06-10-2009 a 09:59:49

J'ai oublié dans le tableau il faut que ça affiche.....

echo $user->naissance.' '.$user->nom. ' ' .$user->prenom.' <br />';

merci

Titre: Re:Tableau array
Posté par: herlock31 le le 06-10-2009 a 11:43:22

bien compliqué le code, je vais essayé de faire bien plus simple. Par contre pour débuter inutile de dev directement avec PDO


Code:
<?php
$connect = mysql_connect('localhost','root','');
mysql_select_db('tabase');

//un tableau commence à donc ajouter une première valeur vide pour que janvier soit en position 1
$tableau = array
(   
   '',
'JANVIER',
'FEVRIER',
'MARS',
'AVRIL',
'MAI',
'JUIN',
'JUILLET',
'AOUT',
'SEPTEMBRE',
'OCTOBRE',
'NOVEMBRE',
'DECEMBRE'
);
$resultats = mysql_query("
SELECT *
FROM cruet_membre
WHERE `cruet_membre`.`id` <> 0
AND `cruet_membre`.`membre` <> 'sortant'
AND `cruet_membre`.`nom` <> 'ADMIN'
ORDER BY nom, prenom ASC", $connect);

$nb = mysq_num_row($resultats);

if ($nb>)
{
echo '<table id="anniversaire" width="100%">
   <tr>
   <td>Date naissance</td>
   <td>Nom</td>
   <td>Prenom</td></tr>';
while ($rst = mysql_fetch_object($resultats, $connect)={
      echo '<tr>';
      list($annee, $mois, $jour) = explode('-', $rst->TonChampDate);
      //permet de récupérer de facon séparer l'année, le mois et le jour de la date
      //(int)$mois permet de convertir 01 en entier donc 1 utilise pour le tableau
      echo '<td>'.$jour.'/'.$tableau[(int)$mois].'/'.$annee.'<td>';
      echo '<td>'.$rst->TonChampNom.'<td>';
      echo '<td>'.$rst->TonChampPrenom.'<td>';
   echo '</tr>';
}
echo '</table>';

}
mysql_close($connect);
?>


Code fait de tête donc à tester

Titre: Re:Tableau array
Posté par: marygil le le 06-10-2009 a 20:49:06

Bonjour et merci beaucoup de ta réponse.

Il y a une erreur de syntax au niveau du if ($nb>).........

Si tu peux avec un peu de temps essayer de me trouver cette erreur.
Sinon ton code est très clair.
Merci


Titre: Re:Tableau array
Posté par: herlock31 le le 06-10-2009 a 20:51:44


Code:

$nb = mysql_num_row($resultats);

if ($nb>0)


Je l'ai tapé rapidement et de tête

Titre: Re:Tableau array
Posté par: marygil le le 06-10-2009 a 20:58:44

C'est encore moi cela me met une autre erreur c'est dans le while maintenant?

Titre: Re:Tableau array
Posté par: herlock31 le le 06-10-2009 a 20:59:41

while ($rst = mysql_fetch_object($resultats, $connect){

un = en trop

Titre: Re:Tableau array
Posté par: marygil le le 06-10-2009 a 21:17:16

ha oui puis il manquait une ) à la fin.............

maintenant un autre p'tit problème excuse moi encore

Ca m'indique une erreur à cette ligne
$nb = mysq_num_row($resultats);

l'erreur:
Fatal error: Call to undefined function mysq_num_row()

Titre: Re:Tableau array
Posté par: herlock31 le le 06-10-2009 a 21:25:57

je te l'ai corrigé deux ou trois messages plus haut

mysql_num_row manque le l

Titre: Re:Tableau array
Posté par: marygil le le 06-10-2009 a 21:38:42

Excuse moi j'ai pas compris ton dernier post ?

Titre: Re:Tableau array
Posté par: herlock31 le le 06-10-2009 a 21:39:25

$nb = mysql_num_row($resultats);

Titre: Re:Tableau array
Posté par: marygil le le 06-10-2009 a 21:50:18

J'avais pas vu qu'il manquait le L

Mais malheureusement ça m'affiche toujours la même erreur à cette même ligne?

Fatal error: Call to undefined function mysql_num_row()

Titre: Re:Tableau array
Posté par: herlock31 le le 06-10-2009 a 21:56:40

ah j'ai été voir la doc, manque le s

$nb = mysql_num_rows($resultats);

Titre: Re:Tableau array
Posté par: marygil le le 06-10-2009 a 22:19:06

Maintenant je pense que c'est une question de connexion à ma base, pourtant j'ai bien mis le nom de ma base?

car sur cette ligne ça me met un warning ?
   while ($rst = mysql_fetch_object($resultats, $connect))

Warning: mysql_fetch_object() expects parameter 2 to be string, resource given

Titre: Re:Tableau array
Posté par: herlock31 le le 06-10-2009 a 22:24:36

envoi moi ton script par mail, je regarderai demain matin la je coupe l'ordi pour aujroud'hui

Titre: Re:Tableau array
Posté par: marygil le le 06-10-2009 a 22:30:40

je te remercie


Code:

<?php
$connect = mysql_connect('localhost','root','');
mysql_select_db('cliquedecruet');

//un tableau commence à donc ajouter une première valeur vide pour que janvier soit en position 1
$tableau = array
(
'',
'JANVIER',
'FEVRIER',
'MARS',
'AVRIL',
'MAI',
'JUIN',
'JUILLET',
'AOUT',
'SEPTEMBRE',
'OCTOBRE',
'NOVEMBRE',
'DECEMBRE'
);
$resultats = mysql_query("
SELECT *
FROM cruet_membre
WHERE `cruet_membre`.`id` <> 0
AND `cruet_membre`.`membre` <> 'sortant'
AND `cruet_membre`.`nom` <> 'ADMIN'
ORDER BY nom, prenom ASC", $connect);

$nb = mysql_num_rows($resultats);

if ($nb>0)
{
   echo '<table id="anniversaire" width="100%">
         <tr>
         <td>Date naissance</td>
         <td>Nom</td>
         <td>Prenom</td></tr>';
   while ($rst = mysql_fetch_object($resultats, $connect))
   {
      echo '<tr>';
      list($annee, $mois, $jour) = explode('-', $rst->naissance);
      //permet de récupérer de facon séparer l'année, le mois et le jour de la date
      //(int)$mois permet de convertir 01 en entier donc 1 utilise pour le tableau
      echo '<td>'.$jour.'/'.$tableau[(int)$mois].'/'.$annee.'<td>';
      echo '<td>'.$rst->nom.'<td>';
      echo '<td>'.$rst->prenom.'<td>';
      echo '</tr>';
   }
   echo '</table>';

}
mysql_close($connect);
?>

Titre: Re:Tableau array
Posté par: marygil le le 06-10-2009 a 22:37:53

En fait encore une info.
Les personnes dont ils sont nés en JUIN vont dans le mois de JUIN etc...
Merci


Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.