Wanneer ik gegevens wijzig en op "Opslaan" druk krijg ik de melding dat de wijzigingen goed zijn doorgevoerd, maar er wordt niks gewijzigd en opgeslagen in de database. Ik denk zelf dat het aan het volgende stukje script ligt:
// opslaan
if (isset($_POST['opslaan'])){
for ($i = 0; $i <= $_POST['maxid'];$i++){
if (isset($_POST[$i])){
$naam = $i."naam";
$afdeling = $i."afdeling";
$internnummer = $i."internnummer";
$nummer = $i."nummer";
$inlog = $i."inlog";
mysql_query("UPDATE gsm SET
`naam` = '".$_POST[$naam]."',
`afdeling` = '".$_POST[$afdeling]."',
`nummer` = '".$_POST[$nummer]."',
`internnummer` = '".$_POST[$internnummer]."',
`inlog` = '".$_POST[$inlog]."',
WHERE `id` = $i
") or die (mysql_error());
}
}
echo "De gegevens zijn succesvol bijgewerkt.<br>";
}
// bewerken
if (isset($_POST['update'])){
$maxid = 0;
Het ophalen van de gegevens gekoppeld aan een id lukt wel, alleen nu het wijzigen van deze gegevens lukt nog niet helemaal. Bij de Update moet het id gelijk zijn aan het id wat eerder is opgehaald. hoe kan ik dit doen.
Zie script:
<?php
ini_set('display_errors' , 1);
error_reporting(E_ALL);
//includes
include('config.php');
include('dbcon.php');
//session start
if(isset($_SESSION['id'])) {
} else{
header("Location: index.php?pagina=beheer");
}
// verwijderen
if (isset($_POST['verwijder'])){
foreach($_POST['telid'] As $value ){
$sql1 = "DELETE FROM gsm WHERE id = $value";
$query1 = mysql_query($sql1);
if (!$query1) {
echo "Foutje in je query: ".mysql_error().".<br />De query was: ".$sql1;
}
else{
echo "SQL klopt: ".$sql1;
}
}
}
// opslaan
if (isset($_POST['opslaan'])){
for ($i = 0; $i <= $_POST['maxid'];$i++){
echo "nr 1, doorgaan naar nr 2<br />";
if(isset($i)) {
echo "nr 2, doorgaan naar nr 3<br />";
$naam = $i."naam";
$afdeling = $i."afdeling";
$internnummer = $i."internnummer";
$nummer = $i."nummer";
$inlog = $i."inlog";
echo "nr 3, doorgaan naar nr 4<br />";
mysql_query("UPDATE gsm SET naam = '".$_POST[$naam]."',
afdeling = '".$_POST[$afdeling]."',
nummer = '".$_POST[$nummer]."',
internnummer = '".$_POST[$internnummer]."',
inlog = '".$_POST[$inlog]."',
WHERE id = $i")
or die (mysql_error());
echo "nr 4, doorgaan naar nr 5<br />";
}
echo "nr 5 debugging gestopt.<br />Succesvol uitgewerkt. Ook de query";
}
//echo "De gegevens zijn succesvol bijgewerkt.<br>";
}
// bewerken
if (isset($_POST['update'])){
$maxid = 0;
?>
<form name="verzenden" action="" method="post">
<h2>Bewerken</h2>
<?php
foreach($_POST['telid'] As $value ){
echo "<input type='hidden' name='telid' value=$value />";
// select
$sql3 = "SELECT * FROM gsm WHERE id=$value";
$query3 = mysql_query($sql3);
if (!$query3) {
echo "Foutje in je query: ".mysql_error().".<br />De query was: ".$sql3;
}
else{
echo "SQL klopt: ".$sql3;
}
while($row2 = mysql_fetch_array( $query3 )) {
echo "<b>".$row2['naam']."</b><br>";
echo "<table>";
echo "<td>Naam: </td><td><input type='text' size='25' name='".$id."naam' value='".$row2['naam']."' /></td>";
echo "</tr><tr>";
echo "<td>Telefoonnummer: </td><td><input type='text' size='25' name='".$id."nummer' value='".$row2['nummer']."' /></td>";
echo "</tr><tr>";
echo "<td>Inlognaam: </td><td><input type='text' size='25' name='".$id."inlog' value='".$row2['inlog']."' /></td>";
echo "</tr><tr>";
echo "<td>Afdeling: </td><td><input type='text' size='25' name='".$id."afdeling' value='".$row2['afdeling']."' /></td>";
echo "</tr><tr>";
echo "<td>Intern verkort nummer: </td><td><input type='text' size='25' name='".$id."internnummer' value='".$row2['internnummer']."' /></td>";
echo "</tr></table>";
if ($id > $maxid){
$maxid = $id;
}
}
}
echo "<input type='hidden' name='maxid' value='".$maxid."' />";
?>
<br>
<center>
<input type='submit' name='opslaan' value='Opslaan' />
</center>
</form>
<?php
} else {
echo "<h2>Gegevens bewerken</h2>";
?>
<!--Select script-->
<SCRIPT TYPE="text/javascript">
function veranderscript() {
if (document.bewerk.groep.value == 1) location = 'index.php?pagina=internbewerk';
else if (document.bewerk.groep.value == 2) location = 'index.php?pagina=buitenlijnbewerk';
else if (document.bewerk.groep.value == 3) location = 'index.php?pagina=gsmbewerk';
}
</SCRIPT>
<FORM NAME="bewerk" ACTION="">
<P><SELECT NAME="groep" ONCHANGE="veranderscript();">
<OPTION SELECTED>Kies een groep...
<OPTION VALUE="1">Interne nummers
<OPTION VALUE="2">Directe buitenlijn nummers
<OPTION VALUE="3">GSM nummers
</SELECT></P>
</FORM>
<!--Zoekfunctie-->
<form method="post" name="search-form" action="">
<input type="text" name="zoek" value="" />
<input type="submit" id="submit" value="zoeken" />
</form>
<br><br>
<?php
/* selectie lijst printen */
if (isset($_POST['zoek'])){
$zoekterm = $_POST['zoek'];
} else {
$zoekterm = "";
}
?>
<form name="bewerkform" action="" method="post">
<input type='submit' value="Bewerk" name="update" />
<input type='submit' value="Verwijder" name="verwijder" /><br><br>
<table BORDER="0" ALIGN="left">
<tr align='left'>
<td width="50"> </td>
<td width="180"><b>Naam</b></td>
<td width="140"><b>Telefoonnummer</b></td>
<td width="100"><b>Inlognaam</b></td>
<td width="250"><b>Afdeling</b></td>
<td width="180"><b>Intern verkort nummer</b></td>
</tr>
<?php
$sql3 = "SELECT * FROM gsm WHERE naam LIKE '%$zoekterm%' ORDER BY naam ASC";
$query3 = mysql_query($sql3);
if (!$query3) {
echo "Foutje in je query: ".mysql_error().".<br />De query was: ".$sql3;
}
else{
echo "SQL klopt: ".$sql3;
}
while($row2 = mysql_fetch_array( $query3 )) {
$id = $row2['id'];
$sql4 = "SELECT * FROM gsm WHERE `id`=$id";
$query4 = mysql_query($sql4);
if (!$query4) {
echo "Foutje in je query: ".mysql_error().".<br />De query was: ".$sql3;
}
else{
echo "SQL klopt: ".$sql4;
}
while($row4 = mysql_fetch_array( $query4 )) {
$naam = $row4['naam'];
}
echo "<tr align='left'>";
echo "<td width='20'><input type='checkbox' value=".$row2['id']." name='telid[]' /></td>";
echo "<td cwidth='180'>".$row2['naam']."</td>";
echo "<td width='140'>".$row2['nummer']."</td>";
echo "<td width='100'>".$row2['inlog']."</td>";
echo "<td width='250'>".$row2['afdeling']."</td>";
echo "<td width='20'>".$row2['internnummer']."</td>";
echo "</tr>";
}
?>
</table>
</form>
<?php
}
?>
<br><br>
Zie rickvanderheiden.nl voor een paar screenshots.
Waarom een lege if en een gevulde else?
<?php
if(isset($_SESSION['id'])) {
} else{
header("Location: index.php?pagina=beheer");
}
?>
Een uitroepteken (! voor isset) staat voor NOT.
Dit heeft dus hetzelfde effect.
<?php
if(!isset($_SESSION['id'])) {
header("Location: index.php?pagina=beheer");
}
?>
Verder zie ik dat je steeds de userinput (GET POST ect.) direct in een query zet. Dat is dus een lek en vragen om problemen. Lees eens over sql-injection.