Status
Niet open voor verdere reacties.
K

ku30

Gast
hoi,
dit is mijn laatste vraag tot dusver.
steeds keert de foutmelding
Notice: Undefined index: aparteletter in C:\xampp\htdocs\bookshop\index.php on line 44
terug. in bijgevoegde code is dit de querylijn.
ik weet dat die niet gedeclareerd is maar weet ook niet hoe dit te doen.
heeft iemand een idee hierover? onderstaande code is een fragment! het gaat hier waarschijnlijk over de query.
$currentPage = $_SERVER["PHP_SELF"];


$maxRows_alfabezoeken = 5;
$pageNum_alfabezoeken = 0;
if (isset($_GET['pageNum_alfabezoeken'])) {
$pageNum_alfabezoeken = $_GET['pageNum_alfabezoeken'];
}
$startRow_alfabezoeken = $pageNum_alfabezoeken * $maxRows_alfabezoeken;
mysql_select_db($database_booksh, $booksh);
$query_alfabezoeken = "SELECT titel FROM artikel WHERE titel LIKE'%".mysql_real_escape_string($_GET["aparteletter"])."%'";
$query_limit_alfabezoeken = sprintf("%s LIMIT %d, %d", $query_alfabezoeken, $startRow_alfabezoeken, $maxRows_alfabezoeken);
$alfabezoeken = mysql_query($query_limit_alfabezoeken, $booksh) or die(mysql_error());
$row_alfabezoeken = mysql_fetch_assoc($alfabezoeken);

if (isset($_GET['totalRows_alfabezoeken'])) {
$totalRows_alfabezoeken = $_GET['totalRows_alfabezoeken'];
} else {
$all_alfabezoeken = mysql_query($query_alfabezoeken);
$totalRows_alfabezoeken = mysql_num_rows($all_alfabezoeken);
}
 
Dan kan je het beste eerst controleren of deze al bestaat dit kan je op de volgende manier doen.

Code:
if(isset($_GET["aparteletter"])) {
    $letter = $_GET["aparteletter"];
} else {
    $letter = "a"
}

