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;



Deel van de code:

<?php
//includes
include('config.php');

//session start
if(isset($_SESSION['id'])) {
} else{
	header("Location: index.php?pagina=beheer");
}
	// verwijderen
	if (isset($_POST['verwijder'])){
		foreach($_POST['telid'] As $value ){
			mysql_query("DELETE FROM `gsm` WHERE `id` = $value") or die (mysql_error());
			}
	}
	
	// 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;
	?>
		
    <form name="verzenden" action="" method="post">
    <h2>Bewerken</h2>
	
    <?php
		foreach($_POST['telid'] As $value ){
			echo "<input type='hidden' name='telid' value=$value />";
			
			// select
			$result2 = mysql_query("SELECT * FROM `gsm` WHERE id=$value");
			while($row2 = mysql_fetch_array( $result2 )) {
					
					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>";
	?>
wesley schreef op 18.03.2009 14:53
laatste post op dit topic *denk ik* want ik ga trainen.

Pak id van de record die je wilt aanpassen.

Toon alle gegevens van deze persoon, door de gegevens gekoppeld aandat id op te halen.

Update vervolgens, waar de id gelijk is aan de id die je net ophaalt.

simpel. zo simpel is het. 1 query maar nodig ook.

Succes ermee, en tot later ;)


Hoe kan ik alle gegevens tonen van de persoon welke gekoppeld zijn aan dat bepaalde id van dat persoon. De lukt als enige nog niet.
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">&nbsp;</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.
bedankt voor die tip van session die was ik vergeten een keer terug te zetten. maar de veiligheid kijk ik pas na als het werkt.

Hier zit ergens het probleem voor het wijzigen, alleen kom ik er niet uit:
<?php
  // 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;
                    }
                } 
        }?>


Foutmelding zie www.rickvanderheiden.nl
Zoals je ziet bestaan de POST-vars niet. Een varnaam begint trouwens nooit met een cijfer. Werkt namelijk niet.

Reageren