Met boolean accepteren/afwijzen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mike vd Veer

Mike vd Veer

12/03/2008 16:18:00
Quote Anchor link
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:

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
<?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>";
      }

?>


Wil iemand me met dit (deze) problemen helpen? Alvast bedankt!

Mike,
 
PHP hulp

PHP hulp

22/11/2024 00:17:19
 
Joren de Wit

Joren de Wit

12/03/2008 16:24:00
Quote Anchor link
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?
 
Mike vd Veer

Mike vd Veer

12/03/2008 16:26:00
Quote Anchor link
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
 
Joren de Wit

Joren de Wit

12/03/2008 16:27:00
Quote Anchor link
De syntax van je UPDATE query klopt niet. Die hoort zo te zijn:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
UPDATE
    tabelnaam
SET
    kolomnaam = 'waarde'
WHERE
    kolomnaam = 'waarde'
 
Mike vd Veer

Mike vd Veer

12/03/2008 16:42:00
Quote Anchor link
Dit heb ik gedaan. Nu komt er dit te staan:

Het team is geaccepteerd.Het team is afgewezen.
 
Mike vd Veer

Mike vd Veer

13/03/2008 20:13:00
Quote Anchor link
Ik ga het anders aanpakken want met mn huidige aanpak werkt het niet. Ik maak gewoon voor accepteren en afwijzen een aparte pagina.

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


?>


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!
 
Frank -

Frank -

13/03/2008 20:17:00
Quote Anchor link
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.
 
Joren de Wit

Joren de Wit

13/03/2008 20:18:00
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
... WHERE accepted IS NULL

Grote kans dus dat je query inderdaad geen resultaten heeft opgelevert, wat dan ook weer dat lege scherm verklaart.
 
Mike vd Veer

Mike vd Veer

13/03/2008 21:16:00
Quote Anchor link
Misschien een domme vraag, maar hoe controleer ik de query? :P
 
Joren de Wit

Joren de Wit

13/03/2008 21:17:00
Quote Anchor link
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
<?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
}
?>

Deze opzet zou je kunnen gebruiken...
 
Nicoow Unknown

Nicoow Unknown

13/03/2008 21:23:00
Quote Anchor link
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().
 
Joren de Wit

Joren de Wit

13/03/2008 21:28:00
Quote Anchor link
@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...
 
Frank -

Frank -

13/03/2008 21:29:00
Quote Anchor link
nico schreef op 13.03.2008 21:23:
Ik heb niet alles gelezen,
Maar om te kijken of je query wel goed is,
gebruik je mysql_query()
Nee, die voert de query uit en levert een resource op. Wanneer deze false is, is de query mislukt.
 
Mike vd Veer

Mike vd Veer

13/03/2008 21:52:00
Quote Anchor link
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:

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
<?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>";
      }

?>


// rest van script

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?

}

?>


Wat is de fout?
 
Joren de Wit

Joren de Wit

13/03/2008 21:55:00
Quote Anchor link
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...
 
Frank -

Frank -

13/03/2008 22:54:00
Quote Anchor link
Offtopic: Dit is een wat vreemde regel:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>";
?>

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)
PHP script in nieuw venster Selecteer het PHP script
1
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>";
?>
 
Mike vd Veer

Mike vd Veer

14/03/2008 13:44:00
Quote Anchor link
Ik wil het (weer) op een andere manier proberen. Maar moet ik dit met if en else's aanpakken? Dit is mn code:

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
<?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.';
    }



    ?>


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?
 
Mike vd Veer

Mike vd Veer

16/03/2008 01:58:00
Quote Anchor link
Nu heb ik dit script:

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
<?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>";
      }
 }

?>


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?
 
Bart van der veen

bart van der veen

16/03/2008 12:18:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>";
}
      }
 }
?>

bedoelde je dit?
 
Mike vd Veer

Mike vd Veer

16/03/2008 23:48:00
Quote Anchor link
Zo doet ie het nog steeds niet
 



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.