Hallo,
Dit kan volgens mij nogal een ingewikkelde vraag zijn, dus zal ik eerst alles even uitleggen:
Over wat voor script hebben we het en wat is er mis mee:
Het is in feite een zoekmachine. Het werkt met FULLTEXT. Er wordt op de ene pagina iets ingevoerd en op de andere pagina krijg je dan zoiets: anderepagina.php?words=(de woorden die zijn ingevuld). Die woorden die zijn ingevuld worden er met $_GET uitgehaald en in een fulltext-query gestopt. Dan worden door middel van de rest van het script de resultaten op het scherm geladen, en er wordt paginanummering toegevoegd. Daar zit het probleem: je hebt bijv. dit: pagina 1.. 2.. einde. Dan staat er bijv. op pagina 1 dit:
"hallo" en op pagina 2 zou dan bijv. "doei" moeten staan. Maar dat is niet zo: op pagina 2 staat dan ook gewoon "hallo"!! Het is dus in feite een onveranderbare entry!
Het script zelf:
Dit is het script zelf:
ik weet dat het een beetje een lang script is, maar anders denk ik dat het bij jullier niet echt duidelijk wordt.
Vraag:
Weet iemand waar hier de fout kan zitten en wat eraan gedaan kan worden?
Alvast bedankt!
Dit kan volgens mij nogal een ingewikkelde vraag zijn, dus zal ik eerst alles even uitleggen:
Over wat voor script hebben we het en wat is er mis mee:
Het is in feite een zoekmachine. Het werkt met FULLTEXT. Er wordt op de ene pagina iets ingevoerd en op de andere pagina krijg je dan zoiets: anderepagina.php?words=(de woorden die zijn ingevuld). Die woorden die zijn ingevuld worden er met $_GET uitgehaald en in een fulltext-query gestopt. Dan worden door middel van de rest van het script de resultaten op het scherm geladen, en er wordt paginanummering toegevoegd. Daar zit het probleem: je hebt bijv. dit: pagina 1.. 2.. einde. Dan staat er bijv. op pagina 1 dit:
"hallo" en op pagina 2 zou dan bijv. "doei" moeten staan. Maar dat is niet zo: op pagina 2 staat dan ook gewoon "hallo"!! Het is dus in feite een onveranderbare entry!
Het script zelf:
Dit is het script zelf:
PHP:
/********
* Show all errors
********/
error_reporting(E_ALL);
ini_set("display_errors", 1);
//link_id even uitleggen
$link_id = mysql_connect
// je weet wel wat er nu komt
//variabelen defineren
define("MIN_PER_PAGE", 5);
define("MAX_PER_PAGE", 20);
define("DEF_PER_PAGE", 10);
define("THIS_PAGE", $_SERVER['PHP_SELF']);
class Page_numbers {
var $table = "VGB_ENTRY";
var $condition = "WHERE ''";
var $total_records;
var $mpp;
var $total_pages;
var $page;
var $offset;
var $query_string;
//variabelen uitleggen
function Page_numbers($table, $condition="", $link_id=NULL)
{
$this->table = $table;
$this->condition = $condition;
$this->link_id = $link_id;
$countdata = $this->fetch_data("COUNTRY");
$this->total_records = count($countdata);
$this->mpp = isset($_GET['mpp']) && is_numeric($_GET['mpp']) && $_GET['mpp'] >= MIN_PER_PAGE && $_GET['mpp'] <= MAX_PER_PAGE ? $_GET['mpp'] : DEF_PER_PAGE;
$this->total_pages = ceil($this->total_records / $this->mpp);
$this->page = isset($_GET['page']) && is_numeric($_GET['page']) && $_GET['page'] > 0 && $_GET['page'] <= $this->total_pages ? $_GET['page'] : 1;
$this->offset = ($this->page - 1) * $this->mpp;
$this->query_string = $this->get_query_string();
}
//data verzamelen uit de database
function fetch_data()
{
$data = "";
$searchstring = mysql_real_escape_string($_GET['words']);
$res = mysql_query("SELECT
COUNTRY,
ENTRY,
EMAIL,
HIDEEMAIL,
MATCH( COUNTRY, ENTRY ) AGAINST ( '$searchstring' ) AS score
FROM
VGB_ENTRY
WHERE
MATCH( COUNTRY, ENTRY ) AGAINST ( '$searchstring' IN BOOLEAN MODE)
AND UNMODERATED = 0
ORDER BY
score DESC");
while($row = mysql_fetch_assoc($res))
{
$data[] = $row;
}
return $data;
}
//string opmaken
function get_query_string($query_string="")
{
foreach($_GET as $key => $value)
{
if($key != 'page' && $key != 'mpp')
{
$query_string .= '&'.$key.'='.$value;
}
}
return $query_string;
}
//Message Per Page upmaken en terug geven.
function show_mpp()
{
$str = '<script type="text/javascript" language="javascript1.5">
<!--
function openUrl()
{
var control = document.getElementById(\'mpp\');
window.location = "'.THIS_PAGE.'?page=1&mpp="+control.options[control.selectedIndex].value+"'.str_replace('&', '&', $this->query_string).'";
}
//-->
</script>
<select id="mpp" onchange="openUrl();">';
for($i=MIN_PER_PAGE; $i<=MAX_PER_PAGE; $i+=5)
{
$str .= '<option value="'.$i.'"'.($i == $this->mpp ? ' selected="selected"': '').'>'.$i.'</option>'."\r\n";
}
return $str.'</select>';
}
//Previous & Next links
function prev_next()
{
$str = ($this->page > 1) ? '<a href="searchresults.php?page='.($this->page-1).'&mpp='.$this->mpp.$this->query_string.'" title="Previous Page">««previous</a>' : '<span style="color:#aaa">««previous</span>';
$str .= ' ';
$str .= ($this->page < $this->total_pages) ? '<a href="searchresults.php?page='.($this->page+1).'&mpp='.$this->mpp.$this->query_string.'" title="Next Page">next»»</a>' : '<span style="color:#aaa">next»»</span>';
return $str;
}
//Pagenumbers opmaken en weergeven
function show_page_numbers($num_page_links=7)
{
if($this->total_pages > 1)
{
$num_page_links = $num_page_links % 2 ? $num_page_links : $num_page_links + 1;
$pagenumbers = 'Page: <strong>'.$this->page.'</strong> of '.$this->total_pages.'<br />';
if($this->total_pages > $num_page_links)
{
$cutoff = floor($num_page_links / 2);
$start = $this->page - $cutoff;
$end = $this->page + $cutoff;
/********
* No Pagenumbers Less then 1 && Greater then total_pages
********/
while($start < 1) { $start++; $end++; }
while($end > $this->total_pages) { $start--; $end--; }
/********
* Pagina nummers opmaken en uitspugen
********/
if($this->page > $cutoff + 1) { $pagenumbers .= '<a href="'.THIS_PAGE.'?page=1&mpp='.$this->mpp.$this->query_string.'" title="First Page (1)">...</a> '; }
for($i=$start; $i<=$end; $i++)
{
$pagenumbers .= ($i == $this->page) ? '<strong style="text-decoration:underline;">'.$i.'</strong> '."\r\n" : '<a href="'.THIS_PAGE.'?page='.$i.'&mpp='.$this->mpp.$this->query_string.'" title="Go to Page '.$i.'">'.$i.'</a> '."\r\n";
}
if($this->page < $this->total_pages - $cutoff) { $pagenumbers .= '<a href="'.THIS_PAGE.'?page='.$this->total_pages.'&mpp='.$this->mpp.$this->query_string.'" title="Last Page ('.$this->total_pages.')">...</a> '; }
}
else
{
for($i=1; $i<=$this->total_pages; $i++)
{
$pagenumbers .= ($i == $this->page) ? '<strong style="text-decoration:underline;">'.$i.'</strong> '."\r\n" : '<a href="'.THIS_PAGE.'?page='.$i.'&mpp='.$this->mpp.$this->query_string.'" title="Go to Page '.$i.'">'.$i.'</a> '."\r\n";
}
}
return rtrim($pagenumbers);
}
else
{
return NULL;
}
}
}
/********
* Pagina nummering aanroepen
********/
$page_nums = new Page_numbers("guestbook", "WHERE blocked='N'", $link_id);
$page_numbers = $page_nums->show_page_numbers(7);
$mpp = $page_nums->show_mpp();
$prev_next = $page_nums->prev_next();
$data = $page_nums->fetch_data("COUNTRY", "ORDER BY score DESC");
$data2 = $page_nums->fetch_data("EMAIL", "ORDER BY score DESC");
$data3 = $page_nums->fetch_data("ENTRY", "ORDER BY score DESC");
$data4 = $page_nums->fetch_data("HIDEEMAIL", "ORDER BY score DESC");
$searchstring = mysql_real_escape_string($_GET['words']);
if (strlen($searchstring) <=3 || $data3 == "" || strlen($searchstring) >=254) {
echo '
<table width="600" style="height: 400px" align="center">
<tr>
<td valign="middle" align="center">
<span>
<h3>No matches were found,</h3>
<h4>here\'s a list of possible reasons for that:</h4><br />
<ul>
<li><p><font face="arial" color="#0000ff" size="2">There just isn\'t an URL that matches your search</font></p></li>
<li><p><font face="arial" color="#0000ff" size="2">Your search was too short: it has to be at least 4 characters long</font></p></li>
<li><p><font face="arial" color="#0000ff" size="2">Your search exceeded the limit of 254 characters</font></p></li>
</span>
</td>
</tr>
</table>';
} else {
/********
* Pagina Nummers en Berichten Per Pagina uitspugen naar browser
********/
echo '<table cellpadding="0" cellspacing="0" style="width:450px;">
<tr>';
echo '<td align="left" style="position: static;">';
echo $page_numbers;
echo '</td></tr></table><table style="margin-top:-25px; margin-bottom:20px; width:200px; margin-left:400px;"><td>Messages Per Page: '.$mpp.'</td>
</table>';
/********
* Data uitspugen naar de browser
********/
$totalentries = count($data);
$Emailishidden = "This e-mail is hidden";
echo '<div id="maxwidthfix">';
for ($x=0;$x < ($totalentries);$x++)
{
echo '<table><tr>
<td bgcolor="#FFFFFF" width="600" height="3">
</td></tr></table>';
echo '<table border="0" cellspacing="0" cellpadding="1">
<tr>
<td bgcolor="#AFAFAF" align="left" width="600">';
echo '<a target="_blank" href="http://';
echo $data[$x]['COUNTRY'];
echo '">';
echo $data[$x]['COUNTRY'];
echo '</a>';
echo '</td></tr>
<tr>
<td bgcolor="#DFDFDF" align="left">';
echo $data3[$x]['ENTRY'];
echo '</td></tr></table>';
if ($data4[$x]['HIDEEMAIL'] == 0) {
echo '<table border="0" cellspacing="0" cellpadding="1">
<tr>
<td bgcolor="#AFAFAF" align="left" width="600">';
echo $data2[$x]['EMAIL'];
echo '</td></tr></table>';
} else {
echo '<table border="0" cellspacing="0" cellpadding="1">
<tr>
<td bgcolor="#AFAFAF" align="left" width="600">';
echo $Emailishidden;
echo '</td></tr></table>';
}
}
echo '<BR /><div style="margin-left: 67px;">
//hier stond een google script, ads
echo '</div></div>';
/********
* Previous & Next Links
********/
echo '<br /><div style="margin-bottom:20px; margin-left: 230px;">'.$prev_next;
echo '</div>';
}
Vraag:
Weet iemand waar hier de fout kan zitten en wat eraan gedaan kan worden?
Alvast bedankt!
Laatst bewerkt: