In mijn db heb ik een tiental afbeeldingen gedefinieerd. Voor elk van de 10 afbeeldingen heb 3 velden. image.., imagesmall... en description...
Wanneer je op artikel.php een afbeelding(imagesmall...) aanklikt kom je op image.php waar de vergrote afbeelding(image...) wordt getoond. Ik wil op deze pagina ook graag description... tonen, maar weet niet hoe.........

De code:
<?php
$afbeelding=$_GET['imageid']."";
if(isset($_GET['recordid']) && is_numeric($_GET['recordid']))//is er een nummer meegegeven?
{
if($query = mysql_query("SELECT * FROM php4u_bookmarks WHERE recordid = ".$_GET['recordid']))
{
if(mysql_num_rows($query) > 0)//zijn er artikelen met dat nummer?
{
$artikel = mysql_fetch_assoc($query);//nu niet in een while-lus. Er is maar 1 resultaat.
$image_big = str_replace ('imagesmall', 'image', $artikel[$afbeelding]);
echo '<table width="740">';
echo '<tr>';
echo '<td CLASS="image">';
echo '<br><a href="artikel.php?recordid='.$artikel['recordid'].'">'.$artikel['titel'].': start here';
echo '<p> <div align="center"><img src=' . $image_big . ' border="3" bordercolor= "white"></A></div></p>';
echo '<br>';
echo '<br>';
echo '</tr>';
echo '</td>';
echo '</table>';
}
else
{
echo 'Artikel "'.$_GET['recordid'].'" bestaat niet';
}
}
}
else
{
header('Location: index.php');//geen nummer? Dan maar naar de lijst
}
?>


Eddie
echo $artikel['description'] ? Wanneer de kolom in de database de naam 'description' heeft meegekregen en deze wordt opgevraagd in bovenstaande query.
Frank,

Bedankt voor je snelle reactie!
Elke afbeelding heeft een eigen "description"(onderschrift). Stel ik open imagesmall001 op artikel.php dan wordt image.php geopend en image001 wordt getoond. Onder image001 wil ik description001 dan weergeven. Hetzelfde geldt voor imagesmall002 tm imagesmall010. Ik weet niet hoe ik de bijbehorende "description" dan vanuit de db moet halen.

Eddie
Ik heb echt geen idee. Is er iemand die me wil helpen?

Eddie
<?php
$afbeelding=$_GET['imageid']."";
if(isset($_GET['recordid']) && is_numeric($_GET['recordid']))//is er een nummer meegegeven?
{
if($query = mysql_query("SELECT * FROM php4u_bookmarks WHERE recordid = ".$_GET['recordid']))
{
if(mysql_num_rows($query) > 0)//zijn er artikelen met dat nummer?
{
$artikel = mysql_fetch_assoc($query);//nu niet in een while-lus. Er is maar 1 resultaat.
$image_big = str_replace ('imagesmall', 'image', $artikel[$afbeelding]);
echo '<table width="740">';
echo '<tr>';
echo '<td CLASS="image">';
echo '<br><a href="artikel.php?recordid='.$artikel['recordid'].'">'.$artikel['titel'].': start here';
echo '<p> <div align="center"><img src=' . $image_big . ' border="3" bordercolor= "white"></A></div></p>';
echo '<br>'.$artikel['description'];
echo '<br>';
echo '</tr>';
echo '</td>';
echo '</table>';
}
else
{
echo 'Artikel "'.$_GET['recordid'].'" bestaat niet';
}
}
}
else
{
header('Location: index.php');//geen nummer? Dan maar naar de lijst
}
?>

probeer dit eens
Of probeer dit:

Ik heb een paar dingetjes anders gedaan om het wat overzichtelijker te krijgen...

<?php

$afbeelding = $_GET['imageid'];

// Controleer of er een nummer word meegegeven
// Als dit niet het geval is, dan gaan we naar index.php
if(isset($_GET['recordid']) && is_numeric($_GET['recordid'])) {

// Zet het nummer vanuit $_GET in een 'normale' variabele
$record_id = $_GET['recordid'];

// Stel de query op
$sql = "SELECT *
FROM php4u_bookmarks
WHERE recordid = " . $record_id;

// Haal de gegevens uit de database en geef een melding als er een fout op treed
$res = mysql_query($sql) or die(mysql_error());

// Als er een resultaat is, dan tonen we die op het scherm
// Anders geven we een melding dat het opgevraagde artikel niet bestaat
if(mysql_num_rows($query) > 0)
{
$artikel = mysql_fetch_assoc($query); //nu niet in een while-lus. Er is maar 1 resultaat.
$image_big = str_replace ('imagesmall', 'image', $artikel[$afbeelding]);

echo "<table width=\"740\"><tr><td class=\"images\">";
echo "<div align=\"center\"><a href=\"artikel.php?recordid=" . $artikel['recordid'] . "\">" . $artikel['titel'] . ": start here ";
echo "<img src=\"" . $image_big . "\" border=\"3\" bordercolor=\"white\" /></a></div>";
echo "</td></tr>";
echo "<tr><td>" . $artikel['description'] . "</td></tr></table>";
}
else
{
echo 'Artikel "' . $record_id . '" bestaat niet.';
}
}
else
{
header('Location: index.php');//geen nummer? Dan maar naar de lijst
}
?>


Waarom valideer je deze niet op juistheid??
$afbeelding = $_GET['imageid'];
Netzoals dit:
if(isset($_GET['recordid']) && is_numeric($_GET['recordid'])) {


Je moet het zo zien, dat op het moment dat je gegevens uit de database haalt, dan gaat dat per rij.

Dus, haal je de rij van afbeelding 1 op, dan heb je dus ook de beschrijving van afbeelding 1 erbij zitten.

Voer het volgende stukje code maar eens uit, dan zie je wat er gebeurd. (vervang het woord table door een bestaande tabel en maak van te voren een bd connectie ed...

<?php
$sql = "SELECT * FROM table";
$res = mysql_query($sql);
whille ($row = mysql_fetch_row($res)) {
print_r($row);
echo "<br /><br />";
}
?>
Derk, Bienze,

Ik begrijp het eerlijk gezegd nog niet helemaal. Misschien moet ik wat duidelijker zijn. Wanneer je een artikel op www.247ff.com/indextest.php opent verschijnen aan de rechterkant afbeeldingen, deze heten imagesmall001 t/m imagesmall010(max). Wanneer je vervolgens op één van deze afb. klikt opent image.php en verschijnt de vergroting(image001 t/m image010(max). In de db heb ik naast velden voor imagesmall... en image... ook nog voor elke afb. description001 t/m description010(max). Dus bv image003, imagesmall003, description003 horen bij elkaar.
Op image.php wil ik onder image... de bijbehorende description... plaatsen. Dit lukt me ondanks vele pogingen niet. Hoop dat jullie begrijpen wat ik bedoel en een verlossend antwoord weten. Eddie
HUH??? Nu snap ik er helemaal niets meer van!

Even 2 dingen... geef eens de export van je tabelen (dat kan in phpmyadmin) en de scripts van alle pagina's die gebruikt worden.

-------

Zoals ik je vraag heb begrepen wil je onder de vergrootte afbeelding de beschrijving hebben die bij die afbeelding hoort. Dus, als je klikt op de kleine afbeelding, dan opent de pagina met de grote afbeelding en onder die afbeelding staat dan de tekst....

Klopt het dat je dit wil??
Bienze,

Dat is precies wat de bedoeling is. Mijn probleem is echter dat ik de description(photographer moet uiteindelijk ook) niet onder de afbeelding krijg, omdat ik niet weet hoe ik die moet oproepen.

Mijn DB:
CREATE TABLE php4u_bookmarks (
recordid int(11) NOT NULL auto_increment,
datum date NOT NULL default '0000-00-00',
titel varchar(128) NOT NULL default '',
rubriek varchar(128) NOT NULL default '',
introtekst text NOT NULL,
artikeltekst text NOT NULL,
factfile text NOT NULL,
link_1 varchar(128) NOT NULL default '',
link_2 varchar(128) NOT NULL default '',
link_3 varchar(128) NOT NULL default '',
image001 varchar(255) NOT NULL default '',
imagesmall001 varchar(255) NOT NULL default '',
description001 varchar(128) NOT NULL default '',
photographer001 varchar(128) NOT NULL default '',
image002 varchar(255) NOT NULL default '',
imagesmall002 varchar(255) NOT NULL default '',
description002 varchar(128) NOT NULL default '',
photographer002 varchar(128) NOT NULL default '',
image003 varchar(255) NOT NULL default '',
imagesmall003 varchar(255) NOT NULL default '',
description003 varchar(128) NOT NULL default '',
photographer003 varchar(128) NOT NULL default '',
image004 varchar(255) NOT NULL default '',
imagesmall004 varchar(255) NOT NULL default '',
description004 varchar(128) NOT NULL default '',
photographer004 varchar(128) NOT NULL default '',
image005 varchar(255) NOT NULL default '',
imagesmall005 varchar(255) NOT NULL default '',
description005 varchar(128) NOT NULL default '',
photographer005 varchar(128) NOT NULL default '',
image006 varchar(255) NOT NULL default '',
imagesmall006 varchar(255) NOT NULL default '',
description006 varchar(128) NOT NULL default '',
photographer006 varchar(128) NOT NULL default '',
image007 varchar(255) NOT NULL default '',
imagesmall007 varchar(255) NOT NULL default '',
description007 varchar(128) NOT NULL default '',
photographer007 varchar(128) NOT NULL default '',
image008 varchar(255) NOT NULL default '',
imagesmall008 varchar(255) NOT NULL default '',
description008 varchar(128) NOT NULL default '',
photographer008 varchar(128) NOT NULL default '',
image009 varchar(255) NOT NULL default '',
imagesmall009 varchar(255) NOT NULL default '',
description009 varchar(128) NOT NULL default '',
photographer009 varchar(128) NOT NULL default '',
image010 varchar(255) NOT NULL default '',
imagesmall010 varchar(255) NOT NULL default '',
description010 varchar(128) NOT NULL default '',
photographer010 varchar(128) NOT NULL default '',
PRIMARY KEY (recordid)
) TYPE=MyISAM;


Mijn artikel.php:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>247FF-Article</TITLE>
<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=ISO-8859-1">
<META HTTP-EQUIV="content-style-type" CONTENT="text/css">
<META http-equiv=pragma content="no cache">
<META http-equiv=imagetoolbar content=no><LINK href="logo.ico" rel="shortcut icon">
<META lang=en content="www.247FF.com 24 hours a day, 7 days a week, Flyfishing">
<META name=keywords lang=en content="247ff, flyfishing, flytying, seatrout, ide, pike, perch, salmon, nymph, streamer, vliegvissen, roach, flyrod, dvd">
<META lang=en name=author content="Eddie Bouma and Hans Gerritsen">
<LINK HREF="Stijl/artikelimage.css" REL="stylesheet" TYPE="text/css">
<LINK HREF="Stijl/artikel.css" REL="stylesheet" TYPE="text/css">
<LINK HREF="Stijl/link.css" REL="stylesheet" TYPE="text/css">

</HEAD>
<BODY>
<DIV align=center>
<TABLE width=740 bgColor=#ffffff>
<TR>
<TD>

<TABLE >
<TR>
<TD><IMG SRC="images/headers/header_artikel.png" ALIGN="center" WIDTH="740" HEIGHT="122" BORDER="0" USEMAP="#header_category">
</TD>
</TR>
</TABLE>
<?php
include("header_category.php");
?>

<?php
include('dbase.php');
$dbh=mysql_connect("$dbhost","$dbuser","$dbpass");
?>
<?php
mysql_select_db("247ff_com_1") or die ("Kan de database niet openen");
?>

<?php

if(isset($_GET['recordid']) && is_numeric($_GET['recordid']))//is er een nummer meegegeven?
{
if($query = mysql_query("SELECT * FROM php4u_bookmarks WHERE recordid = ".$_GET['recordid']))
{
if(mysql_num_rows($query) > 0)//zijn er artikelen met dat nummer?
{
$artikel = mysql_fetch_assoc($query);//nu niet in een while-lus. Er is maar 1 resultaat.
echo '<table width="740">';
echo '<tr>';
echo '<td CLASS="artikel" rowspan="2">';
echo '<h6><BR>'.$artikel['titel'].'</h6>';
echo ''.$artikel['artikeltekst'].'';
echo '</td>';
echo '<td CLASS="artikelimage" bgcolor="white">';
echo '<H6><BR>FACTFILE</H6>';
echo ''.$artikel['factfile'].'';
echo '</td>';
echo '</tr>';

}
else
{
echo 'Artikel "'.$_GET['recordid'].'" bestaat niet';
}
}
}
else
{
header('Location: artikel.php');//geen nummer? Dan maar naar de lijst
}
echo '</tr>';
echo '<td CLASS="artikelimage">';


?>



<?php

if(isset($_GET['recordid']) && is_numeric($_GET['recordid']))//is er een nummer meegegeven?
{
if($query = mysql_query("SELECT * FROM php4u_bookmarks WHERE recordid = ".$_GET['recordid']))
{
if(mysql_num_rows($query) > 0)//zijn er artikelen met dat nummer?
while ($afbeeldingen = mysql_fetch_array($query)){
for ($teller=1;$teller <=10;$teller++){
$afbeelding = "imagesmall00".$teller;

if ($teller == 10){
$afbeelding = "imagesmall0".$teller;
}
if (!empty($afbeeldingen[$afbeelding])){





echo '<a href="image.php?recordid=' . $_GET['recordid'] . '&imageid=' . $afbeelding . '">
<P><img src='.$afbeeldingen[$afbeelding].'></P></a>';

}}}}}
echo '</tr>';
echo '</td>';
echo '</table>';
?>

<?php

if(isset($_GET['recordid']) && is_numeric($_GET['recordid']))//is er een nummer meegegeven?
{
if($query = mysql_query("SELECT * FROM php4u_bookmarks WHERE recordid = ".$_GET['recordid']))
{
if(mysql_num_rows($query) > 0)//zijn er artikelen met dat nummer?
{
$artikel = mysql_fetch_assoc($query);//nu niet in een while-lus. Er is maar 1 resultaat.
echo '<table width="740">';
echo '<tr>';
echo '<td CLASS="link">';
echo '<P><B>You might be interested in these related articles too:</B></P>';
echo '<P><IMG SRC="images/logo.jpg" BORDER="0" ALT="" ALIGN="LEFT">&nbsp;&nbsp;&nbsp;<a href='.$artikel['link_1'].'</A><BR>';
echo '<IMG SRC="images/logo.jpg" BORDER="0" ALT="" ALIGN="LEFT">&nbsp;&nbsp;&nbsp;<a href='.$artikel['link_2'].'</A><BR>';
echo '<IMG SRC="images/logo.jpg" BORDER="0" ALT="" ALIGN="LEFT">&nbsp;&nbsp;&nbsp;<a href='.$artikel['link_3'].'</A></P>';
echo '</td>';
echo '</tr>';

}
else
{
echo 'Artikel "'.$_GET['recordid'].'" bestaat niet';
}
}
}
else
{
header('Location: artikel.php');//geen nummer? Dan maar naar de lijst
}
echo '</table>';



?>

<TABLE>
<TR>
<TD CLASS="div_footer"><IMG SRC="images/headers/footer.png" BORDER="0" ALT="" ALIGN="LEFT" USEMAP="#footer">
</TD>
</TR>
</TABLE>

</TABLE>
</DIV>
</BODY>
</HTML>

Mijn image.php:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>247FF-PICTURES</TITLE>
<LINK HREF="Stijl/image.css" REL="stylesheet" TYPE="text/css">
<LINK HREF="Stijl/div_header.css" REL="stylesheet" TYPE="text/css">
</HEAD>
<BODY BGCOLOR=#808080>
<DIV align=center>
<TABLE width=740 bgColor=#808080>
<TR>
<TD>

<TABLE >
<TR>
<TD CLASS="header"><IMG SRC="images/headers/header_image.png" ALIGN="center" WIDTH="739" HEIGHT="135" BORDER="0">
</TD>
</TR>
</TABLE>

<?php
include('dbase.php');
$dbh=mysql_connect("$dbhost","$dbuser","$dbpass");
?>
<?php
mysql_select_db("247ff_com_1") or die ("Kan de database niet openen");
?>

<?php
$afbeelding=$_GET['imageid']."";
if(isset($_GET['recordid']) && is_numeric($_GET['recordid']))//is er een nummer meegegeven?
{
if($query = mysql_query("SELECT * FROM php4u_bookmarks WHERE recordid = ".$_GET['recordid']))
{
if(mysql_num_rows($query) > 0)//zijn er artikelen met dat nummer?
{
$artikel = mysql_fetch_assoc($query);//nu niet in een while-lus. Er is maar 1 resultaat.
$image_big = str_replace ('imagesmall', 'image', $artikel[$afbeelding]);
echo '<table width="740">';
echo '<tr>';
echo '<td CLASS="image">';
echo '<br><a href="artikel.php?recordid='.$artikel['recordid'].'">'.$artikel['titel'].': start here';
echo '<p> <div align="center"><img src=' . $image_big . '></A></div></p>';
echo '<br>';
echo '<br>';
echo '</td>';
echo '</tr>';
echo '</table>';
}
else
{
echo 'Artikel "'.$_GET['recordid'].'" bestaat niet';
}
}
}
else
{
header('Location: index.php');//geen nummer? Dan maar naar de lijst
}
?>



</TABLE>
</DIV>
</BODY>
</HTML>


Eddie
Hmmm... ksnap het probleem.

Maar ik denk dat je al in de fout gaat het het ontwerp van die tabel!

Ik weet niet of je kan normaliseren? Daarover staat wel een tutorial op deze website. Probeer relaties te leggen met andere tabellen!

Neem de volgende zin:
In 1 pagina zitten meerdere afbeeldingen.

Maak daarom 1 tabel met informatie van de pagina (teksten, titels e.d.) en 1 tabel met informatie over de afbeeldingen.

[pagina]
record_id
datum
titel
rubriek
... etc ...

[images]
image_id (auto increment)
record_id <-- verwijst naar de pagina
image_small
image_big
image_description
photographer



Als je hier mee begint, dan kan je veel makkelijker en efficienter je data uit de database halen!

Daarnaast is het dan ook een stuk flexibeler... je kan eens meer of minder afbeeldingen nemen, of gewoon altijd 10.

Om 1 afbeelding en de bijbehorende tekst op te halen heb je alleen de sleutel nodig die bij dat specifieke record hoort.. dan heb je dus het probleem wat je nu hebt helemaal niet meer!


Lijkt dit je wat, of ga je verder met de huidige situatie? Als je hierbij blijft dan is er vast wel een manier te bedenken waarop je toch de juiste gegevens tevoorschijn krijgt (het getal extraheren en dan de juiste waarde op vragen uit de array)
Bienze,

Ik ben best bereid om een nieuwe database te maken en deze opnieuw te vullen. Ik vrees alleen dat wanneer ik alle code over de kop gooi, ik nooit weer op het punt kom waar ik nu ben. Mijn kennis van php is miniem. Vandaar dat ik eigenlijk de voorkeur heb om met de bestaande code en db door te gaan, ook omdat dit het enige is wat nog moet. Indien het onmogelijk en onlogisch is om op dezelfde voet door te gaan heb ik geen keus natuurlijk,

Eddie

Reageren