Avatar billede rampagezz Nybegynder
14. januar 2008 - 07:57 Der er 18 kommentarer og
1 løsning

Problem med Limit

Hej eksperter.

Kan nogen fortælle mig om dette er skrevet forkert.
Den bliver ved med at skrive alle poster ud fra tabellen.

<?php
while($bruger = mysql_fetch_array(mysql_query ("SELECT members.username FROM members, pokaler WHERE members.username = pokaler.medlem LIMIT 1"))) {
?>

- rampagezz
Avatar billede pidgeot Nybegynder
14. januar 2008 - 09:45 #1
Fordi while'n bliver kørt flere gange, så bliver mysql_query'en det også. Du må køre din query inden din while, ellers vil du blive ved med at få det første resultat igen og igen.

Nu er det jo LIMIT 1 du skriver, så i denne situation kunne du bare bruge en if i stedet for en while.
Avatar billede ladyhawke Novice
14. januar 2008 - 09:51 #2
http://php.about.com/od/mysqlcommands/g/Limit_sql.htm

Som jeg kan se det er Limit med 1 parameter ensbetydende med at den tager alt fra rækkenummeret i parameteren og til slut. Hvis du vil have den første række, så er det vist Limit 1,1 du skal have fat i...
Avatar billede pidgeot Nybegynder
14. januar 2008 - 10:22 #3
Syntaksen for LIMIT er LIMIT {[offset,] row_count | row_count OFFSET offset} - med andre ord, offset er valgfri, og angives den ikke (dvs. hvis du kun bruger en værdi), angiver du antallet af rækker der hentes.

I øvrigt ville det have været LIMIT 0, 1, hvis det endelig skulle være.
Avatar billede ladyhawke Novice
14. januar 2008 - 10:29 #4
mht. nul: ja du har ret beklager... men hvis LIMIT 0,1 ikke virker, så er det php'en der skal kigges på
Avatar billede rampagezz Nybegynder
14. januar 2008 - 18:43 #5
Jeg har prøvet at sætte LIMIT til 0,1 og sætte offset, men det virker stadig ikke :-(
Avatar billede pidgeot Nybegynder
14. januar 2008 - 19:33 #6
Læs lige mit indlæg 14/01-2008 09:45:26 igen - det står lige der hvad det er du gør forkert!
Avatar billede rampagezz Nybegynder
14. januar 2008 - 20:03 #7
Jeg har prøvet flere forskellige måder, men forgæves.
Jeg har som det sidste prøvet dette:
<?php
mysql_query ("SELECT members.username FROM members, pokaler WHERE members.username = pokaler.medlem LIMIT 0,1")
while($bruger = mysql_fetch_array()) {
?>
Der viser den blank..
Jeg er rimelig ny til php, men vil gerne give 60point mere, hvis du gad at rette det, så passer.
Avatar billede pidgeot Nybegynder
14. januar 2008 - 20:13 #8
Du er vist i det hele taget ny til programmering...

Når du kan skrive mysql_fetch_array(mysql_query(...)), så er det fordi mysql_fetch_array forventer en værdi af den type, mysql_query returnerer.

Når du ikke har kaldene inde i hinanden, skal du have returværdien fra mysql_query lagt over i en variabel, som du så sender med til mysql_fetch_array.

Dvs.:
<?php
$query = mysql_query ("SELECT members.username FROM members, pokaler WHERE members.username = pokaler.medlem LIMIT 0,1")
while($bruger = mysql_fetch_array($query)) {
?>
Avatar billede rampagezz Nybegynder
14. januar 2008 - 20:46 #9
Det virker stadig ikke.. Har prøvet på en helt ren side..
Avatar billede pidgeot Nybegynder
14. januar 2008 - 23:02 #10
...nå ja, og så skal der også lige et semikolon ind efter slutparantesen ved mysql_query.

Hvis du har sat den, så må du skrive mysql_query(...) or die(mysql_error()); og komme med de fejl du får - får du ingen, så vis os heel dit script.
Avatar billede rampagezz Nybegynder
15. januar 2008 - 08:04 #11
Hvis jeg skriver det således:

<?php
mysql_query ("SELECT members.username FROM members, pokaler WHERE members.username = pokaler.medlem LIMIT 0,1");
while($bruger = mysql_fetch_array()); {
?>

viser den kunne records 1 gang, men så viser den ikke "username", som jeg kalder som det første her:


<table width="350" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="EEEEEE">
  <tr>
    <td align="center" class="brodtekst2"><?php echo $bruger['username']; ?>'s pokaler:</td>
  </tr>
</table>
Avatar billede rampagezz Nybegynder
15. januar 2008 - 08:08 #12
Her har i hele scriptet: (pånær selvfølgelig connection)

<body>
<br>
<?php
mysql_query ("SELECT members.username FROM members, pokaler WHERE members.username = pokaler.medlem LIMIT 0,1");
while($bruger = mysql_fetch_array()); {
?>

<table width="350" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="EEEEEE">
  <tr>
    <td align="center" class="brodtekst2"><?php echo $bruger['username']; ?>'s pokaler:</td>
  </tr>
</table>

<?php
if( isset($_GET['side']) ){
  $side = intval($_GET['side']);
}else{
  $side = 1;
}

$start=($side-1)*8;

$person = mysql_query("SELECT * FROM pokaler ORDER BY dato ASC LIMIT $start,8");
//$person_total = mysql_query("SELECT * FROM pokaler");

?>
<?php



print "<table width='350' border='0' cellpadding='0' cellspacing='0' class='tur_detalje' align='center'><tr>";

$i=0;
while($personen = mysql_fetch_array( $person )) {
    $i++;

    if ($personen[pokal]==""){
        $personen[pokal]="&nbsp;";
    }
    if ($personen[medlem]==""){
        $personen[medlem]="&nbsp;";
    }
    if ($personen[dato]==""){
        $personen[dato]="&nbsp;";
    }
    if ($personen[plads]==""){
        $personen[plads]="&nbsp;";
    }

    print "<td>
            <table align='center'>
                <tr>
                    <td height='20'></td>
                </tr>
                <tr>
                    <td class='menudato'>$personen[dato]</td>
                </tr>
                <tr>
                    <td align='center'><img src='../jpg/$personen[pokal]' width='54' height='78'></td>
                </tr>
                <tr>
                    <td class='brodtekst'>$personen[plads]. Præmie</td>
                </tr>
            </table>
            </td>";


    if( ($i)%4 == 0 ) {
        if($i == 8 ) {// sidste række, der kommer ikke flere
            print "</tr>";
        } else {// afslut nuværende række, forsæt med næste
            print "</tr><tr>";
        }
    }
}
   
if( $i != 8 ) {
print "</tr>";  // hvis der er 3 billeder - skal vi huske at afslutte med </tr> - da vi ikke har gjort det endnu.
}
print "</table>";




?>
<table width="350" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="EEEEEE">
  <tr>
    <td width="175" align="center" class="pokaler">&nbsp;</td>
    <td width="175" align="center" class="pokaler">&nbsp;</td>
  </tr>
  <tr>
<?php
$person_total = mysql_query("SELECT COUNT(*) AS antal FROM pokaler");
$RowAntal = mysql_fetch_assoc( $person_total );
?>
    <td height="20" align="center" class="brodtekst"><?php if( $side != 1 ){ ?><a href="<? $PHP_SELF ?>?side=<?=$side-1?>">forrige</a><? } ?></td>

    <td align="center" class="brodtekst"><a href="<? $PHP_SELF ?>?side=<?=$side+1?>">næste</a></td>

  </tr>
</table>
<?php
}
?>
</body>
</html>
Avatar billede pidgeot Nybegynder
15. januar 2008 - 09:16 #13
Du glemmer stadig at gemme den første query i en variabel, og du må ikke have semikolon ved din while (samme gølder for if og for).

Dvs. at i stedet for
mysql_query ("SELECT members.username FROM members, pokaler WHERE members.username = pokaler.medlem LIMIT 0,1");
while($bruger = mysql_fetch_array()); {

skal du skrive
$query = mysql_query ("SELECT members.username FROM members, pokaler WHERE members.username = pokaler.medlem LIMIT 0,1");
while($bruger = mysql_fetch_array($query)) {
Avatar billede rampagezz Nybegynder
15. januar 2008 - 19:46 #14
Yes.. Så virker det sgu..!
Tusind tak for hjælpen og tålmodigheden.:-)
Avatar billede rampagezz Nybegynder
15. januar 2008 - 19:47 #15
Kom med et svar.
Avatar billede pidgeot Nybegynder
15. januar 2008 - 20:04 #16
S'gerne :)
Avatar billede rampagezz Nybegynder
15. januar 2008 - 20:12 #17
Burde indholdet i while'n ikke kun vises, hvis username og medlem er det samme?
Avatar billede pidgeot Nybegynder
15. januar 2008 - 20:29 #18
Det gør den skam også. Du har bare ikke defineret en betingelse for hvilket medlem der er tale om, derfor tager den hvad den lige finder. :o)
Avatar billede rampagezz Nybegynder
15. januar 2008 - 20:34 #19
Ok.. Prøver at kigge på det.. Ellers må jeg opretter jeg et nyt spørgsmål.. :-)
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
Computerworld tilbyder specialiserede kurser i database-management

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