Hallo,

Ik ben sinds een tijdje bezig met een XHTML, PHP MYSQL website. Daarvoor had ik met HTML al wel ervaring, en had ik zo nu en dan al wat aan PHP gesnuffeld.

Ik heb een website opgezet waar ik filmreviews op wil posten, bij elke review hoort een apart paginabred plaatje. Ik heb om het te testen 3 reviews in de database gezet en iedere review een eigen id (imdbid) gegeven. Ik wil vervolgens dat bij een review de bijpassende png tevoorschijn komt. Het leek allemaal te kloppen, maar toen ik de website testte kreeg ik het volgende te zien: http://mc-online.info/reviews.php

Ik nam aan dat dit er mee te maken had dat ik geen header() in m'n code had staan, maar die kon ik er op geen enkele manier in krijgen, omdat ik dan de foutmelding blijf krijgen dat er al een header is verzonden. Hoe los ik dit op?
Hieronder de pagina (reviews.php) waar het om gaat...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

<head>
<title>-</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8; image/png" />
<link rel="stylesheet" href="css/1.css" type="text/css" media="screen,projection" />

</head>

<body>

<div id="wrapper" class="fixed">

        <div id="header">

            <h1><strong> ./reviews</strong></h1>

                <ul id="nav">

                        <li><a href="index.html">Home</a></li>

                        <li><a href="reviews.php">Reviews</a></li>

                        <li><a href="dvd_collection.html">DVD-Collection</a></li>

                        <li><a href="links.html">Links & Affiliates</a></li>

                        <li><a href="contact.html">Contact</a></li>

                        <li><a href="login.php">Admin</a></li>

                </ul>

        </div>


        <div id="content">

                <p>
<?php

/**
 *
 *
 * @version $Id$
 * @copyright 2006
 */

$username="********";
$password="********";
$database="reviews";
$rowsPerPage="1";
$pageNum="1";
$maxPage="3";

mysql_connect(localhost,$username,$password);

@mysql_select_db($database) or die( "Unable to select database");

// if $_GET['page'] defined, use it as page number
if(isset($_GET['page']))
{
    $pageNum = $_GET['page'];
}

// counting the offset
$offset = ($pageNum - 1) * $rowsPerPage;

$query  = "SELECT * FROM reviews LIMIT $offset, $rowsPerPage";
$result = mysql_query($query) or die('Error, query failed');

$num=mysql_numrows($result);

$i=0;
while ($i < $num) {

$title=mysql_result($result,$i,"title");
$imdbid=mysql_result($result,$i,"imdbid");
$plot=mysql_result($result,$i,"plot");
$review=mysql_result($result,$i,"review");

$imagepath="images/posters/$imdbid.png";

$image=imagecreatefrompng($imagepath);

echo "<b>$title</b><hr>";

imagepng($image);

echo "<br>$plot<br><br><hr><br>$review<br><br><hr><br>";

$i++;
}

$self = $_SERVER['PHP_SELF'];

// creating 'previous' and 'next' link
// plus 'first page' and 'last page' link

// print 'previous' link only if we're not
// on page one
if ($pageNum > 1)
{
    $page = $pageNum - 1;
    $prev = " <a href=\"$self?page=$page\">[Prev]</a> ";

    $first = " <a href=\"$self?page=1\">[First Page]</a> ";
}
else
{
    $prev  = ' [Prev] ';       // we're on page one, don't enable 'previous' link
    $first = ' [First Page] '; // nor 'first page' link
}

// print 'next' link only if we're not
// on the last page
if ($pageNum < $maxPage)
{
    $page = $pageNum + 1;
    $next = " <a href=\"$self?page=$page\">[Next]</a> ";

    $last = " <a href=\"$self?page=$maxPage\">[Last Page]</a> ";
}
else
{
    $next = ' [Next] ';      // we're on the last page, don't enable 'next' link
    $last = ' [Last Page] '; // nor 'last page' link
}

// print the page navigation link
echo $first . $prev . " Showing page <strong>$pageNum</strong> of <strong>$maxPage</strong> pages " . $next . $last;

mysql_close();

?> 

</p>

        </div>

        <div id="footer">

                <p style="float:right;">Valid <a href="http://validator.w3.org/check?uri=referer">HTML</a> &amp; <a href="http://jigsaw.w3.org/css-validator/">CSS</a></p>
                <p>Design by Mathijs Jorritsma</p>

        </div>

</div>

</body>
</html>

Alvast bedankt voor de hulp,

Mc
Bedankt, maar dat heb ik al geprobeerd. Inmiddels is het me wel gelukt header() in de pagina te verwerken zonder die foutmelding te krijgen, maar nog steeds wordt de afbeelding niet goed weergegeven. Nog een optie was dat png's misschien niet ondersteund waren, maar ook dat heb ik al gecheckt.
Wat je moet/kan doen is:

Op de pagina waar je de afbeelding wilt hebben:

<img src='afbeelding.php?id=1' alt='Tekst' />

En dan afbeelding.php jouw png laten genereren met php met een png header.
Zo te zien is dat niet eens nodig. Je krijgt immers uit je database de volgende gegevens:

$imagepath="images/posters/$imdbid.png";

Deze variabele kun je toch gewoon in het src attribuut van een <img> tag gebruiken? Natuurlijk de variabele even buiten quotes halen zoals het hoort, maar ik denk dat zoiets wel werkt:
<?php
$imagepath= 'images/posters/'. $imdbid .'.png';

echo '<img src="'.$imagepath.'" />';
?>

Op de manier die je nu gebruikt zal het niet werken, omdat er binnen 1 pagina dan 2 content types (text/html en image/png) gebruikt zouden moeten worden. Dat is niet mogelijk.
Zo te zien is dat niet eens nodig. Je krijgt immers uit je database de volgende gegevens: $imagepath="images/posters/$imdbid.png";

En hier zou je ook even de var buiten de quotes kunnen halen als je netjes wilt schrijven.
Jan Koehoorn schreef op 09.11.2006 12:12
En hier zou je ook even de var buiten de quotes kunnen halen als je netjes wilt schrijven.


Dat was bedoeld als een letterlijke quote uit het script van Matthijs. In het voorbeeld dat ik geef is het wel goed geschreven ;-)

[edit]Nested quote verwijderd.[/edit]

Reageren