Beste,

Ik ben bezig met een systeem in php.
Ik heb de code al maar deze werkt helaas niet.

Hier even een snelle uitleg over de code.
Hij zou een userid moeten ophalen uit de database en deze vervolgens weer in een andere database moeten zetten.
Dit werkt niet. Het gaat over $userid = $row2['userid'];

Hier de code (sorry dat het een zooi is!):

<?php

include("dimitrigeers.php");

$stadid = $_GET['stad'];

$sql = mysql_query("SELECT * FROM steden WHERE stadid='".$stadid."' ");
$row = mysql_fetch_assoc($sql);

$sql2 = mysql_query("SELECT * FROM vrijwilliger ORDER BY userid");

$submit = $_POST['submit'];

if($submit){

	mysql_query("
	   
	INSERT INTO aanwezigen VALUE ('','$userid','$stadid')
	   
	");
	
	echo "Succesvol opgeslagen!";

}

?>
<html>

<head>
<title><?php echo $row['naam']; ?> | EVENTS4U</title>
<meta name="viewport" content="width=device-width; initial-scale=1.0" />
</head>

<body>

<?php

echo "<a href='index.php'>Ga terug</a><br /><br /><b>".$row['naam']." ".$row['datum']."</b><br /><br />";

echo "<form action='stad.php?stad=".$stadid."' method='POST'>";

while($row2=mysql_fetch_assoc($sql2)){
echo "<input type='checkbox' name='".$row2['naam']."'> ".$row2['naam']." ".$row2['rang']."<br />";
$userid = $row2['userid'];
}

echo "<br /><input type='submit' name='submit' value='Opslaan'>";

echo "</form>";

?>

</body>

</html>



Hopelijk kan iemand mij helpen.

Met vriendelijke groet,
Dimitri Geers
- Aar - op 03/02/2014 16:36:12

[modedit="- Aar -"]beste Dimitri,
Meerdere mensen op dit PHPhulp forum hebben problemen met hun PHP-code, daarom verzoek ik je vriendelijk om je bericht aan te passen en een betere titel te gebruiken.

Ook wil ik je daarbij graag vragen om [code]-tags om je code heen te plaatsen voor betere leesbaarheid.

Alvast bedankt!


Sorry, heb het veranderd.

Je geeft al aan dat je code een zooi is, maar waarom maak je het dan niet netter?
Zo zie ik:
- Dat je onnodig variabelen overschrijft
- SQL-injection is mogelijk, doordat de de invoer van je GET en POST niet controleert met mysql_real_escape_string()
- Je controleert verkeerd of je formulier verstuurd is. Dat kan je beter doen met: if($_SERVER['REQUEST_METHOD']=="POST") {
- Variabelen horen buiten quotes
- Er mist foutafhandeling op je querie...
Opmerkingen op je code:

Regel 5: Controleer eerst of er wel een get bestaat. Je maakt gebruik van een DB (Database), dus heb je beveiliging nodig. Mysql_real_escape_string is hiervoor een optie.

<?php
if(isset($_GET['stad'])){ // Controleren of stad in de link staat
$stadid = mysql_real_escape_string($_GET['stad']); // Extra beveiliging
}
?>

Regel 7 & 10: Gebruik geen Wildcards (*)
Regel 12 en 14 kunnen in 1:

<?php
if(isset($_POST['submit'])){
// rest
}
?>


Regel 18: Je gebruik INSERT INTO. Ooit al naar de juiste INSERT gekeken? Je geeft niet aan wat er geinsert moet worden:


INSERT INTO aanwezigen(kolomnaam1,user_id,stad_id) VALUES ('','$userid','$stadid')


Tevens bestaat $userid nog niet, deze wordt pas later in een variabele gezet.
Frank Martens op 03/02/2014 16:47:12

Opmerkingen op je code:

Regel 5: Controleer eerst of er wel een get bestaat. Je maakt gebruik van een DB (Database), dus heb je beveiliging nodig. Mysql_real_escape_string is hiervoor een optie.

<?php
if(isset($_GET['stad'])){ // Controleren of stad in de link staat
$stadid = mysql_real_escape_string($_GET['stad']); // Extra beveiliging
}
?>

Regel 7 & 10: Gebruik geen Wildcards (*)
Regel 12 en 14 kunnen in 1:

<?php
if(isset($_POST['submit'])){
// rest
}
?>


Regel 18: Je gebruik INSERT INTO. Ooit al naar de juiste INSERT gekeken? Je geeft niet aan wat er geinsert moet worden:


INSERT INTO aanwezigen(kolomnaam1,user_id,stad_id) VALUES ('','$userid','$stadid')


Tevens bestaat $userid nog niet, deze wordt pas later in een variabele gezet.


Na deze aanpassingen wordt de userid nog steeds in de database gezet als 0.
Zou u mij misschien nog verder kunnen helpen?
"Tevens bestaat $userid nog niet, deze wordt pas later in een variabele gezet."
Heb je dit aangepast?

Zet $userid = $row2['userid']; eens onder de $sql12 neer.
Frank Martens op 03/02/2014 17:05:31

"Tevens bestaat $userid nog niet, deze wordt pas later in een variabele gezet."
Heb je dit aangepast?

Zet $userid = $row2['userid']; eens onder de $sql12 neer.


Deze heb ik eronder gezet, geen resultaat in de database.
Bouw eens een foutenafhandeling in je Query en zet de errors eens aan?
Frank Martens op 03/02/2014 17:33:16

Bouw eens een foutenafhandeling in je Query en zet de errors eens aan?


Als ik achter alle Query's
or die(mysql_error)
zet geeft deze niks aan.
Waarschijnlijk heb je in de tabel een default value 0 ingesteld voor de kolom user_id, en zoals eerder aan gegeven bestaat $user_id niet als je de insert query uitvoert.

Reageren