Tableaux en PHP

Résolu
Lucy -  
 Lucy -
Bonjour,
Voilà je veux rechercher dans ma base de données des informations et les mettre dans un tableau.

ex: tabmachin['nom']=Durand;
tabmachin['prenom']=Paul;

Mais comme il y en a plusieurs, je peux faire:
for ($i=0; $i<$nbmax ; $i++){
tabmachin['nom'][$i]=Durand;
tabmachin['prenom'][$i]=Paul;
}
???

Sinon comment faire un tableaux à plusieurs X et Y ?

Merci
A voir également:

15 réponses

kstou2001 Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   5
 
quand tu lanceras ta requete du genre

$resultat = mysql_query($req);

$resultat te retournera un tableau associatif. tu pourras parcourir l'ensemble des resultats de cette maniere

while($rows=mysql_fetch_assoc($resultat)){
//on affiche la premiere ligne
echo "nom: ".$rows['nom']." prenom: ".$rows['prenom']."<br>";
}


D'apres ce que je comprends tu cherches à afficher tes resultats colonne apres colonne alors que tu auras plus simple de les afficher ligne par ligne
0
Lucy
 
Non car c'est dans une fonction, à la fin je retourne mon tableau et je doit mouvoir l'utiliser.

Et je doit avoir comme données:

       PREN     NOM
0     Jean     Potier
1     Paul     Cézam
2     Julie     Depardieu
3     Nico     Tetedevo
4     Sandy  Kilo


Et donc genre:

$tabmachin['NOM'][2] va donner Depardieu
ou bien $tabmachin['PREN'][4] va donner Sandy...
0
Lucy
 
En gros je voudrais savoir si c'est possible de faire un tableau associatif multidimentionnel ?
0
Lucy > Lucy
 
associatif, multidimensionnel et dynamique !

Genre:

$tabdispo = array(
	$i => array('jour' => date("d",$i), 'nom' => $nom, 'prenom' => $prenom, 'datedeb' => $date1 ,'hdeb' => $depart  ,'datefin' => $date2 ,'hfin' => $arrivee)
);


Mais ou j'initialise le $i? Ou je l'incrémente?

Helpouille
0
Lucy > Lucy
 
associatif, multidimensionnel et dynamique !

Genre:

$tabdispo = array(
	$i => array('jour' => date("d",$i), 'nom' => $nom, 'prenom' => $prenom, 'datedeb' => $date1 ,'hdeb' => $depart  ,'datefin' => $date2 ,'hfin' => $arrivee)
);


Mais ou j'initialise le $i? Ou je l'incrémente?

Helpouille
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
Oui tout à fait c'est possible:

$tabmachin=array(); //init de l'array
while($rows=mysql_fetch_assoc($resultat)){
//on empile dans l'array a chaque passage de la boucle ça va incrementer l'index deuxieme niveau automatiquement
$tabmachin['nom')[]=$rows['nom'];
$tabmachin['prenom')[]=$rows['prenom'];
} 
0
Lucy
 
Automatiquement? Ainsi j'aurai toute mes données dans un même tableau?
Le problème c'est que je ne veux pas tout les enregistrements.
Arf c'est galère...

Comment j'accède à ces données ensuite?

Merci
0
kstou2001 Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   5
 
Si tu ne veux pas tous les enregistrements a toi de faire le tri dans la requete que tu vas executer.

Par contre je ne vois pas trop l'interet de passer par un deuxieme tableau. (Ta requete te donneras un premier tableau)
0

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

Posez votre question
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
Automatiquement? Ainsi j'aurai toute mes données dans un même tableau?

OUI , au premier passage de la boucle tu empile les données du premier client dans
$tabmachin['nom')[0]
$tabmachin['prenom')[0]

au passage suivant celles du deuxieme client:
$tabmachin['nom')[1]
$tabmachin['prenom')[1]

ça se fait tout seul

pour y acceder:
echo $tabmachin['nom')[1];