$maxRows_alfabezoeken = 5;
 $pageNum_alfabezoeken = 0;
 if (isset($_GET['pageNum_alfabezoeken'])) {
 $pageNum_alfabezoeken = $_GET['pageNum_alfabezoeken'];
 }
 $startRow_alfabezoeken = $pageNum_alfabezoeken * $maxRows_alfabezoeken;
 mysql_select_db($database_booksh, $booksh);
 $query_alfabezoeken = "SELECT titel FROM artikel WHERE titel LIKE'%".mysql_real_escape_string($letter."%'";
 $query_limit_alfabezoeken = sprintf("%s LIMIT %d, %d", $query_alfabezoeken, $startRow_alfabezoeken, $maxRows_alfabezoeken);
 $alfabezoeken = mysql_query($query_limit_alfabezoeken, $booksh) or die(mysql_error());
 $row_alfabezoeken = mysql_fetch_assoc($alfabezoeken);
 
if (isset($_GET['totalRows_alfabezoeken'])) {
 $totalRows_alfabezoeken = $_GET['totalRows_alfabezoeken'];
 } else {
 $all_alfabezoeken = mysql_query($query_alfabezoeken);
 $totalRows_alfabezoeken = mysql_num_rows($all_alfabezoeken);
 }

Zorg er altijd voor dat je de waardes controleerd voor je ze gebruikt zeker in en query!
 
mijn scriptje werkt perfect.
ik had zover niet nagedacht, ik ben zo niet thuis met al die php, toch veel bijgeleerd.
 
heeft u er soms een idee van waarom niet alle resultaten getoond worden? bv de eerste ontbreekt steeds wanneer ik dit script bekijk in de browser. ik had er al aan gedacht om de waarde van de array te laten beginnen op 1 ipv 0?
 
heeft u er soms een idee van waarom niet alle resultaten getoond worden? bv de eerste ontbreekt steeds wanneer ik dit script bekijk in de browser. ik had er al aan gedacht om de waarde van de array te laten beginnen op 1 ipv 0?

Dan moet ik je complete script zien zonder dit is het lastig te vertellen

een array begint altijd met 0 je kan wal een variable een waarde toe kennen
 
<?php require_once('Connections/booksh.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}

$currentPage = $_SERVER["PHP_SELF"];


$maxRows_alfabezoeken = 5;
$pageNum_alfabezoeken = 0;
if (isset($_GET['pageNum_alfabezoeken'])) {
$pageNum_alfabezoeken = $_GET['pageNum_alfabezoeken'];
}
$startRow_alfabezoeken = $pageNum_alfabezoeken * $maxRows_alfabezoeken;
mysql_select_db($database_booksh, $booksh);
if(isset($_GET["aparteletter"])) {
$letter = $_GET["aparteletter"];
}else {
$letter = "a";
}
$query_alfabezoeken = "SELECT titel FROM artikel WHERE titel LIKE '%".mysql_real_escape_string($letter)."%'";
$query_limit_alfabezoeken = sprintf("%s LIMIT %d, %d", $query_alfabezoeken, $startRow_alfabezoeken, $maxRows_alfabezoeken);
$alfabezoeken = mysql_query($query_limit_alfabezoeken, $booksh) or die(mysql_error());
$row_alfabezoeken = mysql_fetch_assoc($alfabezoeken);

if (isset($_GET['totalRows_alfabezoeken'])) {
$totalRows_alfabezoeken = $_GET['totalRows_alfabezoeken'];
} else {
$all_alfabezoeken = mysql_query($query_alfabezoeken);
$totalRows_alfabezoeken = mysql_num_rows($all_alfabezoeken);
}
$totalPages_alfabezoeken = ceil($totalRows_alfabezoeken/$maxRows_alfabezoeken)-1;

$queryString_alfabezoeken = "";
if (!empty($_SERVER['QUERY_STRING'])) {
$params = explode("&", $_SERVER['QUERY_STRING']);
$newParams = array();
foreach ($params as $param) {
if (stristr($param, "pageNum_alfabezoeken") == false &&
stristr($param, "totalRows_alfabezoeken") == false) {
array_push($newParams, $param);
}
}
if (count($newParams) != 0) {
$queryString_alfabezoeken = "&" . htmlentities(implode("&", $newParams));
}
}
$queryString_alfabezoeken = sprintf("&totalRows_alfabezoeken=%d%s", $totalRows_alfabezoeken, $queryString_alfabezoeken);
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>alfabetisch zoeken</title>
</head>

<body>
<?php

$array = range('a', 'z');

foreach($array as $letter => $aparteletter) {

echo '<a href="index.php?aparteletter='.$aparteletter.'">' .$aparteletter. '</a> - ';

}


do
if (isset($_GET["aparteletter"])) {
?> </br> <?

if (mysql_num_rows($alfabezoeken) == 0) {
echo "<br />Helaas niets gevonden";
exit;
}

while ($row = mysql_fetch_assoc($alfabezoeken)){
echo $row['titel'] . '</br>';
}


}


while ($row_alfabezoeken = mysql_fetch_assoc($alfabezoeken));


?></br>
<a href="<?php printf("%s?pageNum_alfabezoeken=%d%s", $currentPage, 0, $queryString_alfabezoeken); ?>">Eerst</a>
<a href="<?php printf("%s?pageNum_alfabezoeken=%d%s", $currentPage, max(0, $pageNum_alfabezoeken - 1), $queryString_alfabezoeken); ?>">Vorige</a>
<a href="<?php printf("%s?pageNum_alfabezoeken=%d%s", $currentPage, min($totalPages_alfabezoeken, $pageNum_alfabezoeken + 1), $queryString_alfabezoeken); ?>">Volgende</a>
<a href="<?php printf("%s?pageNum_alfabezoeken=%d%s", $currentPage, $totalPages_alfabezoeken, $queryString_alfabezoeken); ?>">Laatste</a>
</body>
</html>
dit is het complete script!
ik ben ervan overtuigd dat het ook hier een detail is dat ik over het hoofd zie
 
moet ik soms de waarde van de do while lus beginnen op 0 ipv 1 (als dit dan geen onzin is)? in afwachting probeer ik wat uit.
 
moet ik soms de waarde van de do while lus beginnen op 0 ipv 1 (als dit dan geen onzin is)? in afwachting probeer ik wat uit.

Ik ken weinig of geen PHP, maar do while is overal hetzelfde. Als je een array wilt uitlezen via een do while moet je altijd beginnen op positie 0.
Dus array[n-1].
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan