04. maj 2003 - 19:36Der er
8 kommentarer og 1 løsning
Roll script, lidt mere advanceret..
Jeg har et roll script (som ikke virker): elseif(eregi("^!roll", $msg)){ $db = mysql_connect("localhost", "root" , ""); mysql_select_db("botdb", $db); $foresps = mysql_query("SELECT * FROM roll order by 'id' desc limit 0,1"); while($datu = mysql_fetch_array($foresps)) { $numb = $datu[0];¨ $winnum = rand(1, $numb); } $db = mysql_connect("localhost", "root" , ""); mysql_select_db("botdb", $db); $foresp = mysql_query("SELECT * FROM roll where id = '$winnum'"); while($data = mysql_fetch_array($foresp)) { GuildMessage($color["lgrey"] . ":: ". $color["lblue"]. "The winning number was ". $color["blue"]. $winnum . $color["lblue"].". Winner: " . $color["blue"].$data[1] .$color["lblue"]. "! Grats! (The list was dispanded)"); $insertSQL = "TRUNCATE TABLE roll"; mysql_query($insertSQL);
}
}
Det der sker er: Jeg har en tabel folk bliver added til: [id] [name] 1 test 2 test2 3 test3
[id] er auto_increment.
Det der sker er at den først finder hvor mange der er i listen og så roller den fra 1, (max nummer) hvor den så finder et tal. Den person hvor id = det tal vinder så. Det virker bare ikke.. hvis der er nogen der kender en smartere (der er jo altid en eller anden smart php funktion :) ville det være rart :)
Jeg har prøvet at få det her til at virke, men jeg har ikke kunne finde ud af det, og scriptet bliver bare mere og mere uoverskueligt og hullet :)
Du behøver kun at connecte igen hvis du specifikt har lukket din connection med mysql_close( $db ); hvis ikke selv lukker forbliver din connection åben indlit scriptet slutter.
Men det skulle nu heller ikke skade noget.
hold ORDEN i dine indrykninger. Det er fristende ikke at regulere når man 'lige skal prøve en rettelse' men den eneste det går ud over er dig selv.
er du sikker på der ikke er blevet slettet nogen rækker fra tabellen? det ville give huller i rækkefølgen af id værdier.
nedenstående skulle virke selvom der er huller i rækkefølgen:
$foresps = mysql_query(" SELECT COUNT(*) FROM roll "); // få antallet af rækker $datu = mysql_fetch_row($foresps)); // der er kun een $numb = $datu[0];¨ $winnum = rand(0, $numb-1); // tilfældigt tal
$foresp = mysql_query(" SELECT * FROM roll LIMIT $winnum,1 "); // returnerer række nummer $winnum
$data = mysql_fetch_array($foresp);
GuildMessage($color["lgrey"] . ":: ". $color["lblue"]. "The winning number was ". $color["blue"]. $winnum . $color["lblue"].". Winner: " . $color["blue"].$data[1] .$color["lblue"]. "! Grats! (The list was dispanded)");
$insertSQL = "TRUNCATE TABLE roll"; // Hvad gør du her ? mysql_query($insertSQL);
$foresps = mysql_query("SELECT COUNT(*)FROM roll"); // få antallet af rækker $data = mysql_fetch_row($foresps); // der er kun een $antal = $data[0];¨ $winnum = rand(0, $antal-1); // tilfældigt tal
$foresp = mysql_query("SELECT * FROM roll LIMIT $winnum,1"); // returnerer række nummer $winnum
$data = mysql_fetch_array($foresp);
GuildMessage($color["lgrey"] . ":: ". $color["lblue"]. "The winning number was ". $color["blue"]. $winnum . $color["lblue"].". Winner: " . $color["blue"].$data[1] .$color["lblue"]. "! Grats! (The list was dispanded)");
Ah ja, den var svær at se i 1600x1200 i ultra edit :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.