Met boolean accepteren/afwijzen
Hallo,
Ik heb een vraag. Ik heb een systeem waarbij mensen zich kunnen aanmelden. Als die zich hebben aangemeld dan komt ie in een mysql tabel te staan. Deze gegevens worden dus op de site op een bepaalde pagina weergeven. Maar sommige mensen die vullen dus onzin in. Daarom wil ik ervoor zorgen dat een van de webmaster deze nieuwe gebruiker als eerst moet accepteren. Iemand heeft gezegd dat ik dit met boolean moet doen. Mijn eerste vraag dus; hoe moet ik die via mysql toevoegen aan mn tabel?
Mn 2e vraag gaat over 't script. Ik heb het een en ander gerotzooit met php (ben een beginner he, dus schrik niet!!!) Alleen (zoals ik dus al verwachte) doet de code het niet:P Dit heb ik:
Wil iemand me met dit (deze) problemen helpen? Alvast bedankt!
Mike,
Ik heb een vraag. Ik heb een systeem waarbij mensen zich kunnen aanmelden. Als die zich hebben aangemeld dan komt ie in een mysql tabel te staan. Deze gegevens worden dus op de site op een bepaalde pagina weergeven. Maar sommige mensen die vullen dus onzin in. Daarom wil ik ervoor zorgen dat een van de webmaster deze nieuwe gebruiker als eerst moet accepteren. Iemand heeft gezegd dat ik dit met boolean moet doen. Mijn eerste vraag dus; hoe moet ik die via mysql toevoegen aan mn tabel?
Mn 2e vraag gaat over 't script. Ik heb het een en ander gerotzooit met php (ben een beginner he, dus schrik niet!!!) Alleen (zoals ik dus al verwachte) doet de code het niet:P Dit heb ik:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
require_once('connect.php');
$accepteren = mysql_query("UPDATE accepted FROM teams SET accepted = 'true'");
if ($accepteren === false){
echo("Er ging iets fout met de query: ".mysql_error()."");
}
else{
echo 'Het team is geaccepteerd.';
}
$afwijzen = mysql_query("UPDATE accepted FROM teams SET accepted = 'false'");
if ($afwijzen === false){
echo("Er ging iets fout met de query: ".mysql_error()."");
}
else{
echo 'Het team is afgewezen.';
}
$query = mysql_query("SELECT * FROM teams WHERE accepted = 'null'") or die(mysql_error());
while($data = mysql_fetch_assoc($query)) {
echo "" . $data['naam'] . " - " . $data['teamnaam'] . " - " . $data['teamid'] . " - " . $data['email'] . " - <a href='$accepteren'>Accepteren</a> - <a href='$afwijzen'>Afwijzen</a><br>";
}
?>
require_once('connect.php');
$accepteren = mysql_query("UPDATE accepted FROM teams SET accepted = 'true'");
if ($accepteren === false){
echo("Er ging iets fout met de query: ".mysql_error()."");
}
else{
echo 'Het team is geaccepteerd.';
}
$afwijzen = mysql_query("UPDATE accepted FROM teams SET accepted = 'false'");
if ($afwijzen === false){
echo("Er ging iets fout met de query: ".mysql_error()."");
}
else{
echo 'Het team is afgewezen.';
}
$query = mysql_query("SELECT * FROM teams WHERE accepted = 'null'") or die(mysql_error());
while($data = mysql_fetch_assoc($query)) {
echo "" . $data['naam'] . " - " . $data['teamnaam'] . " - " . $data['teamid'] . " - " . $data['email'] . " - <a href='$accepteren'>Accepteren</a> - <a href='$afwijzen'>Afwijzen</a><br>";
}
?>
Wil iemand me met dit (deze) problemen helpen? Alvast bedankt!
Mike,
Om je eerste probleem aan te pakken zou je een extra kolom 'geaccepteerd' in je gebruikerstabel op kunnen nemen. In MySQL gebruik je bijvoorbeeld een TINYINT als datatype en 0 als default waarde.
Als de gebruiker door de admin geaccepteerd is, kun je deze waarde op 1 zetten. Op je overzicht met gebruikers geef je dan alleen die gebruikers weer, waar geaccepteerd op 1 staat.
Over je tweede probleem zul je toch echt speficieker moeten zijn. Wat doet het niet? Wat gaat er fout (krijg je een foutmelding)? Wat gaat er niet zoals je verwacht had?
Als de gebruiker door de admin geaccepteerd is, kun je deze waarde op 1 zetten. Op je overzicht met gebruikers geef je dan alleen die gebruikers weer, waar geaccepteerd op 1 staat.
Over je tweede probleem zul je toch echt speficieker moeten zijn. Wat doet het niet? Wat gaat er fout (krijg je een foutmelding)? Wat gaat er niet zoals je verwacht had?
Dit is de foutmelding:
Er ging iets fout met de query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM teams SET accepted = 'true'' at line 1Er ging iets fout met de query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM teams SET accepted = 'false'' at line 1
Er ging iets fout met de query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM teams SET accepted = 'true'' at line 1Er ging iets fout met de query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM teams SET accepted = 'false'' at line 1
De syntax van je UPDATE query klopt niet. Die hoort zo te zijn:
Dit heb ik gedaan. Nu komt er dit te staan:
Het team is geaccepteerd.Het team is afgewezen.
Het team is geaccepteerd.Het team is afgewezen.
Ik ga het anders aanpakken want met mn huidige aanpak werkt het niet. Ik maak gewoon voor accepteren en afwijzen een aparte pagina.
Maar een vraag: Wat is hier de fout aan dit script hierboven (dit is algemene pagina)? Want hij geeft een witte pagina bij dit script!
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
include('connect.php');
$query = mysql_query("SELECT * FROM teams WHERE accepted = 'null'") or die(mysql_error());
while($data = mysql_fetch_assoc($query)) {
echo "" . $data['naam'] . " - " . $data['teamnaam'] . " - " . $data['teamid'] . " - " . $data['email'] . " - <a href='aanmeldingadminaccept.php'>Accepteren</a> - <a href='aanmeldingadmindelete.php'>Afwijzen</a><br>";
}
?>
include('connect.php');
$query = mysql_query("SELECT * FROM teams WHERE accepted = 'null'") or die(mysql_error());
while($data = mysql_fetch_assoc($query)) {
echo "" . $data['naam'] . " - " . $data['teamnaam'] . " - " . $data['teamid'] . " - " . $data['email'] . " - <a href='aanmeldingadminaccept.php'>Accepteren</a> - <a href='aanmeldingadmindelete.php'>Afwijzen</a><br>";
}
?>
Maar een vraag: Wat is hier de fout aan dit script hierboven (dit is algemene pagina)? Want hij geeft een witte pagina bij dit script!
Offtopic: null en 'null' zijn 2 verschillende dingen, null is niks, het ontbreken van een waarde, 'null' is een string, dus een waarde.
Ontopic: Ik zou kiezen voor een kolom 'status' en daarin een status zetten, bv. 'geaccepteerd' of 'wacht op acceptatie'. Dat geeft je veel meer vrijheid en veel meer mogelijkheden. Een aparte tabel met daarin in de statussen en in je huidige tabel een foreign key op de tabel met statussen ligt natuurlijk voor de hand, dan krijg je geen dubbele data in je systeem. Kwestie van normaliseren.
Ontopic: Ik zou kiezen voor een kolom 'status' en daarin een status zetten, bv. 'geaccepteerd' of 'wacht op acceptatie'. Dat geeft je veel meer vrijheid en veel meer mogelijkheden. Een aparte tabel met daarin in de statussen en in je huidige tabel een foreign key op de tabel met statussen ligt natuurlijk voor de hand, dan krijg je geen dubbele data in je systeem. Kwestie van normaliseren.
Waar controleer jij of je query wel resultaten opgeleverd heeft? Dat weet je nu niet...
Overigens is de syntax om te controleren op een NULL waarde in een query de volgende:
Grote kans dus dat je query inderdaad geen resultaten heeft opgelevert, wat dan ook weer dat lege scherm verklaart.
Overigens is de syntax om te controleren op een NULL waarde in een query de volgende:
Grote kans dus dat je query inderdaad geen resultaten heeft opgelevert, wat dan ook weer dat lege scherm verklaart.
Misschien een domme vraag, maar hoe controleer ik de query? :P
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$sQuery = "";
if(!$rResult = mysql_query($sQuery))
{
trigger_error(mysql_error().'<br />In query: '.$sQuery);
}
elseif(mysql_num_rows($rResult) == 0)
{
// Geen resultaten
}
else
{
// Verder met je script
}
?>
$sQuery = "";
if(!$rResult = mysql_query($sQuery))
{
trigger_error(mysql_error().'<br />In query: '.$sQuery);
}
elseif(mysql_num_rows($rResult) == 0)
{
// Geen resultaten
}
else
{
// Verder met je script
}
?>
Deze opzet zou je kunnen gebruiken...
Ik heb niet alles gelezen,
Maar om te kijken of je query wel goed is,
gebruik je mysql_query()
Om te kijken of je zoekresultaat wel iets heeft opgeleverd gebruik je mysql_num_rows(), als deze 1 of meer is, is er dus iets gevonden.
Een goede query hoeft namelijk niet altijd een resultaat op te leveren.
En als je wilt kijken of een update gelukt is, gebruik je mysql_affected_rows().
Maar om te kijken of je query wel goed is,
gebruik je mysql_query()
Om te kijken of je zoekresultaat wel iets heeft opgeleverd gebruik je mysql_num_rows(), als deze 1 of meer is, is er dus iets gevonden.
Een goede query hoeft namelijk niet altijd een resultaat op te leveren.
En als je wilt kijken of een update gelukt is, gebruik je mysql_affected_rows().
@Nico: je vergeet een subtiel verschil. De functie mysql_query() gebruik je om een query uit te voeren, het resultaat ervan gebruik je om te controleren of de query gelukt is.
Is het resultaat false --> query mislukt, geef een foutmelding. In het andere geval kun je het resultaat gaan fetchen...
Is het resultaat false --> query mislukt, geef een foutmelding. In het andere geval kun je het resultaat gaan fetchen...
'nico:
Nee, die voert de query uit en levert een resource op. Wanneer deze false is, is de query mislukt.Ik heb niet alles gelezen,
Maar om te kijken of je query wel goed is,
gebruik je mysql_query()
Maar om te kijken of je query wel goed is,
gebruik je mysql_query()
Nu krijg ik:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/hlcmike/public_html/frozenage/aanmeldingadmin.php on line 76
Dit is de code die ik nu heb:
// rest van script
Wat is de fout?
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/hlcmike/public_html/frozenage/aanmeldingadmin.php on line 76
Dit is de code die ik nu heb:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
include('connect.php');
$sQuery = "SELECT naam, teamnaam, teamid, email, accepted FROM teams WHERE accepted IS NULL";
if(!$rResult = mysql_query($sQuery))
{
trigger_error(mysql_error().'<br />In query: '.$sQuery);
}
elseif(mysql_num_rows($rResult) == 0)
{
// Geen resultaten
}
else
{
while($data = mysql_fetch_assoc($query)) {
echo "" . $data['naam'] . " - " . $data['teamnaam'] . " - " . $data['teamid'] . " - " . $data['email'] . " - <a href='aanmeldingadminaccept.php'>Accepteren</a> - <a href='aanmeldingadmindelete.php'>Afwijzen</a><br>";
}
?>
include('connect.php');
$sQuery = "SELECT naam, teamnaam, teamid, email, accepted FROM teams WHERE accepted IS NULL";
if(!$rResult = mysql_query($sQuery))
{
trigger_error(mysql_error().'<br />In query: '.$sQuery);
}
elseif(mysql_num_rows($rResult) == 0)
{
// Geen resultaten
}
else
{
while($data = mysql_fetch_assoc($query)) {
echo "" . $data['naam'] . " - " . $data['teamnaam'] . " - " . $data['teamid'] . " - " . $data['email'] . " - <a href='aanmeldingadminaccept.php'>Accepteren</a> - <a href='aanmeldingadmindelete.php'>Afwijzen</a><br>";
}
?>
// rest van script
Wat is de fout?
Dat je op regel 16 $query gebruikt waar je eigenlijk $rResult moet gebruiken. Dat is immers in dat scriptje de resultaat set die je wilt gaan fetchen, $query bestaat helemaal niet...
Offtopic: Dit is een wat vreemde regel:
Wat doen die zinloze "" en . daar aan het begin? Wanneer je niks wilt echoen, zet er dan ook niks neer. Dat is een stuk eenvoudiger, met niks kun je namelijk geen fouten maken, met quotes en punten kan er altijd een tikfout insluipen.
Code (php)
1
2
3
2
3
<?php
echo "" . $data['naam'] . " - " . $data['teamnaam'] . " - " . $data['teamid'] . " - " . $data['email'] . " - <a href='aanmeldingadminaccept.php'>Accepteren</a> - <a href='aanmeldingadmindelete.php'>Afwijzen</a><br>";
?>
echo "" . $data['naam'] . " - " . $data['teamnaam'] . " - " . $data['teamid'] . " - " . $data['email'] . " - <a href='aanmeldingadminaccept.php'>Accepteren</a> - <a href='aanmeldingadmindelete.php'>Afwijzen</a><br>";
?>
Wat doen die zinloze "" en . daar aan het begin? Wanneer je niks wilt echoen, zet er dan ook niks neer. Dat is een stuk eenvoudiger, met niks kun je namelijk geen fouten maken, met quotes en punten kan er altijd een tikfout insluipen.
Code (php)
1
2
3
2
3
<?php
echo $data['naam'] . " - " . $data['teamnaam'] . " - " . $data['teamid'] . " - " . $data['email'] . " - <a href='aanmeldingadminaccept.php'>Accepteren</a> - <a href='aanmeldingadmindelete.php'>Afwijzen</a><br>";
?>
echo $data['naam'] . " - " . $data['teamnaam'] . " - " . $data['teamid'] . " - " . $data['email'] . " - <a href='aanmeldingadminaccept.php'>Accepteren</a> - <a href='aanmeldingadmindelete.php'>Afwijzen</a><br>";
?>
Ik wil het (weer) op een andere manier proberen. Maar moet ik dit met if en else's aanpakken? Dit is mn code:
Dit is het resultaat ervan:
jimbo2 - de kannonnen - 811630 - [email protected] - Accepteren Afwijzen
sjimmie - de Wonderslof - 815688 - [email protected] - Accepteren Afwijzen
Het team is geaccepteerd. Ga terug.Het team is afgewezen
Die laatste regel klopt natuurlijk niet en moet een reactie zijn. Hoe kan ik het script kloppend laten maken?
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
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
<?php
include('connect.php');
$sQuery = "SELECT naam, teamnaam, teamid, email, accepted FROM teams WHERE accepted IS NULL";
if(!$rResult = mysql_query($sQuery))
{
trigger_error(mysql_error().'<br />In query: '.$sQuery);
}
elseif(mysql_num_rows($rResult) == 0)
{
// Geen resultaten
}
else
{
while($data = mysql_fetch_assoc($rResult)) {
echo "<form action='aanmeldingadmin.php' method='post'>" . $data['naam'] . " - " . $data['teamnaam'] . " - " . $data['teamid'] . " - " . $data['email'] . " - <INPUT TYPE=radio VALUE=". $accepteren . " NAME='Accepteren'> Accepteren <INPUT TYPE=radio VALUE=" . $afwijzen . " NAME='Afwijzen'> Afwijzen <br>";
echo "<INPUT TYPE=submit VALUE='Verzenden'></form>";
}
$accepteren = mysql_query("UPDATE
teams
SET
accepted = 'accepteren'
");
if ($accepteren === false){
echo("Er ging iets fout met de query: ".mysql_error()."");
}
else{
echo 'Het team is geaccepteerd. Ga <a href="aanmeldingadmin.php">terug</a>.';
}
$afwijzen = mysql_query("UPDATE
teams
SET
accepted = 'afwijzen'
");
if ($afwijzen === false){
echo("Er ging iets fout met de query: ".mysql_error()."");
}
else{
echo 'Het team is afgewezen.';
}
?>
include('connect.php');
$sQuery = "SELECT naam, teamnaam, teamid, email, accepted FROM teams WHERE accepted IS NULL";
if(!$rResult = mysql_query($sQuery))
{
trigger_error(mysql_error().'<br />In query: '.$sQuery);
}
elseif(mysql_num_rows($rResult) == 0)
{
// Geen resultaten
}
else
{
while($data = mysql_fetch_assoc($rResult)) {
echo "<form action='aanmeldingadmin.php' method='post'>" . $data['naam'] . " - " . $data['teamnaam'] . " - " . $data['teamid'] . " - " . $data['email'] . " - <INPUT TYPE=radio VALUE=". $accepteren . " NAME='Accepteren'> Accepteren <INPUT TYPE=radio VALUE=" . $afwijzen . " NAME='Afwijzen'> Afwijzen <br>";
echo "<INPUT TYPE=submit VALUE='Verzenden'></form>";
}
$accepteren = mysql_query("UPDATE
teams
SET
accepted = 'accepteren'
");
if ($accepteren === false){
echo("Er ging iets fout met de query: ".mysql_error()."");
}
else{
echo 'Het team is geaccepteerd. Ga <a href="aanmeldingadmin.php">terug</a>.';
}
$afwijzen = mysql_query("UPDATE
teams
SET
accepted = 'afwijzen'
");
if ($afwijzen === false){
echo("Er ging iets fout met de query: ".mysql_error()."");
}
else{
echo 'Het team is afgewezen.';
}
?>
Dit is het resultaat ervan:
jimbo2 - de kannonnen - 811630 - [email protected] - Accepteren Afwijzen
sjimmie - de Wonderslof - 815688 - [email protected] - Accepteren Afwijzen
Het team is geaccepteerd. Ga terug.Het team is afgewezen
Die laatste regel klopt natuurlijk niet en moet een reactie zijn. Hoe kan ik het script kloppend laten maken?
Nu heb ik dit script:
Het resultaat is dit:
Mike vd Veer - S.V. Mike - 1006179 - [email protected] - Accept Decline
Nou klik ik op accept krijg ik
Gelukt!!!!
Mike vd Veer - S.V. Mike - 1006179 - [email protected] - Accept Decline
Hoe kan ik hem helemaal werkend maken?
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
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
<?php
include('connect.php');
// eerst verwerken
if (empty($_GET['id']) == false && empty($_GET['accepted']) == false) {
// moet je eigenlijk ook ff checken of ze geldige waarden bevatten, dat mag je zelf doen ;)
// vergeet de "where" niet, anders update je alle records!!
$sQuery = "UPDATE teams SET accepted = " . $_GET['accepted'] . " WHERE id = " . $_GET['id'] . "";
If (mysql_query($sQuery) == false) {
echo("Er ging iets fout met de query: ".mysql_error()."<br>");
}else{
echo "Gelukt!!!!<br>";
}
}
// dan weergeven
$sQuery = "SELECT id, naam, teamnaam, teamid, email, accepted FROM teams WHERE accepted IS NULL";
if(!$rResult = mysql_query($sQuery))
{
trigger_error(mysql_error().'<br />In query: '.$sQuery);
}
elseif(mysql_num_rows($rResult) == 0)
{
// Geen resultaten
echo "Geen resultaten<br>";
}
else
{
while($data = mysql_fetch_assoc($rResult)) {
echo $data['naam'] . " - " . $data['teamnaam'] . " - " . $data['teamid'] . " - " . $data['email'] . "
- <a href=\"aanmeldingadmin.php?accept=true&id=".$data['teamid']."\">Accept</a>
<a href=\"aanmeldingadmin.php?accept=false&id=".$data['teamid']."\">Decline</a><br>";
}
}
?>
include('connect.php');
// eerst verwerken
if (empty($_GET['id']) == false && empty($_GET['accepted']) == false) {
// moet je eigenlijk ook ff checken of ze geldige waarden bevatten, dat mag je zelf doen ;)
// vergeet de "where" niet, anders update je alle records!!
$sQuery = "UPDATE teams SET accepted = " . $_GET['accepted'] . " WHERE id = " . $_GET['id'] . "";
If (mysql_query($sQuery) == false) {
echo("Er ging iets fout met de query: ".mysql_error()."<br>");
}else{
echo "Gelukt!!!!<br>";
}
}
// dan weergeven
$sQuery = "SELECT id, naam, teamnaam, teamid, email, accepted FROM teams WHERE accepted IS NULL";
if(!$rResult = mysql_query($sQuery))
{
trigger_error(mysql_error().'<br />In query: '.$sQuery);
}
elseif(mysql_num_rows($rResult) == 0)
{
// Geen resultaten
echo "Geen resultaten<br>";
}
else
{
while($data = mysql_fetch_assoc($rResult)) {
echo $data['naam'] . " - " . $data['teamnaam'] . " - " . $data['teamid'] . " - " . $data['email'] . "
- <a href=\"aanmeldingadmin.php?accept=true&id=".$data['teamid']."\">Accept</a>
<a href=\"aanmeldingadmin.php?accept=false&id=".$data['teamid']."\">Decline</a><br>";
}
}
?>
Het resultaat is dit:
Mike vd Veer - S.V. Mike - 1006179 - [email protected] - Accept Decline
Nou klik ik op accept krijg ik
Gelukt!!!!
Mike vd Veer - S.V. Mike - 1006179 - [email protected] - Accept Decline
Hoe kan ik hem helemaal werkend maken?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?else
{
while($data = mysql_fetch_assoc($rResult)) {
echo $data['naam'] . " - " . $data['teamnaam'] . " - " . $data['teamid'] . " - " . $data['email'];
if($data['accepted']===FALSE){
echo ' - <a href=\"aanmeldingadmin.php?accept=true&id=".$data['teamid']."\">Accept</a>
<a href=\"aanmeldingadmin.php?accept=false&id=".$data['teamid']."\">Decline</a><br>";
}
}
}
?>
{
while($data = mysql_fetch_assoc($rResult)) {
echo $data['naam'] . " - " . $data['teamnaam'] . " - " . $data['teamid'] . " - " . $data['email'];
if($data['accepted']===FALSE){
echo ' - <a href=\"aanmeldingadmin.php?accept=true&id=".$data['teamid']."\">Accept</a>
<a href=\"aanmeldingadmin.php?accept=false&id=".$data['teamid']."\">Decline</a><br>";
}
}
}
?>
bedoelde je dit?
Zo doet ie het nog steeds niet




