Archief - probleem met post variabele

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Close_Up

Legacy Member
Op de eerste pagina heb ik een lijst met leden met basis info. Daar kunt ge selecteren bij welk lid ge meer informatie wilt zien. Dat lukt allemaal die informatie tonen op het 2de scherm ook.

Het enige wat doorgegeven wordt naar de 2de pagina is het Id en dat via post. Dus die wordt op de 2de pagina dan ook opgehaald en daarmee wordt de verdere informatie uit een database gehaald.

Maar nu zou ik ook een knoppen als wijzigen/nieuwe toevoegen etc ... willen hebben wat dus de informatie naar de database schrijft. Op zich niet echt een probleem maar hier als ik op een knop klik dan herlaad de pagina zich en zit er dus niks in die post variabele en wordt er ook geen informatie meer opgehaald en dus ook geen informatie geupdate.

Dit is de code die ik heb(waarschijnlijk heel rommelig en niet echt goed maar het is al ff geleden dat ik er nog mee bezig ben geweest en ik was er sowieso al niet zo super in)

PHP:
<?php 

$server = "";	// server to connect to.
$database = "";	// the name of the database.
$db_user = "";	// mysql username to access the database with.
$db_pass = "";	// mysql password to access the database with.
$table="Leden";

// connect to the mysql server
$link = mysql_connect($server, $db_user, $db_pass)
or die ("Could not connect to mysql because ".mysql_error());

// select the database
mysql_select_db($database)
or die ("Could not select database because ".mysql_error());



//$rows = 20;	 the number of table rows to display
print $_POST["Detail"];
if ($_POST["Detail"]!="")
$Id= $_POST["Detail"];
print $Id;
// read data from database

Print"Dit is een test";

$result = mysql_query("select * from $table where L_Id= $Id", $link)
or die ("Could not read data because ".mysql_error());
//print ("Dit is het gekozen ID: " . $_POST["Detail"]);

while ($qry = mysql_fetch_array($result)) {
$Id=$qry[0];
$Naam=$qry[2];
$Voornaam=$qry[1];
$Gebdatum=$qry[3];
$Adres=$qry[4];
$GSM=$qry[5];
$Tel=$qry[6];
$Email=$qry[7];
$Functie=$qry[8];
$Instrument=$qry[9];
}

print "<form id=\"form1\" name=\"form1\" method=\"POST\" action=\"\">
<table width=\"50%\" border=\"0\" cellpadding=\"1\">
  <tr>
    <td width=30%>Id:</td>
    <td width=70%><input type=\"text\" name=\"Id\" size=\"50\" disabled=\"disabled\" value=". $Id . "></td>
  </tr>
  <tr>
    <td>Naam:</td>
    <td><input type=\"text\" name=\"Naam\" size=\"50\" value=\"" . $Naam . "\"></td>
  </tr>
  <tr>
    <td>Voornaam:</td>
    <td><input type=\"text\" name=\"Voornaam\" size=\"50\" value=\"" . $Voornaam . "\"></td>
  </tr>
  <tr>
    <td>Geboortedatum</td>
    <td><input type=\"text\" name=\"Geboortedatum\" size=\"50\" value=\"" . $Gebdatum ."\"></td>
  </tr>
  <tr>
    <td>Adres</td>
    <td><input type=\"text\" name=\"Adres\" size=\"50\" value=\"" . $Adres ."\"></td>
  </tr>
  <tr>
    <td>GSM:</td>
    <td><input type=\"text\" name=\"GSM\" size=\"50\" value=\"" . $GSM . "\"></td>
  </tr>
  <tr>
    <td>Telefoon:</td>
    <td><input type=\"text\" name=\"Telefoon\" size=\"50\" value= \"". $Tel ."\"></td>
  </tr>
  <tr>
    <td>Email</td>
    <td><input type=\"text\" name=\"Email\" size=\"50\" value=\"" . $Email . "\"></td>
  </tr>	
  <tr>
    <td>Functie:</td>
    <td><input type=\"text\" name=\"Functie\" size=\"50\" value=\"" .$Functie ."\"></td>
  </tr>
  <tr>
    <td>Instrument</td>
    <td><input type=\"text\" name=\"Instrument\" size=\"50\" value=\"" . $Instrument ."\"></td>
  </tr>
  </table> 
   <input type=\"submit\" name=\"Submit\" value=\"Leegmaken\" />
    <input type=\"submit\" name=\"Submit\" value=\"Wijzigen\" />
    <input type=\"Submit\" name=\"Submit\" value=\"Verwijderen\" />
   <input type=\"submit\" name=\"Submit\" value=\"Toevoegen\" />";
  
  
if(isset($_POST['Submit'])) 
{
	if($_POST['Submit'] == "Leegmaken")
	{
		$Id="";
		$Naam="";
		$Voornaam="";
		$Gebdatum="";
		$Adres="";
		$GSM="";
		$Tel="";
		$Email="";
		$Fucntie="";
		$Instrument="";
		
	}
	if($_POST['Submit'] == "Wijzigen")
	{
	$result = mysql_query("Update Leden Set L_Naam=$naam,L_Voornaam=$Voornaam,L_Gebdatum=$Gebdatum,L_Adres=$Adres,L_GSM=$GSM,L_Tel=$Tel,L_Email=$Email,L_Functie=$Functie,L_Instrument=$Instrument where L_Id=$Id", $link)
	or die ("Could not read data because ".mysql_error());
	$Id=$_POST['Detail'];
	print $naam;

	}
	if($_POST['Submit'] == "Toevoegen")
	{
	
	}
	if($_POST['Submit'] == "Verwijderen")
	{
		
	}
}
	
print "</form>";
	
?>

FurtiveDuck

Legacy Member
Het is natuurlijk niet de ideale oplossing, maar ik verwijs altijd bij de action van een form naar een ander bestand waar de PHP in staat. Alles wordt dan netjes verwerkt en dan wordt ge terug gebracht naar de pagina waar je de wijzingen eigenlijk hebt aangebracht.

Ge kunt natuurlijk werken met den include waar der dan functies in staan die ge oproept als ge nen knop in duwt.

Wat ik ook niet zo goe versta is waarom je je knoppen niet noemt zoals je ze wilt noemen, nu gebruik je echt die values en da's, zo hebben wij gezien, toch niet de juiste manier. Op deze manier kun je zonder problemen knoppen iets laten doen via de juiste naam.

Code:
if(isset($_POST["btnVerwijderen"])) {

echo "De gebruiker werd verwijderd."

}

Wat er hier waarschijnlijk mis gaat is het feit dat je:

1. Een nieuwe waarde stopt in je id, terwijl er in feite al iets juists instaat:

Code:
$Id=$qry[0];

2. Een nieuwe form maakt waar alle gegevens in moeten komen en je geeft het veld dezelfde naam als uw variabele (nl. Id). Daardoor gaat alles verkeerd denk ik zo.

Nu, je kan natuurlijk dat veld van je form die ID bevat een andere naam geven en dan vanonder de query updaten door als ID de waarde van dat veld te geven, maar da's eigenlijk allemaal een beetje onbegonnen werk. Fix eerst eens die dingen die ik hierboven heb gezegd en kom dan eens terug.

Voor de rest - ik ben ook maar een leek in PHP, maar dat waren zo de eerste dingen die ik zag.

Edit:

Je gebruikt een POSTformulier, maar je als je de gegevens uit de velden nodig hebt roep je ze wel niet op via post.

Gegevens uit veld Naam: $_POST["Naam"];
Gegevens uit veld ID (int): $_POST[Id];

sarnath

Legacy Member
gewoon in een sessievariabele steken?
maar das niet echt nodig, werk gewoon met een hidden field?

je kan bijvoorbeeld iets doen als:

startform:
<form method="post" action="detailform.php">
<input type="hidden" name="gebruiker_id" value="de id variabele">
<input type="submit" value="Detailform">
</form>

detailform:
<form method="post" action="detailform.php">
<input type="hidden" name="gebruiker_id" value="$_POST['gebruiker_id']">
<input type="submit" value="Aanpassen">
<input type="submit" value="Verwijderen">
</form>

aanpasform
gebruiker_id = $_POST['gebruiker_id']

verwijderform
gebruiker_id = $_POST['gebruiker_id']
FurtiveDuck zei:
Wat ik ook niet zo goe versta is waarom je je knoppen niet noemt zoals je ze wilt noemen, nu gebruik je echt die values en da's, zo hebben wij gezien, toch niet de juiste manier. Op deze manier kun je zonder problemen knoppen iets laten doen via de juiste naam.

hoe hij t doet is nochtans niks mis mee hoor :)

adrianhates

Legacy Member
ik doe het meestal ook op de manier van linckxs
echter in een sessie variabele posten kan ook een goeie oplossing zijn :)