par contre si tu ne veut pas tous le mettre dans ton array il faut faire une requette avec une condition WHERE

$tabdispo = array(
$i => array('jour' => date("d",$i), 'nom' => $nom, 'prenom' => $prenom, 'datedeb' => $date1 ,'hdeb' => $depart ,'datefin' => $date2 ,'hfin' => $arrivee)
);


en faisant ainsi tu changes le "sens" de ton array

il devient

$tabdispo[0]['nom']
$tabdispo[0]['prenom']
etc..
$tabdispo[1]['nom']
$tabdispo[1]['prenom']


donc il faut modifier un peu la boucle while:
$tabdispo=array(); //init de l'array
$i=0;
while($rows=mysql_fetch_assoc($resultat)){
//on empile dans l'array a chaque passage de la boucle on increment le $i
$tabdispo[$i]['nom']=$rows['nom'];
$tabmachin[$i]['prenom']=$rows['prenom'];
//etc.. pour les autres champs

$i++;
}  


au passage je me suis rendu compte d'une petite erreur dans mon code du topic plus haut

$tabmachin['nom')[]=$rows['nom'];
$tabmachin['prenom')[]=$rows['prenom'];
devient:
$tabmachin['nom'][]=$rows['nom'];
$tabmachin['prenom'][]=$rows['prenom'];

crochet au lieu de )
0
kstou2001 Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   5
 
donc d'apres ce que tu dis alain, on revient à ma solution

pas besoin de passer par un tableau intermediaire si c'est pour lire ligne par ligne.

et si c'est une fonction tu retourne le resultat c'est pareil pas besoin de coder des lignes et des lignes en plus
0
Lucy
 
Je trie après ma requête.

Je m'explique:


$mois = "07";

++Requête

++Récupère données requête

Tant qu'il y a des résultats:
$nom=...
$prenom=...
$date1=...
etc...

++Triage
Si le mois de la date correspond au mois $mois
alors je veux dans mon tableau les variables $jour, $nom, $prenom, $dat......

on passe à la ligne suivante
Fin tant que

retourner tableau



C'est plus clair? Car je ne crois pas que ta solution convenait. Si?
0
kstou2001 Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   5
 
par contre jte conseille de faire le tri avant de lancer ta requete si tu peux le faire. Quand tu travailles sur des petites bases à la rigueur tu tries apres mais quand tu as une bdd volumineuse faut le faire avant
0
Lucy
 
Ah donc

{
$tabdispo[$i]['nom']
$tabdispo[$i]['prenom']
$i++
}


ça marche?
0
kstou2001 Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   5
 
oui
0
Lucy
 
J'ai pas le choix, je trie après car il faut que je sélectionne que les lignes ou le mois correspond à mon mois en cours.

En fait, c'est pour afficher les informations (nom, prenom...) dans un calendrier de réservation.

Sachant qu'un réservation a une date de début et date de fin....
0
Lucy
 
Et ensuite je retourne ça avec juste "return $tabdispo;" ?

Et pour utiliser mes données je fais:

de $i a $imax
$tabjour[] = $tabdispo[$i]['jour'];
fin

$nom = $tabdispo[$i]['nom'];

C'est exact?
0
Lucy
 
Bon j'ai testé dans mon code et ça bug.

Comment puis-je enlever les doublons de jours?

Avant quand j'avait un tableau simple contenant que les jours je faisais:

$tabdispo = array_unique($tabdispo);


Maintenant que j'ai plusieurs infos j'ai testé ça sans succès:

$tabdispo = array_unique($tabdispo[]['jour']);
0
Lucy
 
Ah oui, aussi, quand je fais

echo "<td class=\"reserve\">$tabdisp[$k]['nom']</td>";


J'ai " Array['nom'] " dans ma case à l'écran...

Merci d'avance
0
Lucy
 
Je vais ouvrir un autre post pour mon histoire de doublons

Merci pour votre aide !!
0