méthodes de sélection de valeurs disperssées dans une table

Petit nouveau ! | 2 Messages

04 août 2010, 17:52

Bonjour,
admettons la table suivante, nommée contact :

[id] [nom][prenom][age]
[1] [A1] [A2] [A3]
[2] [B1] [B2] [B3]
[3] [C1] [C2] [C3]

Comment faire pour récupérer C2, C3 et B2 par exemple, pour les afficher un par un à divers endroits de ma page ?
Je précise que j'utilise la méthode mysql

Pour moi, le plus simple pour l'instant est de faire :

Code : Tout sélectionner

$sql1 = " SELECT prenom, age, FROM contact WHERE nom='C1' "; // j'utilise nom='C1' car plus explicite que id=3 $sql2 = " SELECT prenom FROM contact WHERE nom='B1' ";
puis j'utilise mysql_fetch_array pour chaque résultat...

N'y a t'il pas moyen de récupérer directement via une requête les lignes id=2 et id=3 dans un tableau à plusieurs dimensions ?

J'ai un peu de mal dans la jungle d'infos (sites officiels, forums, livres). J'ai fait pas mal de test sans succès.
Faut-il mieux que je parte sur la méthode mysqli ? J'ai cru comprendre qu'il y avait plus de fonctions? (La syntaxe orienté objet, je mets de côté car ça fait trop de nouveauté pour moi.) Si ma question vous ennuie parce-qu'elle a été posé 3462 fois, pouvez-vous me donner juste des pistes de recherche svp ?
Merci. :)

ViPHP
ViPHP | 5462 Messages

05 août 2010, 00:27

hello, t'as 2 solution sois tu creer un array qui genre :

1er solution
$array = array();
while($data = mysql_fetch_assoc($req))
{
    $array[] = $data;
}
la tu pourras parcourir ton $array comme tu veux.

2eme solution (en 2 parties)
- tu peux creer directement c'est array grace a fetchAll qui est disponible avec PDO (mais solution object)
- tu peux faire aussi un fetchall avec mysqli mais uniquement si le client de mysqli est myslnd


on peux aussi faire un UNION mais ca n'aurai pas trop de sens

Petit nouveau ! | 2 Messages

05 août 2010, 17:57

Merci, j'ai suivi ces pistes et fait plusieurs test, sans obtenir exactement ce que je voulais : une notation explicite.
J'avoue avoir failli denenir chauve en fin de journée entre les clefs, les valeurs, les boucles pour insérer des valeurs dans des clefs...
Je fais donc à la place plusieurs requêtes.

Voilà quand même la base des recherches sur lesquelles je suis parti :

Code : Tout sélectionner

<?php $db = mysqli_connect('serveur', 'user', 'passw', 'base'); // connection if (!$db) // gestion erreur de connection { die('Erreur de connexion (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); } $sqlContact = "SELECT prenom, age FROM contact" or die ('Problème relatif à la requete ou à la table.'); // énoncé de la requête. $dbContact = mysqli_query($db, $sqlContact); // activation requête $contactTab = mysqli_fetch_all($dbContact); // récupère les colonnes prenom et age sous forme de tableau echo $contactTab[1][0]; //affiche B2 echo $contactTab[2][0]; //affiche C2 echo $contactTab[2][1]; //affiche C3 /* j'aurrais voulu plutôt ceci : echo $contactTab[B1][prenom]; echo $contactTab[C1][prenom]; echo $contactTab[C1][age]; */ mysqli_close($db); ?>

ViPHP
ViPHP | 5462 Messages

05 août 2010, 18:13

avec le 2eme paramètre de fetch_all MYSQLI_ASSOC :wink: