Met boolean accepteren/afwijzen
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,
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?
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
Het team is geaccepteerd.Het team is afgewezen.
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!
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.
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...
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().
Is het resultaat false --> query mislukt, geef een foutmelding. In het andere geval kun je het resultaat gaan fetchen...
nico schreef op 13.03.2008 21:23:
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()
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...
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>";
?>
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?
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