Autor Zpráva
Radicz
Profil *
Zdravim všechny a prosim o pomoc. V databázi mam IP sítí např. xx.xx.xx.16. Mam ukol je, že mam ip adresu xx.xx.xx.70. A mam najít síť v databázi která je nejblíže k tomu IP zadanému. Myslel jsem že udělam dotaz že hledam IP které by bylo menší a zároveň větší než IP aleee to ki nefunguje prosim o pomoc.
<?php

require ("sql.inc.php"); 

$adresa = "xx.xx.xx.70";

function ip($ip)
{
  $pole = explode(".", $ip);
  $ipcko = $pole[3];
  
  $dotaz = mysql_query ("SELECT SUBSTRING_INDEX(ip, '.', '-1') AS ip_made FROM ip_rozsahy WHERE ip_made > $pole[3] AND ip_made < $pole[3]");
  while($vysledek = mysql_fetch_array($dotaz))
  {
      echo $vysledek['ip_made'];
  } 


}

echo ip($adresa);
?>
bohyn
Profil
Takhle nejak by to snad slo pres MySQL. ORDER BY by se muselo menit podle toho jestli je hledana IP vetsi nebo mensi nez vychozi.
$ip1 = "mensi_ip"
$ip2 = "vetsi_ip";

$query = 
"SELECT ip
FROM ip_rozsahy
WHERE strcmp(ip, '".$ip1."') = 1 AND strcmp(ip, '".$ip2."') = -1
ORDER BY ip DESC
LIMIT 1"; 
V PHP se da pouzit fce ip2long() ktera ti IP prevede na cislo a to pak v cyklu porovnavas jestli je vetsi nebo mensi.

Ja ukladani IP resim tak, ze je ukladam jako INT a pak je otazka trivialniho dotazu najit hledanou IP nebo rozsah. Je to rychlejsi nez hledat string a jeste usetris par bytu na radek.
Radicz
Profil *
Díky za radu ale $ip1 a $ip2 neznam....Mohl by mi prosim někdo poradit jak mam udělat to aby mi z čísel v databázi vybral vždy jen to nejbližší tomu hledanému ? děkuji.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: