userid ophalen uit database mislukt

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Dimitri Geers

Dimitri Geers

03/02/2014 16:33:14
Quote Anchor link
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!):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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
Gewijzigd op 03/02/2014 16:40:07 door Dimitri Geers
 
PHP hulp

PHP hulp

29/03/2024 13:21:24
 
- Ariën  -
Beheerder

- Ariën -

03/02/2014 16:36:12
Quote Anchor link
- 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!
Gewijzigd op 03/02/2014 16:41:49 door - Ariën -
 
Dimitri Geers

Dimitri Geers

03/02/2014 16:40:40
Quote Anchor link
- 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!


Sorry, heb het veranderd.
Gewijzigd op 03/02/2014 16:42:53 door Dimitri Geers
 
- Ariën  -
Beheerder

- Ariën -

03/02/2014 16:44:04
Quote Anchor link
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...
 

03/02/2014 16:47:12
Quote Anchor link
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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
}
?>

Regel 7 & 10: Gebruik geen Wildcards (*)
Regel 12 en 14 kunnen in 1:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
INSERT INTO aanwezigen(kolomnaam1,user_id,stad_id) VALUES ('','$userid','$stadid')


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

Dimitri Geers

03/02/2014 17:02:57
Quote Anchor link
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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
}
?>

Regel 7 & 10: Gebruik geen Wildcards (*)
Regel 12 en 14 kunnen in 1:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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?
 

03/02/2014 17:05:31
Quote Anchor link
"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.
 
Dimitri Geers

Dimitri Geers

03/02/2014 17:07:19
Quote Anchor link
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.
 

03/02/2014 17:33:16
Quote Anchor link
Bouw eens een foutenafhandeling in je Query en zet de errors eens aan?
 
Dimitri Geers

Dimitri Geers

03/02/2014 17:44:22
Quote Anchor link
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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
or die(mysql_error)
zet geeft deze niks aan.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

03/02/2014 18:40:49
Quote Anchor link
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.
Gewijzigd op 03/02/2014 18:41:28 door Ger van Steenderen
 
- Ariën  -
Beheerder

- Ariën -

03/02/2014 18:57:32
Quote Anchor link
En het is:

or die(mysql_error());

Alhoewel het niet de beste manier is om fouten op te vragen.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

03/02/2014 19:11:28
Quote Anchor link
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.
 

03/02/2014 19:13:15
Quote Anchor link
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?
 
Dimitri Geers

Dimitri Geers

03/02/2014 21:36:40
Quote Anchor link
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?


De volgende code heb ik nu:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>
 
- SanThe -

- SanThe -

03/02/2014 21:48:00
Quote Anchor link
Zet de errors eens aan.
Dan zie je zelf wat er fout gaat.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);

// rest vab het script
?>
 
Dimitri Geers

Dimitri Geers

03/02/2014 21:54:01
Quote Anchor link
- SanThe - op 03/02/2014 21:48:00:
Zet de errors eens aan.
Dan zie je zelf wat er fout gaat.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);

// rest vab het script
?>


Notice: Undefined variable: row2 in /home/ldekrma109/domains/ldekrakertransport.nl/public_html/events4u/stad.php on line 17

Dit krijg ik
 
- SanThe -

- SanThe -

03/02/2014 21:58:47
Quote Anchor link
Klopt.
Die bestaat daar ook niet.
 
Dimitri Geers

Dimitri Geers

03/02/2014 22:00:13
Quote Anchor link
- SanThe - op 03/02/2014 21:58:47:
Klopt.
Die bestaat daar ook niet.


Hoe kan ik dit oplossen?
 

03/02/2014 22:03:06
Quote Anchor link
Doe het zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
#$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
Gewijzigd op 03/02/2014 22:03:54 door
 
- SanThe -

- SanThe -

03/02/2014 22:03:59
Quote Anchor link
Logica aanpassen.
Je bent trouwens al aan het echoën voordat je <html> begint.
En html verwacht dubbele quotes, geen enkele.
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.