Close_Up

Legacy Member
Ik heb nu een aantal aanpassingen gemaakt zoals FurtiveDuck gezegd had.

De php ivm de afhandeling van het de knoppen op het formulier staat nu op een andere php pagina. Maar dan het klikken op die knop gaat het dan ook naar die pagina, hoe kan ik er voor zorgen dat hij gewoon op die pagina blijft, of in ieder geval dadelijk terug gebracht wordt.

Het updaten lukt nu dus al. Merci daarvoor


/edit dat was dus simpel, header('Location: .../leden.php');

maar nu bij het klikken op aanpassen lukt het aanpassen wel maar dan bij het terugkeren naar de vorige pagina loopt het fout. Die $_post["Detail"] bestaat niet meer en dus kan de sql query ook niet uitgevoerd worden


Voor de duidelijkheid even wat ik nu heb:

Leden pagina(dit is een wordpress pagina):
Hier selecteren ze van welk lid ze de details willen zien
PHP:
<?php

$server = "";	// server to connect to.
$database = "";	// the name of the database.
$db_user = "";	// mysql username to access the database with.
$db_pass = "";	// mysql password to access the database with.
$table="Leden";

// connect to the mysql server
$link = mysql_connect($server, $db_user, $db_pass)
or die ("Could not connect to mysql because ".mysql_error());

// select the database
mysql_select_db($database)
or die ("Could not select database because ".mysql_error());


// read data from database
$result = mysql_query("select * from $table order by L_Instrument asc ", $link)
or die ("Could not read data because ".mysql_error());

// print the data in a table


if (mysql_num_rows($result)) {
print "<table cellpadding=2 cellspacing=0 border=0 width=\"100%\">\n";
print "<tr><td><b>" . "Detail" . "</b></td><td><b>" . "Naam" . "</b></td><td><b>" . "Voornaam" .  "</b></td><td><b>" . "Instrument" . "</b></td></tr>";

print "<form id=\"Leden\" name=\"Leden\" method=\"post\" action=\"leden.php\">";

while ($qry = mysql_fetch_array($result)) {
print "<tr><td><input type=radio name=Detail value="  .$qry[0] . "></td><td>" . $qry[2] . "</td><td> " . $qry[1] . "</td><td>" . $qry[L_Instrument] .  "</td></tr> ";
}
print "</table>\n";
}
?>
<a></a>
<input type="submit" name="Details Weergeven" value="Details Weergeven" />
</form>

Leden.php
Hier staat het forumulier met alle details van de gekozen persoon op pagina 1
+ hier staan knoppen voor aan te passen/verwijderen en een nieuwe toe te voegen

PHP:
<?php 

$server = "";	// server to connect to.
$database = "";	// the name of the database.
$db_user = "";	// mysql username to access the database with.
$db_pass = "";	// mysql password to access the database with.
$table="Leden";

// connect to the mysql server
$link = mysql_connect($server, $db_user, $db_pass)
or die ("Could not connect to mysql because ".mysql_error());

// select the database
mysql_select_db($database)
or die ("Could not select database because ".mysql_error());




print $_POST["Detail"];
$Id= $_POST["Detail"];

print $Id;
print "Detail: ". $_POST["Detail"];
// read data from database


/*if($_post["Detail"]== 0)
{*/
//print $_post["Detail"];

/*}else 
{*/


$result = mysql_query("select * from $table where L_Id=$Id", $link)
or die ("Could not read data because ".mysql_error());

//print ("Dit is het gekozen ID: " . $_POST["Detail"]);

while ($qry = mysql_fetch_array($result)) {
$Naam=$qry[2];
$Voornaam=$qry[1];
$Gebdatum=$qry[3];
$Adres=$qry[4];
$GSM=$qry[5];
$Tel=$qry[6];
$Email=$qry[7];
$Functie=$qry[8];
$Instrument=$qry[9];
}
//}
?>
<form id="form1" name="form1" method="POST" action="ledenwijzigen.php">

