[PHP / SQL] Tri des adresses IP [Résolu/Fermé]

Signaler
Messages postés
109
Date d'inscription
mardi 12 mai 2009
Statut
Membre
Dernière intervention
6 septembre 2013
-
 Tom -
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
109
Date d'inscription
mardi 12 mai 2009
Statut
Membre
Dernière intervention
6 septembre 2013
1
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é :/
Si, pour ça ça marche. Qu'as-tu fait ?
Messages postés
109
Date d'inscription
mardi 12 mai 2009
Statut
Membre
Dernière intervention
6 septembre 2013
1
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 =)
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`)";