Jeg har ændret i script koden og tilføjet nogle af dine ændringer..
Du kan prøve scriptet, se info om PHP Version og se den nye kode her:
http://www.thetop.1go.dk/side.php
Jeg håber jeg har besvaret den korrekt..
Læs nedenfor..
> Bo Larsen wrote:
> > Hvis jeg sætter $_GET['s'] ind i stedet for $s laver den en SQL fejl...
>
> Det lyder absurd - hvis det er samme sted vi snakker om - jeg snupper
> lige hele koden med en række kommentarer herunder. Noget andet er:
> hvilken fejl?
>
> Men inden da:
> Det er en del lettere at svare når du svarer _under_ det du svarer på -
> så kan man læse koden i sammenhæng. (også selv om jeg må tilstå at jeg
> ikke gjorde det
).
>
> Hold debatten her i gruppen - min mail har ikke noget med det at gøre.
Ja, det skal jeg nok...
Jeg kom bare til at besvar i stedet for svar til gruppe..
>
> > ....Info....
> > Søgemaskinen er sat op til at vise 5 resultater pr. side, dvs. hvis der
er 7
> > resultater laver den et link til næste side.
> > Alt dette virker fint.
>
> Dvs - den laver linket. Står der det i linket, som der skal?
Linket er som det skal være.. det bliver dog ikke vist på den næste side..
>
> > ....Problem.....
> > Men mit problem er at den ikke viser resultat nr. 6 og 7 på den næste
side,
> > siden er helt blank.
> > Hvis jeg bruger scriptet "udenfor" søgemaskinen, dvs. til at vise
nyheder
> > eller sådan noget, så virker det fint altsammen.
>
> Så må du jo prøve at lave det ligesom det udenfor, og så ændre skridt
> for skridt - så kan du se hvor og hvornår det går galt. Det kan være
> drøjt, så se nedenfor
Det har jeg prøvet.. og jeg har stadig ikke opfattet fejlen..
... men det kan også bare være mig, der er helt væk...
>
> Bo Larsen wrote:
> > $pr_side = "5"; //Definerer antal resultater pr. side
> >
> > if($_POST[search]){
>
> 1) Hvorfor ikke if(isset eller if(!empty ?
> 2) det skal være $_POST['search'] (med anførselstegn - da det er en
> streng, $mitArray[1] er kun ok fordi 1 er et tal)
Jeg har ændret det til if(isset ($_POST['search'])){
>
> > connect_db();
> >
> > if (!isset($s)) {
>
> Det er _her_ du skal ha helt styr på om det er $s fra URL'en - som så er
> $_GET['s'] - der skal bruges... Forskellen på $s og $_GET['s'] opstod
> for ikke så afsindigt længe hvor den (dengang) nye PHP version ikke var
> sat til at have register_globals til on som default. Det er smart, men
> kan snyde hvis man ikke er obs på det.
> (Keyword er 'register_globals' hvis du skal læse mere om det.)
Jeg har indsat $_GET['s'] i stedet for $s, men det har ikke hjulpet..
Den fejl der opstod før syldes at jeg brugte $_GET['s'] i stedet for
$_GET[s] inde i "select...."
>
> > $s = "0"; //Tjekker om $s - som står for start - er sat, hvis ikke
> > sættes den
> > }
>
> > echo "<table border='1'>\n";
> > echo "<tr><td>Id</td><td>Bogstav</td></tr>\n";
> >
> > $query = mysql_query("select id from alfabetet where bogstav like
> > '$_POST[search]%' order by id asc limit $s,$pr_side") or
> die(mysql_error());
>
> Det er jo nydeligt - og så alligevel:
> 1) hvis du bruger formen:
> $MQuery="select id from alfabetet where bogstav like '$_POST[search]%'
> order by id asc limit $s,$pr_side";
>
> $query = mysql_query($MQuery) or die(mysql_error());
>
Overstående er tilføjet i stedet for det eksisterende..
> så har du (ret let) mulighed for at køre en
>
> echo $MQuery;
Jeg er ikke helt med hvor echo $MQuery; skal stå..
>
> og sikre dig at der kommer til at stå det du forventer i det du sender
> til databasen.
>
> 2) "SELECT id FROM alfabetet WHERE bogstav LIKE...
>
> er faktisk lettere at læse - brug det
>
> > $nr = mysql_num_rows($query);
> >
> > if ($nr > 0) {
>
Jeg har slettet overstående..
> Det er faktisk helt overflødigt. While'en nedenfor skal nok lade være
> med at gøre noget hvis der ikke er nogen rækker i $query.
>
> > while($row = mysql_fetch_array($query)){
> > echo "<tr><td>$row[id]</td><td>$row[bogstav]</td</tr>\n";
>
> Hvor regner du med at den får 'bogstav' fra? - du har ikke bedt om den i
> SQL'en
Denne bliver ikke brugt $row[bogstav] og er blevet slettet..
>
> > }
> >
> > echo "<tr><td colspan='2'>";
> >
> > $g_total = mysql_query("select count(id) as total from alfabetet where
> > bogstav like '$_POST[search]%'") or die(mysql_error());
> > $total = mysql_result($g_total,0);
> >
> > if ($s >= $pr_side) { //Tjekker om værdien af $s er større eller lig
> > $pr_side
> > $previous_s = $s-$pr_side; //Regner ud hvor mysql skal starte hvis
> > forrige side kaldes
> > echo "<a href='?s=$previous_s'>Forrige</a> "; //Udskriver linket
> > }
> >
> > $page = 1; //Definerer hvor sidetal skal starte
> > for($start=0; $total > $start; $start=$start+$pr_side){ //For-løkke der
> > kører indtil der ikke er nok rows til en side mere
> > if ($start != $s) { //Tjekker om linket vil komme til at pege på
den
> > side man er på
> > echo "<a href='?s=$start'>$page</a> "; //...hvis ikke,
udskrives
> > link med værdien af $page
> > } else { //Ellers, dvs. hvis linket vil pege på den side man er
på..
> > echo "$page "; //...udskrives værdien af $page bare, altså
> ikke som
> > link
> > }
> > $page++; //Lægger en til $page til næste gang løkken køres
> > }
> >
> > if ($total > $s+$pr_side) { //Tjekker om der er flere sider
> > $next_s = $s+$pr_side; //Regner ud hvor mysql skal starte hvis
næste
> > side kaldes
> > echo "<a href='?s=$next_s'>Næste</a>"; //Udskriver linket "næste"
> > }
> >
> > echo "</td></tr>\n";
> > echo "</table>\n";
> > }
> > }
>
> Hvis alt det ovenfor ikke giver noget så må dit næste skridt vist blive
> at sætte echo ind på fx $s et par gange undervejs, så du er sikker på at
> variablerne indeholder det som du mener de skal indeholde
>
> Jeg håber det hjalp
>
> mvh
>
> Jesper Brunholm