userid ophalen uit database mislukt
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!):
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?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>
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
Gewijzigd op 03/02/2014 16:40:07 door Dimitri Geers
- 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!
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!
Gewijzigd op 03/02/2014 16:41:49 door - Ariën -
- Aar - op 03/02/2014 16:36:12:
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!
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.
Gewijzigd op 03/02/2014 16:42:53 door Dimitri Geers
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...
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.
Code (php)
1
2
3
4
5
2
3
4
5
<?php
if(isset($_GET['stad'])){ // Controleren of stad in de link staat
$stadid = mysql_real_escape_string($_GET['stad']); // Extra beveiliging
}
?>
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:
Regel 18: Je gebruik INSERT INTO. Ooit al naar de juiste INSERT gekeken? Je geeft niet aan wat er geinsert moet worden:
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.
Regel 7 & 10: Gebruik geen Wildcards (*)
Regel 12 en 14 kunnen in 1:
Regel 18: Je gebruik INSERT INTO. Ooit al naar de juiste INSERT gekeken? Je geeft niet aan wat er geinsert moet worden:
Tevens bestaat $userid nog niet, deze wordt pas later in een variabele gezet.
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.
Code (php)
1
2
3
4
5
2
3
4
5
<?php
if(isset($_GET['stad'])){ // Controleren of stad in de link staat
$stadid = mysql_real_escape_string($_GET['stad']); // Extra beveiliging
}
?>
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:
Regel 18: Je gebruik INSERT INTO. Ooit al naar de juiste INSERT gekeken? Je geeft niet aan wat er geinsert moet worden:
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?
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.
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 zet geeft deze niks aan.
Gewijzigd op 03/02/2014 18:41:28 door Ger van Steenderen
or die(mysql_error());
Alhoewel het niet de beste manier is om fouten op te vragen.
Frank Martens:
Regel 18: Je gebruik INSERT INTO. Ooit al naar de juiste INSERT gekeken? Je geeft niet aan wat er geinsert moet worden:
Dat hoeft ook niet als het aantal waarden in de VALUES list overeenkomt met het aantal kolommen in de tabel.
Neemt niet weg dat het vele voordelen heeft om het wel te doen.
Heb je ook alle andere error's aanstaan?
Frank Martens op 03/02/2014 19:13:15:
Klopt inderdaad Ger, alleen als je 1 veld toevoegt kan je alle scripts weer wijzigen. Beter in 1x goed, levert in de toekomst minder problemen op. Tevens mysqli gebruiken, Mysql gaat er op termijn uit.
Heb je ook alle andere error's aanstaan?
Heb je ook alle andere error's aanstaan?
De volgende code heb ik nu:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
include("dimitrigeers.php");
if(isset($_GET['stad'])){ // Controleren of stad in de link staat
$stadid = mysql_real_escape_string($_GET['stad']); // Extra beveiliging
}
$sql = mysql_query("SELECT * FROM steden WHERE stadid='".$stadid."' ") or die('Invalid query: ' . mysql_error());;
$row = mysql_fetch_assoc($sql);
$sql2 = mysql_query("SELECT * FROM vrijwilliger ORDER BY userid") or die('Invalid query: ' . mysql_error());;
$userid = $row2['userid'];
if(isset($_POST['submit'])){
mysql_query("
INSERT INTO aanwezigen(id,userid,stadid) VALUES ('','$userid','$stadid')
") or die('Invalid query: ' . mysql_error());;
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 />";
}
echo "<br /><input type='submit' name='submit' value='Opslaan'>";
echo "</form>";
?>
</body>
</html>
include("dimitrigeers.php");
if(isset($_GET['stad'])){ // Controleren of stad in de link staat
$stadid = mysql_real_escape_string($_GET['stad']); // Extra beveiliging
}
$sql = mysql_query("SELECT * FROM steden WHERE stadid='".$stadid."' ") or die('Invalid query: ' . mysql_error());;
$row = mysql_fetch_assoc($sql);
$sql2 = mysql_query("SELECT * FROM vrijwilliger ORDER BY userid") or die('Invalid query: ' . mysql_error());;
$userid = $row2['userid'];
if(isset($_POST['submit'])){
mysql_query("
INSERT INTO aanwezigen(id,userid,stadid) VALUES ('','$userid','$stadid')
") or die('Invalid query: ' . mysql_error());;
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 />";
}
echo "<br /><input type='submit' name='submit' value='Opslaan'>";
echo "</form>";
?>
</body>
</html>
Dan zie je zelf wat er fout gaat.
- SanThe - op 03/02/2014 21:48:00:
Zet de errors eens aan.
Dan zie je zelf wat er fout gaat.
Dan zie je zelf wat er fout gaat.
Notice: Undefined variable: row2 in /home/ldekrma109/domains/ldekrakertransport.nl/public_html/events4u/stad.php on line 17
Dit krijg ik
Die bestaat daar ook niet.
- SanThe - op 03/02/2014 21:58:47:
Klopt.
Die bestaat daar ook niet.
Die bestaat daar ook niet.
Hoe kan ik dit oplossen?
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
#$row = mysql_fetch_assoc($sql); // WEGHALEN
while($row = mysql_fetch_assoc($sql)){
$userid = $row['userid'];
}
?>
#$row = mysql_fetch_assoc($sql); // WEGHALEN
while($row = mysql_fetch_assoc($sql)){
$userid = $row['userid'];
}
?>
Als je nogsteeds de error krijgt ligt het nietmeer aan je query, maar aan de database.
E: Typo
Je bent trouwens al aan het echoën voordat je <html> begint.
En html verwacht dubbele quotes, geen enkele.