<table width="50%" border="0" cellpadding="1">
  <tr>
    <td width=30%>Id:</td>
    <td width=70%><input type="text" name="lId" size="50" value="<?php print $Id ?> "></td>
  </tr>
  <tr>
    <td>Naam:</td>
    <td><input type="text" name="lNaam" size="50" value="<?php print $Naam ?>"></td>
  </tr>
  <tr>
    <td>Voornaam:</td>
    <td><input type="text" name="lVoornaam" size="50" value="<?php print $Voornaam ?>"></td>
  </tr>
  <tr>
    <td>Geboortedatum</td>
    <td><input type="text" name="lGeboortedatum" size="50" value="<?php print $Gebdatum ?>"></td>
  </tr>
  <tr>
    <td>Adres</td>
    <td><input type="text" name="lAdres" size="50" value="<?php print $Adres ?>"></td>
  </tr>
  <tr>
    <td>GSM:</td>
    <td><input type="text" name="lGSM" size="50" value="<?php print $GSM ?>"></td>
  </tr>
  <tr>
    <td>Telefoon:</td>
    <td><input type="text" name="lTelefoon" size="50" value= "<?php print $Tel ?>"></td>
  </tr>
  <tr>
    <td>Email</td>
    <td><input type="text" name="lEmail" size="50" value="<?php print $Email ?>"></td>
  </tr>	
  <tr>
    <td>Functie:</td>
    <td><input type="text" name="lFunctie" size="50" value="<?php print $Functie ?>"></td>
  </tr>
  <tr>
    <td>Instrument</td>
    <td><input type="text" name="lInstrument" size="50" value="<?php print $Instrument ?>"></td>
  </tr>
  </table> 
   <input type="submit" name="Leegmaken" value="Leegmaken" />
    <input type="submit" name="Wijzigen" value="Wijzigen" />
    <input type="Submit" name="Verwijderen" value="Verwijderen" />
   <input type="submit" name="Toevoegen" value="Toevoegen" />
</form>

Ledenwijzigen.php
Voor het afhandelen van het wijzigen/toevoegen/verwijderen
PHP:
<?php

header('Location: /stjan/leden.php'); 

$server = "";	// server to connect to.
$database = "";	// the name of the database.
$db_user = "";	// mysql username to access the database with.
$db_pass = "";	// mysql password to access the database with.
$table="Leden";

// connect to the mysql server
$link = mysql_connect($server, $db_user, $db_pass)
or die ("Could not connect to mysql because ".mysql_error());

// select the database
mysql_select_db($database)
or die ("Could not select database because ".mysql_error());

if(isset($_POST['Leegmaken'])) 
{

}
if(isset($_POST['Wijzigen'])) 
	{
	$result = mysql_query("Update Leden Set L_Naam='$_POST[lNaam]', L_Voornaam='$_POST[lVoornaam]', L_Gebdatum='$_POST[lGeboortedatum]', L_Adres='$_POST[lAdres]', L_GSM='$_POST[lGSM]' ,L_Tel='$_POST[lTelefoon]', L_Email='$_POST[lEmail]', L_Functie='$_POST[lFunctie]', L_Instrument='$_POST[lInstrument]' where L_Id=$_POST[lId]", $link)
	or die ("Could not read data because ".mysql_error());

	}
if(isset($_POST['Toevoegen'])) 
	{
	
	}
if(isset($_POST['Verwijderen'])) 
	{
		
	}
	
?>

Curahee Q

Legacy Member
Waarom in godsnaam?
PHP:
while ($qry = mysql_fetch_array($result)) {
$Naam=$qry[2];
$Voornaam=$qry[1];
$Gebdatum=$qry[3];
$Adres=$qry[4];
$GSM=$qry[5];
$Tel=$qry[6];
$Email=$qry[7];
$Functie=$qry[8];
$Instrument=$qry[9];
}
Je overschrijft dus telkens je variable, of is het de bedoeling dat er maar 1 record wordt opgehaald. Waarom dan die while?
PHP:
$qry = mysql_fetch_array($result);
$Naam=$qry[2];
$Voornaam=$qry[1];
$Gebdatum=$qry[3];
$Adres=$qry[4];
$GSM=$qry[5];
$Tel=$qry[6];
$Email=$qry[7];
$Functie=$qry[8];
$Instrument=$qry[9];
mysql_fetch_assoc() is trouwens beter.

En werkt Ledenwijzigen.php uberhaupt wel? Vanboven in de pagina staat er:
header('Location: /stjan/leden.php');
Lijkt me dan dat je meteen terug naar /stjan/leden.php gestuurd wordt en dat de code eronder niet wordt afgehandeld.

Close_Up

Legacy Member
Het is idd de bedoeling dat er daar maar 1 record wordt opgehaald.

En ja die ledenwijzigen werkt. alles wat gedaan moet worden wordt gedaan. En dan wordt er terug gegaan naar leden.php
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan