Door
Stan Ravensbergen
op 24-01-2016 14:39
gewijzigd op 24-01-2016 14:41
3.088 views
Hallo allemaal,
Ik ben bezig met een project waarbij ik een nieuwssysteem maak.
Een bericht maak je via een formuliertje in te vullen, de gegevens uit het formulier worden vervolgens in een database opgeslagen. Er kan ook een image worden upgeload, deze image word opgeslagen in een map en het path naar de map in de database zelf.
nu werkt alles prima dat op de nieuwspagina de berichten met titel en plaatje worden getoond zoals ik dat wil.
als 2e functie wou ik dat als je op een plaatje klikt op de nieuwspagina dat hij dan vergroot, dit is mij tot nu toe tot op zekere hoogte gelukt. het is mij gelukt om een standaard plaatje uit te vergroten en weer weg te klikken.
Alleen het gene wat mij nog niet lukt is om het juiste plaatje waar je op klikt om die te vergroten. Hij moet hem dus uit de database halen. Maar hoe doe ik dit? ik zat te denken om te kijken welk id het plaatje heeft en die dan te laten zien maar kom er toch niet helemaal uit.
Je wilt dat de bezoeker op dezelfde pagina blijft, maar dat de foto in een aparte div vergroot wordt?
Je wilt alleen weten van welke je de display moet wijzigen, snap ik het dan goed?
Elke afbeelding is inderdaad gekoppeld aan het zelfde id als die van de bijbehorende titel en bericht.
[size=xsmall]Toevoeging op 24/01/2016 17:13:27:[/size]
De gebruiker blijft op de zelfde pagina ja, de foto word dan in een aparte div getoond. Het klopt dat ik alleen wil weten welke image er getoond moet worden.
Als eerste moet de gebruiker een formulier invullen om een bericht te plaatsen, dit gebeurt zo:
<form method="POST" action="insert-nieuws.php" enctype="multipart/form-data" class="insert_bericht">
<fieldset>
<legend>Plaats een nieuw bericht</legend>
<ul class="list_insert_bericht">
<li><label>Titel:</label></li>
<li><input type="text" name="titel" class="form_titel" required></li>
<li><label>bericht:</label></li>
<li><textarea name="bericht" class="form_bericht" required></textarea></li>
<li><label>Voeg een foto toe:</label></li>
<li><input type="file" name="file_img" class="form_file" required></li>
<li><input type="submit" name="btn_upload" value="plaats bericht" class="form_submit"></li>
</ul>
</fieldset>
</form>
<?php
//form naar variabelen
if (isset($_POST['btn_upload'])) {
$titel = $_POST["titel"];
$bericht = $_POST["bericht"];
$filetmp = $_FILES["file_img"]["tmp_name"];
$filename = time()."_".$_FILES["file_img"]["name"];
$filetype = $_FILES["file_img"]["type"];
$filesize = $_FILES["file_img"]["size"];
$filepath = "../img/img_nieuws/".$filename;
//sql injection
$bericht = nl2br($bericht);
$titel = stripslashes($titel);
$bericht = stripslashes($bericht);
$titel = mysql_real_escape_string($titel);
$bericht = mysql_real_escape_string($bericht);
if ($filetmp == "") {
echo "Voeg een foto in a.u.b.";
}
else{
if ($filesize >= 2097152) {
echo "De afbeelding is groter dan 2mb, selecteer een kleiner formaat.";
}
else{
if ($filetype != "image/jpeg" && $filetype != "image/png" && $filetype != "image/gif") {
echo "selecteer a.u.b. een .jpg, .png of een .gif bestand.";
}
else{
move_uploaded_file($filetmp, $filepath);
$sql = "INSERT INTO nieuwsbericht (titel, bericht, img_name, img_path, img_type)
VALUES ('$titel', '$bericht', '$filename', '$filepath', '$filetype')";
$result = mysqli_query($conn, $sql);
if (!$result) { die('Error: ' . mysqli_error()); }
echo "Uw bericht is verwerkt.";
}
}
}
}
mysqli_close($conn);
?>
nu word het formulier naar de database over gezet.
vervolgens moet het bericht op de nieuws pagina weergegeven worden dat gebeurd inderdaad met een while loop:
<?php
//select data uit database
$sql = "SELECT id, titel, bericht, DATE_FORMAT(datum, '%d-%m-%y') datum, img_name FROM nieuwsbericht ORDER BY id DESC";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
//ouput date van elke rij
while ($row = mysqli_fetch_array($result)) {
?>
<section class="nieuws">
<section class="blok">
<?php echo '<h1>'. $row['titel'] .'</h1>';?>
<?php echo '<p>'. $row['datum'] = substr($row['datum'], 0, 10) .'</p>';?>
<img onclick="showLargeImg()" src="../img/img_nieuws/<?php echo $row['img_name'];?>">
<?php echo '<article>'. $row['bericht'] . '</aticle>';?>
</section>
</section> <?php
}
}else {
echo "Er zijn geen nieuwsberichten";
}
mysqli_close($conn);
?>
dit werkt allemaal perfect! :)
maar nu wil ik dus dat als je op een van de plaatjes klikt dat er dus een een scherm komt met het juiste plaatje er in. Tot nu toe heb ik dit: