PHP/mySQL : faire un array à partir d'un base mySQL ?

@ybee

Membre expert
Club iGen
18 Mai 2001
1 039
14
42
Embourg, Belgique
antoine.olbrechts.eu
Je sais pas si c'est possible, et je suis sur que ma question va etre vague et/ou incompréhensible, mais je m'explique :

J'ai une base de données de laquelle je veux extraire des données, et en faire un tableau array pour trier selon certains critères, comme par exemple le prix de l'article, ou le millésime.

Mais je comprends pas du tout comment je peux faire ca ... (oui c'est vague) ... SI quelque a ne fut-ce que des pistes, des exemples, etc ?

Rien compris à la doc de php.net
frown.gif
 
Si t'as besoin d'ordonner une seule fois, tu peux déjà faire ordonner par mysql ! (Qui pourra même ordonner par plusieurs critères en une seule requête).
Si tu veux un tableau tu utilises le code de la note du 25 novembre de cette page du manuel.

Auquel tu peux ajouter un ksort du tableau résultant si tu préfères le faire trier par le php (et si tu as donné un argument $index_row).
Pour le trier tu peux aussi utiliser array_multisort si je ne m'abuse.

Pour rappel le requête mysql avec tri c'est du genre "SELECT * FROM table ORDER BY champ1, champ2"
Et la connection à mysql cf mysql_connect (ne pas oublier le mysql_close aussitôt que tu n'as plus besoin de la connexion).


Euh bien sûr tout ça en supposant que ta BD soit mySQL
laugh.gif
 
En fait, voici ce que j'ai :

// Connexion au serveur mySQL et sélection de la base

$dbh=mysql_connect ("localhost", "xxx", "xxx") or die ('Impossible de se connecter à la base parce que: ' . mysql_error());
mysql_select_db ("xxx");

// Sélection des infos

$sql = 'SELECT num, nom, type, millesime, prix FROM bacchus ORDER by num DESC';
$req = mysql_query($sql) OR die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$res = mysql_affected_rows();

// Tableau

echo '
<tr>
<td align="center"><font face="Verdana" size="3"><b><u><a href="fiches.php?tri=nom">Nom</a></td>
<td align="center"><font face="Verdana" size="3"><b><u><a href="fiches.php?tri=type">Type de vin</a></td>
<td align="center"><font face="Verdana" size="3"><b><u><a href="fiches.php?tri=millesime">Millésime</a></td>
<td width="25"align="center"><font face="Verdana" size="3"><b><u><a href="fiches.php?tri=prix">Prix</a></td>
</tr>
<tr>
<td> </td>
</tr>';

WHILE($data = mysql_fetch_array($req))
{
$nom = $data['nom'];
$nom=nl2br($nom);
echo '<tr>
<td align="center"><font face="Verdana" size="2"><a href="infovin.php?num='.$data['num'].'">'.$nom.'</td>
<td align="center"><font face="Verdana" size="2">'.$data['type'].'</td>
<td align="center"><font face="Verdana" size="2">'.$data['millesime'].'</td>
<td align="center"><font face="Verdana" size="2">'.$data['prix'].'€/bouteille</td>
</tr>';
};

J'aimerais en fait qu'en cliquant sur le titre de colone "Prix", ca reload la page en triant par prix, mais autrement que par un ORDER BY qui ne fait pas le bon tri (pas l'ordre naturel).

J'ai mis un mysql_fetch_array
comment puis-je faire un sort() dessus ? par le prix ...
 
Ca c 'est déjà un peu mieux :

http://bacchus.aybee.net/fiches.php?tri=prix


Mais, je sais pas si j'ai bien fait, j'ai mis en DECIMAL la champ dans mySQL, et en utilsant des virgules, il affiche pas la décimale ... Je dois changer la virgule en un point (le moyen le plus simple ?) ou alors je dois pas mettre en DECIMAL le champ, mais autre chose ?
 
Ouaip il faut mettre un point. Je ne crois pas qu'il soit possible de lui faire prendre les virgules. Ah ces américains
wink.gif

Tu peux éventuellement corriger à l'affichage en php après.

Ah et faut pas oublier de préciser qu'il Y A des décimales (mettre 10,2 par exemple dans le champ taille/valeurs), car la valeur par défaut est 10,0 c'est à dire pas de chiffres après la virgule...
crazy.gif
 
Ayant eu à insérer dans une table via un formulaire des données avec une "," j'avais une erreur mysql n'acceptant que "."

J'ai fait des recherches et trouvé ce javascript ici

Si ça peut aider quelqu'un :)