Autor Zpráva
qweqwe
Profil *
Zdravim mam dotaz.
Potrebuju poradit jak radit urcity data. Z DB pomoci while vypisu urcity data napr IP adresu na tu IP adresu se napojim a stahnu nejaky data, ty data budou pokazdy jiny a bude to cislo. Tohle cely se mne vypise v poradi razeny podle ID v db. Ale ja bych chtel aby se to radilo podle toho ziskanyho cisla a nvm jak to udelat.
Keeehi
Profil
v dotazu použít
SELECT … … … ORDER BY cislo
cislo - název sloupce, ve kterém jsou uložena ty čísla
qweqwe
Profil *
ale ony prave nejsou v db ty ziskam az vypsanim dat z db
Keeehi
Profil
qweqwe:
Uložte si IP adresy do pole, pak ten obsah stáhněte, přidejte do pole k IP a a nakonec použijte nějakou z funkcí na seřazení pole (záleží na návrhu).

Pokud tedy výsledkem bude asociativní pole ip => cislo, tak bych použil asort

<?php
$data = array("12.214.45.157" => 64631654, "95.65.45.198" => 654321, "84.58.12.1" => 676543218, "154.154.2.96" => 468462);
asort($data);
foreach ($data as $key => $val) {
    echo "$key = $val\n";
}
?>
qweqwe
Profil *
dik za odpoved jeste potrebuju trochu pomoct
1. jak naplnim z DB pole nejak jsem na to neprisel (dosahl jsem jen toho ze jsem ziskal posledni hodnotu)
2. kdyz bych tam chtel z te DB zahrnout napr 2 vysledky a dve ziskany hodnoty? (ted tam je brana jedna hodnota z DB a jedna ziskana)

Moderátor panther: Tvůj projev je špatně srozumitelný, piš prosím s diakritikou.
panther
Profil
qweqwe:
dosahl jsem jen toho ze jsem ziskal posledni hodnotu
cyklus while, tedy nějak takto:
while ($data = mysql_fetch_assoc($result)) {
  var_dump($data); //dumpne každý jednotlivý řádek
}

2. dotaz jsem nepochopil.
qweqwe
Profil *
no nic napisu sem primo ukazku:
while($row = mysql_fetch_assoc($sql)){
//data z db
$a = $row["a"];
$b = $row["b"];
//data ktery ziskam pomoci dat z db
$c = X; //nejaky cislo
$d = X; //nejaky cislo
//pokud ted vypisu ty promenny tak to bude podle poradi v db a ja chcu aby se mne to vypsalo serazeny od nejvetsiho cisla ktery bude v promenne $c.
}

Moderátor panther: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
Moderátor panther: Tvůj projev je špatně srozumitelný, piš prosím s diakritikou.
panther
Profil
qweqwe:
proměnné mezi sebou neseřadíš, potřebuješ mít ty 4 hodnoty v poli a to pole seřadit.
qweqwe
Profil *
no to je mi jasny, ale nevim jak je do toho pole dostanu
panther
Profil
qweqwe:
$data = array();

while($row = mysql_fetch_assoc($sql)){
//data z db
$data['a'] = $row["a"];
$data['b'] = $row["b"];
//data ktery ziskam pomoci dat z db
$data['c'] = X; //nejaky cislo
$data['d'] = X; //nejaky cislo

rsort ($data);
var_dump($data);
//pokud ted vypisu ty promenny tak to bude podle poradi v db a ja chcu aby se mne to vypsalo serazeny od nejvetsiho cisla ktery bude v promenne $c.
}
Keeehi
Profil
qweqwe:
Mám problém s tím tvým kódem. Co je v databázi ve sloupci a a co ve sloupci b? Jestli jsou to obě ip adresy, proč nejsou v jednom sloupci ve dvou záznamech. Potřebuji tedy vlastně vysvětlit, jak ta databáze vypadá.

$c = X; //nejaky cislo
$d = X; //nejaky cislo
-> to znamená co? Představuji si pod tím něco takového:
$c = ziskej_cislo_z_ip($a);
$d = ziskej_cislo_z_ip($b);
Pokud je to jinak, tak mě oprav.
qweqwe
Profil *
respektive $a je ip $b je port, pak se napojim na tuto IP z ni vytahnu data a ty budou v promenny $c a $d obe hodnoty budou cislo
Keeehi
Profil
qweqwe:
Takže k jedné IP budou 2 čísla? Takže výpis bude vypadat takto:
156.1.5.2 - 65496
156.1.5.2 - 89458
45.487.45.5 - 104658
…
?
qweqwe
Profil *
no v podstate jo
Keeehi
Profil
<?php
while($row = mysql_fetch_assoc($sql)){
$a = $row["a"];
$b = $row["b"];

$c = ziskej_cislo_z_ip($a:$b);
$d = ziskej_cislo_z_ip($a:$b);

$data[]=array($a,$c);
$data[]=array($a,$d);
}

function cmp($a, $b)
{
    if ($a[1] == $b[1]) {
        return 0;
    }
    return ($a[1] < $b[1]) ? -1 : 1;
}

usort($data, "cmp");

foreach ($data as $value) {
    echo "IP: $value[0] - $value[1]<br>\n";
}
?>
qweqwe
Profil *
dik udelal jsem to trochu jinak, ale hodne mne tam pomohla jedna cast :)

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: