Forrige | Næste - funktion! Hjælp!

Tags:    php

<< < 12 > >>
Godaften derude, udviklerer!


Jeg har lavet dette lille nedenstående søgescript i php, som søger i en mysql database.
Jeg er pænt ny i det her, og arbejder desværre stadig meget i blinde, og er kommet til 2 problemer som jeg håbede at kunne få hjælp til.

1. Søgefunktionen søger i tabellen "land" og i feltet "sogeord". I dette felt har jeg fx angivet søgeordet "værksted", men hvis man søger på "værk", eller "sted", så dukker resultatet af "værksted" osse op, og dette er ikke meningen. Kun hele og nøjagtige ord skal være søgbare.

2. Jeg skal have lavet en forrige-næste-funktion, som viser 6 resultater af gangen, og derefter skal man kunne trykke 'næste' for at få vist de 6 næste resultater, og 'forrige', ja guess yourself ;)
Jeg ved bare ikke hvordan det skal flettes ind i netop den måde mit script er kodet på, da jeg fandt ud af at et sådan søgescript kan sættes op på de første rigtige mange måder!

Og her kommer så mit nuværende script:

<?
if ($_POST['form'] =="ok") {
$sog = $_POST['sog'];

//Opretter forbindelse her...
mysql_connect("localhost","min-bruger", "*******");
mysql_select_db("min-database");

//Selve søgefunktionen..
$query = mysql_query("SELECT * FROM land WHERE sogeord LIKE '%$sog%' LIMIT 0, 30 ");
($ops = mysql_num_rows($query)); {
echo"<font face=verdana size=1>Du har søgt efter: <b>$sog</b><br>Der blev fundet<b> $ops </b>resultat(er).<br><br></font>";

//Viser resultater fra database...
}
while ($row = mysql_fetch_array($query)) {
if (!$id){
}
{
echo $row['Navn'] . "<br>";
echo $row['Kontakt'] . "<br>";
echo $row['Info'] . "<br>";
}
}
}
?>

På forhånd mange tak for hjælpen! :)



15 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Tror også der skal en "like" i mysql queryet:
Fold kodeboks ind/udKode 




Jeg fjernede, like fra hans fordi han sagde det skulle være nøjagtig. Her er en rettet udgave, hvis den heller ikke virker kan du jo sige hvad den siger af fejl
Fold kodeboks ind/udKode 




hvad gav ikke mening?

du retter din form fra post til get method

Du finder din <form>, finder method="post" og sætter den til method="get" istedet. Soleklart :)

og så aller $_POST tile $_GET.
og skriver
print('<a href="?page='.$i.'&sog='.$_GET['sog'].'">'.$i.'</a>')

Du ændrer alle steder hvor der stor $_POST til $_GET ... præcis som det står ovenfor..



<?
if ($_POST['form'] =="ok") {
$sog = $_POST['sog'];

//Opretter forbindelse her...
mysql_connect("localhost","min-bruger", "*******");
mysql_select_db("min-database");

//Selve søgefunktionen..
$query = mysql_query("SELECT SQL_CALC_FOUND_ROWS,* FROM land WHERE sogeord='$sog' LIMIT ".(($_GET['page']>=1)?$_GET['page']-1:0).", 6 ");
$q=mysql_query("SELECT FOUND_ROWS()");
$rows=mysql_fetch_array($q);
echo "<font face=verdana size=1>Du har søgt efter: <b>$sog</b><br>Der blev fundet<b>".$rows[0]."</b>resultat(er).<br><br></font>";
$pages=ceil($rows[0]/6);
while ($row = mysql_fetch_array($query)) {
if (!$id){
}
{
echo $row['Navn'] . "<br>";
echo $row['Kontakt'] . "<br>";
echo $row['Info'] . "<br>";
}
}
for($i=1;$i<=$pages;$i++){
print('<a href="?page='.$i.'">'.$i.'</a>');
}
}
?>



virker desværre ikk rigtig... Nu vil den slet ikk finde nogle resultater fra min database.



Still nothing! Ingen ændring fra før :(



Jeg får denne fejl:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* FROM land WHERE sogeord='værksted' LIMIT 0, 6' at line 1

- her har jeg så forsøgt med ordet værksted igen.



prøv
Fold kodeboks ind/udKode 




Ok, nu er den godt nok tæt på...

Den vil stadig kun med LIKE '%$sog%'..
Ser man bort fra det, så har den nu regnet antallet af sider ud, men den viser stadig intet resultat på side 2, og 3.. Prøv evt at se http://www.brokkers.dk , og søg på "værksted".

En anden ting er - hvis der nu er resultater til 40 sider, vil linjen med sider for neden så ikke blive voldsomt lang?
Og er det evt. muligt i stedet at flette en " Forrige | Næste " knap ind i stedet?
Eller måske endnu bedre en " <4-5-6 7 8-9-10> " funktion.. men kunne forestille mig at det er sværere..



Indlæg senest redigeret d. 17.03.2008 23:33 af Bruger #13473
nok fordi jeg er glemsom du skal selvfølgelig også sende søgningen med i linksne. og så teste på om det er sat, vil være lettest hvis du retter din form fra post til get method og så aller $_POST tile $_GET.
og skriver
print('<a href="?page='.$i.'&sog='.$_GET['sog'].'">'.$i.'</a>')



<< < 12 > >>
t