Hey allemaal
Ik heb problemen met een script waar ze mij hier al goed mee geholpen hebben, maar toch krijg ik nog
steeds niet alles aan de praat, ik heb voor iemand een site gemaakt met een admin gedeelte
daar kan de persoon artikels toevoegen, die dan onder het formulier getoond worden.
Nu heb ik daar ook een verwijderen optie bijgevoegd, maar om één of andere redenen lukt het niet..
PHP is voor mij echt Chinees dus hopelijk kan iemand mij helpen
Thx

Dit is de admin pagina


<?php
session_start();
if(isset($_SESSION["controle"])){
	if($_SESSION["controle"] != "ok"){
		header("location: index.php");
		exit();
	}	
}else{
	header("location: index.php");
	exit();
}
require_once("inc/connection.php");
mysql_select_db("nieuws");
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$id = $_POST['id'];
$datum = $_POST["datum"];
$titel = $_POST["titel"];
$artikel = $_POST["artikel"];
$titel = mysql_real_escape_string(nl2br(htmlentities($_POST["titel"])));
$artikel = mysql_real_escape_string($_POST["artikel"]);
$id = mysql_real_escape_string($_POST['id']);
date_default_timezone_set('GMT');
$datum = date('Y-m-d', strtotime(str_replace('-', '/', $datum)));
		if(isset($_POST['add'])){
			if(!empty($_POST['titel']) && !empty($_POST['artikel']) && !empty($_POST['datum'])){
			$query="INSERT INTO nieuws (id,datum,titel,artikel) VALUES ('$id','$datum','$titel','$artikel')";
			$datum = date('Y-m-d', strtotime(str_replace('-', '/', $datum)));
			str_replace('<br />', "\n", $textarea);
			$result=mysql_query($query);
			header("location: user.php");
			}else{
			$fout1 = true;
			}
// hier loopt het ergens mis
		}elseif(isset($_POST['delete'])){
			$id = intval($_POST['articleID']);
			$query="DELETE FROM nieuws WHERE id=$id";
			mysql_query($query);
			header("location: user.php");
		}else{
		$fout2 = true;
		}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Admin</title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<!-- CSS -->
<link type="text/css" rel="stylesheet" href="css/user.css" />
<!-- jQuery & Javascript -->
<script src="ckeditor/ckeditor.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript" src="js/zpbpolonez.js"></script>
<script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script>
<script type="text/javascript">
$(document).ready(function(){
	
//Set default open/close settings
$('.acc_container').hide(); //Hide/close all containers
/*$('.acc_trigger:first').addClass('active').next().show(); //Add "active" class to first trigger, then show/open the immediate next container*/

//On Click
$('.acc_trigger').click(function(){
	if( $(this).next().is(':hidden') ) { //If immediate next container is closed...
		$('.acc_trigger').removeClass('active').next().slideUp(); //Remove all .acc_trigger classes and slide up the immediate next container
		$(this).toggleClass('active').next().slideDown(); //Add .acc_trigger class to clicked trigger and slide down the immediate next container
	}
	return false; //Prevent the browser jump to the link anchor
});

});
</script>
<script>(function(d){
  var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
  js = d.createElement('script'); js.id = id; js.async = true;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
  d.getElementsByTagName('head')[0].appendChild(js);
}(document));</script>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
  <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
  <script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
  <link rel="stylesheet" href="/resources/demos/style.css">
  <script>
  $(function() {
    $( "#datepicker" ).datepicker();
  });
  </script>
</head>
<body>
<div id="userheader">
	<div id="userheader2">
		Welkom<br/>
		Datum:&nbsp<?php echo date("d-m-Y");?> <br/>
		<p class="usertitel">Welkom Admin, vanuit deze pagina gaan we je website aanpassen</p>
	</div>
</div>
<div id="userpagetitel">Nieuws Pagina</div>
<?php if($fout1){echo("<p class='fout1'>1 of meer velden zijn niet ingevuld !!!</p>");}?>
<?php if($fout2){echo("<p class='fout2'>Vul de ID in van het artikel dat je wilt verwijderen!</p>");}?>
<div id="userpage1">
	<div id="usernieuws">
			<form method="POST" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">
			Datum:<br />
			<input type="text" name="datum" size="20" style="width:100px;" value="<?php echo $datum; ?>" id="datepicker"/><br />
			Titel:<br />
			<input type="text" name="titel" size="200" style="width:500px;" maxlength="45" value="<?php echo $titel; ?>" placeholder="Max. 50 characters toegelaten"/><br />
			Artikel: <br />
			<textarea id="textarea" name="artikel" style="width:500px; height:150px;" value="<?php echo $artikel; ?>" ></textarea><br />
			<script>
                // Replace the <textarea id="editor1"> with a CKEditor
                // instance, using default configuration.
                CKEDITOR.replace( 'textarea' );
            </script>
			<input type="submit" name="add" value="Artikel toevoegen" />
			<div id="tussenregel"></div>
<?php
$query="SELECT id,datum,titel,artikel FROM nieuws ORDER BY id DESC";
$result = mysql_query($query);
// while lus zit nog altijd in een form, dus de submit knoppen ook
while(list($id,$datum,$titel,$artikel) = mysql_fetch_row($result)){
echo("<div id=\"artikeltitel\" align=\"center\">
			<div id=\"containerdatum\">$datum</div>
			<div id=\"containertitel\">$titel</div>
			<div id=\"container3\" style=\"font-size:12px;\">$id
				<input type=\"hidden\" name=\"articleID\" value=\"<?php echo $id; ?>\"/>
				<input type=\"submit\" name=\"delete\" value=\"verwijderen\"/>
			</div>
		</div>
<div class=\"container\" align=\"center\">
		<h2 class=\"acc_trigger\"><a href=\"#\"> &#187; </a></h2>
	<div class=\"acc_container\">
	<div class=\"block\">$artikel</div>
	<div class=\"fb-comments\" data-href=\"http://www.zpb-polonez.be/user.php\" data-num-posts=\"10\" data-width=\"678\" style=\"margin-top:2px;\"></div>
	</div>
</div>
");
}
?>
</form>
</body>
</html>
Als je nu eens begint met je probleem goed te omschrijven. Dan komt er waarschijnlijk te staan dat je als je op een willekeurige delete knop klikt altijd het laatste record uit de database vewijdert.
De oorzaak daarvan is dat je 1 form hebt met daarin tig artikelen en tig 'delete' buttons en tig hidden inputs met de naam 'articleID'. Dit is dus een html probleem en geen php probleem. Aangezien je zelf zegt php niet goed te snappen, maar html blijkbaar wel ga ik er nu vanuit dat je zelf de oplossing wel kan gaan vinden.... toch?
Mijn excuses eh.. ik vraag toch gewoon maar hulp omdat ik het probleem zelf niet zie.. ik kan mij makkelijk behelpen met html das waar, maar er zijn altijd foutjes waar je over kijkt, zeker als er dan ook php bij komt kijken. het probleem is idd dat als ik op een delete knop klik het artikel niet verwijdert, ik heb dit stukje
code uitgehaald en gewoon als aparte form getest waar ik de ID zelf ingeef en daar verwijdert die wel. maar éénmaal die submit knop in de while loop staat blijkt dit een probleem.
Erwin wat bedoel je juist met tig artikelen tig delete? zie jij het probleem dan wel?
Kijk eens in de broncode van de pagina.
Je zal daar inputs, submit knoppen zien met allemaal dezelfde naam.
Hetgeen betekent dat alleen de laatste zal worden meegenomen.

Dus misschien is het een idee om een checkbox bij de artikelen te zetten.

<input type="checkbox" name="deleteMe[]" value="<?php echo $article_id; ?>">

Je krijgt dan in PHP een post:
<?php
echo '<pre>', var_dump($_POST['deleteMe']);
Kijk eens niet in je php file, maar in de html code die je in je browser krijgt en tel daar eens het aantal forms en het aantal delete buttons in het form. En bedenk dan (wat je zou moeten weten als je web sites bouwt) dat je nooit meer dan 1 input met hetzelfde name attribuut in een form kan hebben...
Erwin, dus niet meer dan 1 submit button per form bedoel je?
ik heb dan maar dat stukje met de inputs verwijderd uit de while en daar de checkbox gezet
een aparte form onder de andere gemaakt met alleen de submit delete button maar het lukt steeds niet..
Bedankt gaste voor de hulp maar kom er echt nie uit hoor, en van al het googelen word ik niet wijzer
vermits ik het probleem niet 100% door heb.. toch graag assistentie aub :(


<?php
elseif(isset($_POST['delete'])){
			$id = intval($_POST['articleID']);
			$query="DELETE FROM nieuws WHERE id=$id";
			mysql_query($query);
			header("location: user.php");
		}
?>
<form action="user.php" method="post">
<input type="submit" name="delete" value="verwijderen" />
</form>
<?php
$query="SELECT id,datum,titel,artikel FROM nieuws ORDER BY id DESC";
$result = mysql_query($query);
while(list($id,$datum,$titel,$artikel) = mysql_fetch_row($result)){
echo("<div id=\"artikeltitel\" align=\"center\">
			<div id=\"containerdatum\">$datum</div>
			<div id=\"containertitel\">$titel</div>
			<div id=\"container3\" style=\"font-size:12px;\">$id
				<input type=\"checkbox\" name=\"deleteMe[]\" value=\"<?php echo $id; ?>\">
			</div>
		</div>
<div class=\"container\" align=\"center\">
		<h2 class=\"acc_trigger\"><a href=\"#\"> &#187; </a></h2>
	<div class=\"acc_container\">
	<div class=\"block\">$artikel</div>
	<div class=\"fb-comments\" data-href=\"http://www.zpb-polonez.be/user.php\" data-num-posts=\"10\" data-width=\"678\" style=\"margin-top:2px;\"></div>
	</div>
</div>
");
}
?>

Molovhic designer op 19/01/2014 22:08:27

Erwin, dus niet meer dan 1 submit button per form bedoel je?

Nee, niet meer dan 1 input element met dezelfde naam. Dat is iets anders dan 1 submit.

Niet goed:

<form>
  <input type="submit" name="delete" value="verwijder 1">
  <input type="submit" name="delete" value="verwijder 2">
  <input type="submit" name="delete" value="verwijder 3">
  <input type="submit" name="delete" value="verwijder 4">
</form>


Wel goed:

<form>
  <input type="submit" name="delete1" value="verwijder 1">
  <input type="submit" name="delete2" value="verwijder 2">
  <input type="submit" name="delete3" value="verwijder 3">
  <input type="submit" name="delete4" value="verwijder 4">
</form>




[size=xsmall]Toevoeging op 19/01/2014 22:35:42:[/size]

Toevoeging: submit buttons buiten een form plaatsen is dan nog minder effectief. Buiten een form hebben ze geen functie en gebeurt er niets (tenzij je via javascript nog iets doet, maar dat raad ik niet aan).

Reageren