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

@ybee

Membre d’élite
Club MacG
18 Mai 2001
1 039
14
37
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
 

Spyro

Vétéran
Club MacG
19 Juillet 2001
5 428
866
40
PNG-sur-Yvette
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
 

@ybee

Membre d’élite
Club MacG
18 Mai 2001
1 039
14
37
Embourg, Belgique
antoine.olbrechts.eu
Voui je veux faire un tableau avec, pour plusieurs raisons, notamment qu'un ORDER BY sur le prix ne donne pas le natural order, et donc j'obtiens :

1
11
13
2
3

au lieu de

1
2
3
11
13


Je vais lire le lien que tu m'as filé ...
Si d'uatres ont des infos, pensez à moi ;-)

Merci !
 

@ybee

Membre d’élite
Club MacG
18 Mai 2001
1 039
14
37
Embourg, Belgique
antoine.olbrechts.eu
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 ...
 

@ybee

Membre d’élite
Club MacG
18 Mai 2001
1 039
14
37
Embourg, Belgique
antoine.olbrechts.eu
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 ?
 

Spyro

Vétéran
Club MacG
19 Juillet 2001
5 428
866
40
PNG-sur-Yvette
Ouaip il faut mettre un point. Je ne crois pas qu'il soit possible de lui faire prendre les virgules. Ah ces américains

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...
 

kabeha

Membre d’élite
Club MacG
13 Mai 2002
1 323
54
56
Bourg en Bresse
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 :)