Detailpagina via MySQL opvragen

  • Onderwerp starter Onderwerp starter ku55
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

ku55

Gebruiker
Lid geworden
1 nov 2012
Berichten
6
hallo,
ik probeer een detail pagina te maken. vooreerst heb ik een indexpagina waar je op een letter van het alfabet kan klikken en daaruit voortvloeiend krijg je dan alle titels (van boeken) die deze letter bevat. nu probeer ik van deze titel een link te maken waar je kan doorklikken naar de details van die betreffende titel. dat lukt, maar bij het doorgeven doet hij alleen het eerste woord van de titel, waardoor de detailset dus verloren gaat. ik doe dit met php, in combinatie met dreamweaver.
ik zal wat code meegeven van de 2 pagina's, dus de resultaten en de detail
PHP:
$currentPage = $_SERVER["PHP_SELF"];

$colname_ahref = "-1";
if (isset($_GET['titel'])) {
  $colname_ahref = $_GET['titel'];
}
mysql_select_db($database_booksh, $booksh);
$query_ahref = sprintf("SELECT * FROM artikel WHERE titel = %s", GetSQLValueString($colname_ahref, "text"));
$ahref = mysql_query($query_ahref, $booksh) or die(mysql_error());
$row_ahref = mysql_fetch_assoc($ahref);
$totalRows_ahref = mysql_num_rows($ahref);


$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());


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>


while ($row = mysql_fetch_assoc($alfabezoeken)){
	echo '<a href=detail.php?titel=',$row["titel"],'>',$row["titel"],'</a></br>';
}


}
en hier ook wat uit de detailpage
PHP:
$colname_detail = "-1";
if (isset($_GET['titel'])) {
  $colname_detail = $_GET['titel'];
}
mysql_select_db($database_booksh, $booksh);
$query_detail = sprintf("SELECT * FROM artikel WHERE titel = %s", GetSQLValueString($colname_detail, "text"));
$detail = mysql_query($query_detail, $booksh) or die(mysql_error());
$row_detail = mysql_fetch_assoc($detail);
$totalRows_detail = mysql_num_rows($detail);
met dank voor wie hier zijn tijd wil aan spenderen, misschien zie ik iets over het hoofd, een kleinigheidje of zo?
 
Laatst bewerkt door een moderator:
Welkom op Helpmij :)

De sectie "Dreamweaver" is meer bedoeld voor problemen met het programma, jouw vraag heeft meer met PHP te maken.
Om die reden heb ik hem dan verplaatst.


Met betrekking tot je vraag: Hoe ziet je database-structuur er uit?
Je hebt als het goed is een PRIMARY KEY (meestal is dit een ID)

Als je die ID meegeeft via de link en die vervolgens in je query gebruikt :)
Een primaire sleutel dient immers uniek te zijn.

Overigens zie ik dat je hebt aangegeven dat deze vraag is opgelost, klopt dit? Zo ja, zou je dan de oplossing willen plaatsen zodat andere gebruikers er ook wat aan kunnen hebben :)
 
Laatst bewerkt:
.
.
.
.
.
}
$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());
.
.
.
.
$array = range('a', 'z');

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

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

}

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

<?

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


while ($row = mysql_fetch_assoc($alfabezoeken)){
echo '<a href=index.php?titel=', urlencode($row["titel"]),'>',$row["titel"],'</a></br>';
}


}

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


?>
</a></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>
<p>
<?php echo $row_detail['auteur']; ?></br>
<?php echo $row_detail['beschrijving']; ?></br>
<?php echo $row_detail['aantal paginas']; ?></br>
<?php echo $row_detail['prijs']; ?></br>
</p>
</body>
</html>
<?php
mysql_free_result($ahref);

mysql_free_result($detail);
?>
het venijn zat hem in de link die de url doorstuurt. daar is met urlencode een oplossing gegeven. bovenstaand is de resultatenpagina, waar je dus kan klikken op een titel.
 
Laatst bewerkt:
ik zou nog graag een uitbreiding doen met een hooveridee. dus als je boven een link beweegt (de letter en ook het gevonden resultaat) krijg je reeds een resultatenset en ook als je boven een resultaat beweegt met de muis krijg je als voorproefje reeds een detail.
mocht daar een idee over bestaan, ik ben een en al een lezend oog!

tot later
ku55
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan