Miért nem úgy működik?
PHP ban készítenék egy algoritmust, amely egy adatbázis táblában párosítana embereket.
Adatbázis:
id | nev | kit
--------------
2 | xyz |
--------------
.
.
.
--------------
22 | zxy |
Általam készített algoritmus:
$result = mysqli_query($con,"SELECT * FROM users");
while($row = mysqli_fetch_array($result)) {
$szam = $row['id'];
while($szam == $row['id'])
{
$szam = rand(2, 22);
echo $row['id']."Par megtalalva. <br />";
}
$r = mysqli_query($con,"SELECT * FROM users WHERE id='$szam'");
while($t = mysqli_fetch_array($r)) {
$valasztott = $t['nev'];
}
mysqli_query($con, "UPDATE users SET kit='$valasztott' WHERE nev='$username'");
}
Feladata: Keressen egyesével minden falhasználónak egy párt, aki nem saját maga.
Hiba: csak az első embernek keres párt.
Mi okozhatja a hibát?
Hogyan kéne orvosoljam?
Ez érdekes, nekem működik.
Viszont az echo-t ne oda tedd be, ahol most van, mert akkor egy embert többször is kiír, ha elsőre netán saját magát kapná.
Ezen sor alá illeszd be: mysqli_query($con, "UPDATE users SET kit='$valasztott' WHERE nev='$username'");
Még annyit hozzáfűznék, hogy a gyakorlatban nagyon nem célszerű fixen bedrótozni a min. és max. indexet, mert mi van, ha új felvitelre vagy törlésre kerül a sor.
És mi van akkor, ha a törlések miatt már nem folyamatos az id mező számozása?
Szóval én ezt inkább úgy csinálnám, hogy az id értékeit beolvasom egy tömbbe, és a $szam = rand(2, 22) helyett $szam = $tomb[rand(0, $db-1)];
$result = mysqli_query($kapcsolat,"SELECT id FROM user");
while($row = mysqli_fetch_array($result))
{
$tomb[] = $row["id"];
}
$db = count($tomb);
$result = mysqli_query($kapcsolat,"SELECT * FROM user");
while($row = mysqli_fetch_array($result))
{
$szam = $row['id'];
while($szam == $row['id'])
{
$szam = $tomb[rand(0, $db-1)];
}
$r = mysqli_query($kapcsolat,"SELECT * FROM user WHERE id='$szam'");
while($t = mysqli_fetch_array($r))
{
$valasztott = $t['nev'];
echo $row['id']." - ".$row['nev']." - ".$valasztott."<br />";
}
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!