Avatar billede nielsgron Nybegynder
05. april 2001 - 15:17 Der er 36 kommentarer og
1 løsning

10 resultater i søgning

Jeg vil lave en søgemaskine i PHP, ved hjælp af MySQL. Denne søgemaskine skal kun vise 10 resultater pr. side, så mit spørgsmål er:
Hvordan gøre jeg det?

Indtil videre har jeg fået lavet følgende, så hvad skal ændres?

<?php

$result = mysql_query(\"SELECT navn, beskriv, web, id
                        FROM link
                        WHERE navn LIKE \'%$soeg%\'\");

  if (mysql_num_rows($result)) {
    while ($row = mysql_fetch_array($result))
    echo \"<a href=\'$row[web]\'>
          <b>$row[navn]</b><br>
          $row[beskriv]<br>
          $row[id]<br><br></a>\";
    } else {
    print \"Der var intet søgeresultat\";
    }
?>
Avatar billede disky Nybegynder
05. april 2001 - 15:18 #1
noget med at afslutte din sql string med limit 10
Avatar billede disky Nybegynder
05. april 2001 - 15:19 #2
SELECT navn,beskriv,web,id FROM link WHERE navn like \'%$soeg%\' LIMIT 10

Sådan gør man det :-)
Avatar billede htx98i17 Professor
05. april 2001 - 15:23 #3
ja men han vil jo gerne have en \"næste side\" knap

så du skal skrive

SELECT navn,beskriv,web,id FROM link WHERE navn like \'%$soeg%\' LIMIT $start,10

hvor $start er ved det nummer den skal starte og 10 er det antal den skal finde,

så hvis resultatet er over 10 så laver du et link der hedder
<a href=\"<? $PGP_SELF ?>?start=10\" >Næste side</a>
og er der mere en 20 laver du et link der hedder
<a href=\"<? $PGP_SELF ?>?start=20\" >Næste side</a>

håber det var forståeligt...
Avatar billede disky Nybegynder
05. april 2001 - 15:24 #4
så pyt da.

Avatar billede htx98i17 Professor
05. april 2001 - 15:25 #5
ups tastefejl.. 
<? $PGP_SELF ?>

skulle have været :
<? $PHP_SELF ?>
Avatar billede htx98i17 Professor
05. april 2001 - 15:26 #6
du kan self erstatte <? $PHP_SELF ?>  med det rigtige link...
Avatar billede alsace Nybegynder
05. april 2001 - 15:35 #7
For det ikke skal være løvn\' tror jeg faktisk at der ligger en php tutorial til det du ønsker lige her: http://www.kill-9.dk/ttl_php_more.php

Uddrag fra den indledende tekst:
\"This tutorials isn\'t on a specific PHP or Mysql function it will be about how to span you results over several pages. \"

-Alsace
Avatar billede mortenfn Nybegynder
05. april 2001 - 15:50 #8
lige en lille forbedring:

<a href=\"<?$PHP_self?>?start=<?$start+10?>\" >Næste side</a>

så ændre den selv
Avatar billede disky Nybegynder
05. april 2001 - 15:52 #9
hjælp PHP syntaxt er afskyelig.
Avatar billede htx98i17 Professor
05. april 2001 - 15:52 #10
ja, og så kan han bå\' li\' lave en if-sætning der siger, hvis resultat >10 then print <a href=\"<?$PHP_self?>?start=<?$start+10?>\" >Næste side</a>


:))
Avatar billede mortenfn Nybegynder
05. april 2001 - 17:29 #11
ja og så en if < $start+10

vi kan lave den være endnu
Avatar billede mortenfn Nybegynder
05. april 2001 - 17:29 #12
sådan ser min ud:

<center><table width=\"600\">
<tr><td width=\"60%\" align=\"right\">
<?if($aa>19)    {?><a link href=\"forum.php?aa=<?echo $aa-20;?>&bruger=<?echo $bruger;?>\"><< Forrige 20 </a><?}?></td>
<td width=\"40%\">
<?if(($aa+20)<$antal){?><a link href=\"forum.php?aa=<?echo $aa+20;?>&bruger=<?echo $bruger;?>\">  Næste 20 >> </a><?}?></td>
</tr></table>
Avatar billede mortenfn Nybegynder
05. april 2001 - 17:45 #13
du sal have lidt mere med for at forstå:

$resul = mysql_query(\"SELECT * FROM forum where ny =\'1\'\");
$antal = mysql_num_rows($resul);
$result = mysql_query(\"SELECT * FROM forum where ny =\'1\' order by dato desc LIMIT $aa,20\");

?><center><table width=\"600\">
<tr><td width=\"60%\"><b>Debatter (ialt <?echo $antal; ?>)</td>
    <td width=\"40%\"><b>Oprettet af:</td>
</tr></table><hr width=\"600\"><?

while($row = mysql_fetch_array($result)) {
?>
<center><table width=\"600\">
<tr><td width=\"60%\"> <a link href=\"forum_svar.php?nr=<?php echo $row[\"nr\"];?>&bruger=<?echo $bruger;?>\"><?php echo $row[\"spr\"]; ?></a></td>
    <td width=\"40%\"><?php echo $row[\"bruger\"].\' den \'.date(\"d/m-y\",$row[\"dato\"]); ?></td>
</tr></table>
<?php
}
mysql_free_result($result);
?>
Avatar billede nielsgron Nybegynder
05. april 2001 - 18:25 #14
Det virker ikke, prøv at se om jeg har lavet en fejl:
<?php

$result = mysql_query(\"SELECT navn, beskriv, web, id
                        FROM link
                        WHERE navn LIKE \'%$soeg%\' LIMIT $start,10\");

  if (mysql_num_rows($result)) {
    while ($row = mysql_fetch_array($result))
    echo \"<a href=\'$row[web]\'>
          <b>$row[navn]</b><br>
          $row[beskriv]<br><br></a>\";
    } else {
    print \"Der var intet søgeresultat\";
    }
if $start >10 then print <a href=\"<?$PHP_self?>?start=<?$start+10?>\" >Næste side</a>
?>

Jeg tror det enten har noget at gøre med der hvor der står \"LIMIT $start,1\", eller i den der IF funktion.
Avatar billede htx98i17 Professor
05. april 2001 - 19:10 #15
ja okay, den if ting der var bare for at fortæller hvordan du skulle gøre,

prøv følgende kode, sig hvilke fejl der kommer...

<?php

if(!isset($start) {
   
    $start = 0;
}

$antal = 10;


$result = mysql_query(\"SELECT navn,beskriv,web,id FROM link WHERE navn LIKE \'%$soeg%\' LIMIT $start,$antal \");

    if (mysql_num_rows($result)) {
   
        while ($row = mysql_fetch_array($result)) {
           
          echo \"<a href=\'$row[web]\'>
          <b>$row[navn]</b><br>
          $row[beskriv]<br>
            $row[id]<br><br></a>\";
      }
 
        if(mysql_num_rows($result) >$start ) {
           
            printf(\"<a href=\\\"?naeste=$start+$antal\\\" >Næste side</a>\");
      }
     
    } else {
   
      print \"Din søgning gav intet resultat\";
   
    }
?>
Avatar billede htx98i17 Professor
05. april 2001 - 19:10 #16
jeg har allerede fundet første fejl, og er nu rettet:

<?php

if(!isset($start)) {
   
    $start = 0;
}

$antal = 10;


$result = mysql_query(\"SELECT navn,beskriv,web,id FROM link WHERE navn LIKE \'%$soeg%\' LIMIT $start,$antal \");

    if (mysql_num_rows($result)) {
   
        while ($row = mysql_fetch_array($result)) {
           
          echo \"<a href=\'$row[web]\'>
          <b>$row[navn]</b><br>
          $row[beskriv]<br>
            $row[id]<br><br></a>\";
      }
 
        if(mysql_num_rows($result) >$start ) {
           
            printf(\"<a href=\\\"?naeste=$start+$antal\\\" >Næste side</a>\");
      }
     
    } else {
   
      print \"Din søgning gav intet resultat\";
   
    }
?>
Avatar billede nielsgron Nybegynder
05. april 2001 - 20:58 #17
Nu virker det næsten.
Første gang jeg søger, virker det perfekt, men hvis man så trykker på næste-linket, skriver den bare de 10 links der kommer først i databasen.
Avatar billede htx98i17 Professor
05. april 2001 - 21:00 #18
hvordan ser det linket `\"næste side\" ud ved den allerførste side?
Avatar billede htx98i17 Professor
05. april 2001 - 21:01 #19
prøv dette:

<?php

if(!isset($start)) {
   
    $start = 0;
}

$antal = 10;


$result = mysql_query(\"SELECT navn,beskriv,web,id FROM link WHERE navn LIKE \'%$soeg%\' LIMIT $start,$antal \");

    if (mysql_num_rows($result)) {
   
        while ($row = mysql_fetch_array($result)) {
           
          echo \"<a href=\'$row[web]\'>
          <b>$row[navn]</b><br>
          $row[beskriv]<br>
            $row[id]<br><br></a>\";
      }
 
        if(mysql_num_rows($result) >$start ) {
           
            printf(\"<a href=\\\"?start=$start+$antal\\\" >Næste side</a>\");
      }
     
    } else {
   
      print \"Din søgning gav intet resultat\";
   
    }
?>
Avatar billede nielsgron Nybegynder
06. april 2001 - 19:28 #20
Når jeg trykker på næste-knappen, skriver den, at der er fejl i \"if (mysql_num_rows($result)) {\".
Avatar billede mortenfn Nybegynder
07. april 2001 - 10:46 #21
if(mysql_num_rows($result) >$start+10 ) {

du kommer formentlig ud over antallet af row

prøv at indsætte +10
Avatar billede nielsgron Nybegynder
07. april 2001 - 20:22 #22
Der kommer den samme fejmeddeleles.

>>Mortenfn
Det er den anden
\"if (mysql_num_rows($result)) {\"
Der er problemet.
Avatar billede nielsgron Nybegynder
11. april 2001 - 22:01 #23
Kom nu
Avatar billede mortenfn Nybegynder
11. april 2001 - 22:05 #24
$antal = mysql_num_rows($resul);
$result = mysql_query(\"SELECT * FROM forum where ny =\'1\' order by dato desc LIMIT $aa,10\");

mysql_free_result($result);
?>
<br>
<center><table width=\"600\">
<tr><td width=\"60%\" align=\"right\">
<?if($aa>9){?>
<a link href=\"<?=$PHP_self?>?aa=<?echo $aa-10;?>\"><< Forrige 10 </a>
<?}?>
</td><td width=\"40%\">
<?if(($aa+10)<$antal){?>
<a link href=\"<?=$PHP_self?>?aa=<?echo $aa+10;?>\">  Næste 10 >> </a>
<?}?>

kan du kloges af dettte
Avatar billede nielsgron Nybegynder
12. april 2001 - 15:10 #25
Jeg fatter ikke en pind af det der :(
Kan du ikke tilpasse det, så det passer med mit script, og så forklare, hvad der er du har gjordt?
Avatar billede mortenfn Nybegynder
12. april 2001 - 15:13 #26
hvilken af de ovenstående er det så?

Avatar billede nielsgron Nybegynder
12. april 2001 - 15:41 #27
Det oprindelige er:
<?php

$result = mysql_query(\"SELECT navn, beskriv, web, id
                        FROM link
                        WHERE navn LIKE \'%$soeg%\'\");

  if (mysql_num_rows($result)) {
    while ($row = mysql_fetch_array($result))
    echo \"<a href=\'$row[web]\'>
          <b>$row[navn]</b><br>
          $row[beskriv]<br>
          $row[id]<br><br></a>\";
    } else {
    print \"Der var intet søgeresultat\";
    }
?>

Men du må godt døre det på det som ham det htx.. var ved at hjælpe mig med, før han åbenbart opgav.
Det er dette:

<?php

if(!isset($start)) {
   
    $start = 0;
}

$antal = 10;


$result = mysql_query(\"SELECT navn,beskriv,web,id FROM link WHERE navn LIKE \'%$soeg%\' LIMIT $start,$antal \");

    if (mysql_num_rows($result)) {
   
        while ($row = mysql_fetch_array($result)) {
           
          echo \"<a href=\'$row[web]\'>
          <b>$row[navn]</b><br>
          $row[beskriv]<br>
            $row[id]<br><br></a>\";
      }
 
        if(mysql_num_rows($result) >$start ) {
           
            printf(\"<a href=\\\"?start=$start+$antal\\\" >Næste side</a>\");
      }
     
    } else {
   
      print \"Din søgning gav intet resultat\";
   
    }
?>

Avatar billede mortenfn Nybegynder
12. april 2001 - 15:58 #28
nu kan jeg jo ikke tæste det:

<?php
$result = mysql_query(\"SELECT navn,beskriv,web,id FROM link WHERE navn LIKE \'%$soeg%\'\");

if (mysql_num_rows($result)) {
while ($row = mysql_fetch_array($result))
echo \"<a href=\'$row[web]\'><b>$row[navn]</b><br>$row[beskriv]<br>$row[id]<br><br></a>\";
    } else {
    print \"Der var intet søgeresultat\";
    }
?>

Men du må godt døre det på det som ham det htx.. var ved at hjælpe mig med, før han åbenbart opgav.
Det er dette:

<?php

if(!isset($aa)) {
$aa = 0;
}

$result = mysql_query(\"SELECT navn,beskriv,web,id FROM link WHERE navn LIKE \'%$soeg%\' LIMIT $aa,10 \");

if (mysql_num_rows($result)) {
while ($row = mysql_fetch_array($result)) {
echo \"<a href=\'$row[web]\'><b>$row[navn]</b><br>$row[beskriv]<br>$row[id]<br><br></a>\";
}
if(mysql_num_rows($result)>0 ) {
$antal=mysql_num_rows($result);
?><center><table width=\"600\">
<tr><td width=\"60%\" align=\"right\">
<?if($aa>9){?>
<a link href=\"<?=$PHP_self?>?aa=<?echo $aa-10;?>\"><< Forrige 10 </a>
<?}?>
</td><td width=\"40%\">
<?if(($aa+10)<$antal){?>
<a link href=\"<?=$PHP_self?>?aa=<?echo $aa+10;?>\">  Næste 10 >> </a>
<?}?>
</td></tr></table><?
}}
else {
print \"Din søgning gav intet resultat\";
}
?>
Avatar billede nielsgron Nybegynder
14. april 2001 - 00:17 #29
Der kommer altså ikke nogen knap, selvom der er flere søgeresultater.
Avatar billede mortenfn Nybegynder
14. april 2001 - 00:37 #30
det er altid svært at indpasse noget i en andens script - især når man ikke kan tæste.


fjern denne linje:

if(mysql_num_rows($result)>0 ) {

og den ene her }} i 5. sidste linje
Avatar billede mortenfn Nybegynder
14. april 2001 - 00:38 #31
flyt denne linje op under din select

$antal=mysql_num_rows($result);
Avatar billede mortenfn Nybegynder
14. april 2001 - 00:39 #32
teste ikke tæste
Avatar billede mortenfn Nybegynder
14. april 2001 - 00:42 #33
det er ikke en knap men et link
Avatar billede nielsgron Nybegynder
14. april 2001 - 12:00 #34
Nope....
Det hjælper ikke.
Avatar billede mortenfn Nybegynder
14. april 2001 - 12:27 #35
hmm. du kan downloade mit forum her - Filen fprum.php indeholder funktionen og virker fint
Avatar billede nielsgron Nybegynder
14. april 2001 - 13:23 #36
Hvor er \"her\"?
Avatar billede mortenfn Nybegynder
14. april 2001 - 13:42 #37
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