Kezdőoldal » Számítástechnika » Weblapkészítés » Miért nem úgy működik?

Miért nem úgy működik?

Figyelt kérdés

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?



2015. dec. 4. 22:58
 1/2 anonim válasza:

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'");

2015. dec. 5. 07:29
Hasznos számodra ez a válasz?
 2/2 anonim válasza:

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 />";

}

}

2015. dec. 5. 07:48
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!