Avatar billede kwudo Nybegynder
29. marts 2008 - 22:36 Der er 13 kommentarer og
1 løsning

Udskriv flere gange?

Hej Eksperter.

Jeg er ved at lave en konkurrence side hvor en bruger køber lodder i forskellige konkurrencer.
Når jeg skal finde en vinder udskriver den brugerens brugernavn ligeså mange gange, som de har lodder.
Her skal så være et nyt nummer foran hvergang brugerens navn kommer.

Men sådan her ser det ud nu:

1.
testtesttesttesttesttesttesttesttest

I stedet for som det skal se ud:

1. test
2. test
3. test
4. test
5. test
6. test
7. test
8. test
9. test

Sådan her ser min kode ud:

<?

include("../inc/cfg.php");

$hent = mysql_query("SELECT * FROM gg_konkurrencer WHERE id = '$_GET[id]'");
$vis = mysql_fetch_array($hent);

$hent_user = mysql_query("SELECT * FROM gg_lodder WHERE konkurrence = '$vis[id]'");
$vis_user = mysql_fetch_array($hent_user);

$nummer = 0;

$hent_a = mysql_query("SELECT * FROM gg_lodder WHERE konkurrence = '$vis[id]' ORDER BY id DESC") or die(mysql_error());
if(mysql_num_rows($hent_a)) {
while($vis_a = mysql_fetch_array($hent_a)) {

$nummer++;

$bruger = mysql_query("SELECT * FROM gg_user WHERE id = '$vis_a[ejer]'");
$haha = mysql_fetch_array($bruger);

?>
<table border="1" width="100%">
    <tr>
        <td><? echo $nummer; ?></td>
        <td><? echo str_repeat($haha[username],$vis_a[lodder]); ?></td>
    </tr>
</table>
<br>
<?
}
}
?>

Nogen der kan hjælpe?
Avatar billede fant0mas Nybegynder
29. marts 2008 - 23:09 #1
Ja, men det er en forfærdelig masse querys du har gang i.
Vil hellere se dine tabeller.
Avatar billede fant0mas Nybegynder
29. marts 2008 - 23:27 #2
Efter hvad jeg kan se, kan du nøjes med:
<?
include("../inc/cfg.php");

$nummer = 0;
$query = mysql_query(sprintf("SELECT * FROM gg_lodder WHERE konkurrence = '%d' ORDER BY id DESC",mysql_real_escape_string($_GET['id']))) or die(mysql_error());
while($vis = mysql_fetch_array($query)) {
?>
<table border="1" width="100%">
    <tr>
        <td><? echo $nummer; ?></td>
        <td><? echo $vis['ejer'].' - '.$vis['lodder']; ?>
        </td>
    </tr>
</table>
<br>
<?
$nummer++;
}
?>

Men hvor ser du hvem vinderen er?
Avatar billede kwudo Nybegynder
29. marts 2008 - 23:39 #3
meningen er den skal danne en liste f.x.:

1. Bruger1
2. Bruger1
3. Bruger1
4. Bruger2
5. Bruger2
Avatar billede kwudo Nybegynder
29. marts 2008 - 23:39 #4
og så vælger computeren et random tal mellem 1-5
Avatar billede fant0mas Nybegynder
30. marts 2008 - 12:55 #5
Men øverst skriver du scriptet skal finde en vinder, og udskrive personen * lodder. Jeg er forvirret :o|
Men hvis du rettter ORDER BY id
til
ORDER BY ejer ASC
Avatar billede kwudo Nybegynder
30. marts 2008 - 14:05 #6
Okay det fungere på følgene måde:

man har en bruger og så har man nogle lodder ens lodder ligger i gg_loder hvor ejer = brugerid og lodder = antal lodder.

Her skal brugerens navn så udskrives ligeså mange gange han/hun har lodder, med med et nyt tal foran hver gang.

Dvs hvis der er to brugere skal det se nogenlunde sådan her ud:

1. Bruger1
2. Bruger1
3. Bruger1
4. Bruger2
5. Bruger2

Jeg har fået hjælp af en ven, og har følgene kode:

http://artoportalen.dk/gavegratis/konkurrencer/udloes_2.php?id=1

Her kan scriptet ses samt koden nederst.

Problemet er nu bare at haha brugeren bliver udskrevet 50 gange med nyt nummer hver gang (Det rigtig nok) hvad der ikke er rigtig er når test bliver udskrevet begynder den os med nummer 1 osv. den skal begynde med nr. 51.
Så der er ikke findes to ens tal.

Herefter skal computeren så genere et tilfældigt tal.
På den måde har dem med flest lodder jo større chance :)
Avatar billede fant0mas Nybegynder
30. marts 2008 - 14:27 #7
Prøv:
<?
include("../inc/cfg.php");


$query = mysql_query(sprintf("
SELECT gg_lodder.lodder, gg_user.username
FROM gg_lodder
LEFT JOIN gg_user
ON gg_lodder.ejer = gg_user.id
WHERE konkurrence = '%d' ORDER BY id DESC",mysql_real_escape_string($_GET['id']))) or die(mysql_error());
$nummer = 1;
while($vis = mysql_fetch_assoc($query)) {
?>
<table border="1" width="100%">
    <tr>
        <td><? echo $nummer; ?></td>
        <td><? echo $vis['username'].' - '.$vis['lodder']; ?>
        </td>
    </tr>
</table>
<br>
<?
$nummer++;
}
?>
Avatar billede kwudo Nybegynder
30. marts 2008 - 14:38 #8
Avatar billede fant0mas Nybegynder
30. marts 2008 - 14:44 #9
ORDER BY id DESC
byt til:
ORDER BY gg_lodder.id DESC
Avatar billede kwudo Nybegynder
30. marts 2008 - 14:48 #10
http://artoportalen.dk/gavegratis/konkurrencer/udloes_2.php?id=1

Nu udskriver den: 1. Haha - 50 og 2. test - 108

Meningen er den skal udskrive haha 50 gange med nyt nummer foran hver gang, og det samme med test, 108 gange med start ved det nummer haha sluttede ved :)
Avatar billede fant0mas Nybegynder
30. marts 2008 - 14:52 #11
Argh, jeg kan se du bare har et antal du opdaterer for hvert lod. Det ville være bedre, hvis du indsatte en række for hvert lod.
Avatar billede kwudo Nybegynder
30. marts 2008 - 14:55 #12
Ja det selvfølgelig rigtig nok, men hvordan får man den til at indsætte 100 f.x. hvis man vælger at købe 100 lodder:

sådan ser insert ud:

mysql_query("INSERT INTO gg_lodder (ejer, konkurrence, lodder, ip) VALUES ('$show[id]', '$vis[id]', '$_POST[antal]', '$ip')") or die(mysql_error());
Avatar billede fant0mas Nybegynder
30. marts 2008 - 14:58 #13
<?
$antal = $_POST[antal];
if(!is_numeric($antal)) die ('Ikke gyldigt antal');
for($i=1;$i<=$antal;$i++){
mysql_query("INSERT INTO gg_lodder (ejer, konkurrence, lodder, ip) VALUES ('$show[id]', '$vis[id]', '$_POST[antal]', '$ip')") or die(mysql_error());
}
?>
Avatar billede kwudo Nybegynder
24. oktober 2009 - 17:32 #14
svar
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester