[PHP / SQL] Tri des adresses IP

Résolu/Fermé
LeHigh Messages postés 109 Date d'inscription mardi 12 mai 2009 Statut Membre Dernière intervention 6 septembre 2013 - 20 mai 2009 à 10:28
 Tom - 7 juil. 2009 à 10:47
Bonjour les gens,

Mon problème est que je dois afficher des informations sur des adresses ip dans un tableau, que je peux trier par ordre croissant ou decroissant j'y arrive sauf pour les adresses IP justement ou ca ne tri pas correctement.

Je vous donne le code:

echo '<table width="99%" border=1 cellspacing=0>';
echo '<tr align="center">';
echo '<td class="fondjaunepale_txtbleu12g" width="10%">Adresse IP<br><a href="ip.php?t=ip&o=asc"><img src="../images/flecheu.gif" border=0></a>  <a href="ip.php?t=ip&o=desc"><img src="../images/fleched.gif" border=0></a></td>';
echo '<td class="fondjaunepale_txtbleu12g" width="10%">Masque<br><a href="ip.php?t=masque&o=asc"><img src="../images/flecheu.gif" border=0></a>  <a href="ip.php?t=masque&o=desc"><img src="../images/fleched.gif" border=0></a></td>';
echo '<td class="fondjaunepale_txtbleu12g" width="10%">Passerelle<br><a href="ip.php?t=passerelle&o=asc"><img src="../images/flecheu.gif" border=0></a>  <a href="ip.php?t=passerelle&o=desc"><img src="../images/fleched.gif" border=0></a></td>';

echo '</table>';
echo '</td></tr>';
echo '<td>';

?>
<div class="tab">
<?
if (isset ($_REQUEST['t']) && isset ($_REQUEST['o'])) {
if (isset ($_REQUEST['vue']) && $_REQUEST['vue'] == 'del') {
$req = "SELECT * FROM ip WHERE affect_ip = 'd' ORDER BY".$_REQUEST['t']." ".$_REQUEST['o'];
} else {
$req = "SELECT * FROM ip WHERE affect_ip != 'd' ORDER BY".$_REQUEST['t']." ".$_REQUEST['o'];
}
} else {
if (isset ($_REQUEST['vue']) && $_REQUEST['vue'] == 'del') {
$req = "SELECT * FROM ip WHERE affect_ip = 'd' ORDER BY ref_ip ASC";
} else {
$req = "SELECT * FROM ip WHERE affect_ip != 'd' ORDER BY ref_ip ASC";
}
}
$res = mysql_query ($req);
$nt = mysql_num_rows($res);
echo '<table width="100%" border=1 cellspacing=0>';
while ($ligne = mysql_fetch_array ($res))
{
$ref = $ligne[0];
$ip = $ligne[1];
$msk = $ligne[2];
$psrl = $ligne[3];

echo '<tr align="center" class="fondblanc_txtbleu12">';

echo '<td width="10%">'.empti($ip).'</td>';
echo '<td width="10%">'.empti($msk).'</td>';
echo '<td width="10%">'.empti($psrl).'</td>';
}

Donc si quelqu'un peut m'aider à trouver mon problème ca serait sympa =)

merci

5 réponses

Bonjour

Je ne sais pas ce que fait exactement ton tri et en quoi il ne te plaît pas, mais pour trier les adresses IP il est souvent judicieux d'utiliser la fonction INET_ATON qui transforme une adresse IP en nombre
... ORDER BY INET_ATON(ref_ip)
1
LeHigh Messages postés 109 Date d'inscription mardi 12 mai 2009 Statut Membre Dernière intervention 6 septembre 2013 1
20 mai 2009 à 11:00
Le tri dans les adresses IP e me convenait pas dans le sens ou ca se trie pas dans l'ordre.
par exemple mes adresses se trie comme ca

172.27.152....
172.27.153....
172.27.154....
172.27.52....
172.27.34....
Et d'autres bétises du genre en ordre decroissant


Mais j'ai déjà essayé avec INET_ATON, ca à pas marché :/
0
Si, pour ça ça marche. Qu'as-tu fait ?
0
LeHigh Messages postés 109 Date d'inscription mardi 12 mai 2009 Statut Membre Dernière intervention 6 septembre 2013 1
20 mai 2009 à 11:19
Non bah si désolé ca marche j'ai l'impression; j'ai mis

echo '<td class="fondjaunepale_txtbleu12g" width="10%">Adresse IP<br><a href="ip.php?t=INET_ATON(ip)&o=asc"><img src="../images/flecheu.gif" border=0></a> <a href="ip.php?t=INET_ATON(ip)&o=desc"><img src="../images/fleched.gif" border=0></a></td>';

au lieu de

echo '<td class="fondjaunepale_txtbleu12g" width="10%">Adresse IP<br><a href="ip.php?t=ip&o=asc"><img src="../images/flecheu.gif" border=0></a> <a href="ip.php?t=ip&o=desc"><img src="../images/fleched.gif" border=0></a></td>';

Je pensais l'avoir fait mais comme j'ai touché à tout dans le code, j'ai du modifier les requêtes ou j'ai mis ca, bref,
merci beaucoup le père =)
0

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

Posez votre question
Merci cela m'a aidé aussi dans ma requete :

$query = "SELECT `premiere_adresse`,`derniere_adresse`,`id_plage` as id,`entite_has_tb_rezo_reseauIP_entite_eid` as nom_ent FROM plages where entite_has_tb_rezo_reseauIP_tb_rezo_reseauIP_id_reseauIP='".$vlan."' UNION SELECT `premiere_adresse`,`derniere_adresse`,`id_dhcp_dynamique` as id,'null' as nom_ent FROM dhcp_dynamique where tb_rezo_reseauIP_id_reseauIP='".$vlan."' ORDER BY INET_ATON(`premiere_adresse`)";
0