Keuzelijst uit MYSQL-tabel
Nu is het zo dat voor elke scholingsplaats plek is voor maximaal 10 medewerkers.
Alle medewerkers krijgen vooraf een gebruikersnaam en wachtwoord en kunnen inloggen.
Nu zou ik graag willen dat de medewerkers kunnen kiezen uit:
Locatie A
Locatie B
Locatie C
Locatie D
Locatie E
Als zich voor Locatie A echter al tien mensen hebben ingeschreven moeten de medewerkers die inloggen Locatie A niet meer als mogelijkheid zijn om zich voor die locatie aan te melden.
Heeft iemand een idee hoe ik dat moet aanpakken?
Gewijzigd op 09/03/2012 09:24:48 door John Adje
Ik heb een testtabel (members) gemaakt, waar nu vier medewerkers in staan.
id username password Locatie
1 john 1234 LA
2 johan 4321 LA
3 A A1 LA
4 B B2 LB
5 D D2
In dit geval is LA drie keer gekozen. Stel dat bij drie keer de locatie al vol zitten, moet medewerkers D alleen nog maar kunnen kiezen voor LB.
Toevoeging op 09/03/2012 10:53:19:
Nog even ter verduidelijking want misschien heb ik het een beetje vaag opgeschreven:
Medewerker logt in met gebruikersnaam en wachtwoord. (dit gedeelte is me gelukt. Gebruikersnaam en wachtwoord worden gecontroleerd uit de MYSQL-tabel)
Na inloggen krijgt de medewerker de pagina met:
Welkom "John".
"Kies hieronder de locatie waar jij je voor wil inschrijven."
(hij krijgt dus alleen locaties te zien waar nog plaats is)
Vervolgens wordt gevraagd of die keuze juist is.
na bevestiging moet de medewerker een scherm krijgen:
"Bedankt voor je aanmelding."
De keuze voor de locatie moet in de tabel "members" bij de juiste medewerker worden opgeslagen. Ik kan dan zien wie zich wel of nog niet heeft ingeschreven.
Ik ben erg benieuwd of dit kan...
locaties opvragen:
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
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
<?php
/*************************
* zonder foutafhandeling *
**************************/
$sql = "SELECT
lokatie_id, lokatie_naam
FROM
lokaties
WHERE
lokatie_id
NOT IN
(SELECT
lokatie_id
FROM
members
GROUP BY
lokatie_id
HAVING
COUNT(lokatie_id) = 10)";
//hier connecten met de db
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0) {
echo '<select name="locatie">';
while ($row = mysql_fetch_row($result)) {
echo '<option value="' . $row[0] . '">';
echo $row[1] . '</option>';
}
echo '</select>';
}
else {
echo 'Sorry er zijn geen lokaties beschikbaar';
}
?>
/*************************
* zonder foutafhandeling *
**************************/
$sql = "SELECT
lokatie_id, lokatie_naam
FROM
lokaties
WHERE
lokatie_id
NOT IN
(SELECT
lokatie_id
FROM
members
GROUP BY
lokatie_id
HAVING
COUNT(lokatie_id) = 10)";
//hier connecten met de db
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0) {
echo '<select name="locatie">';
while ($row = mysql_fetch_row($result)) {
echo '<option value="' . $row[0] . '">';
echo $row[1] . '</option>';
}
echo '</select>';
}
else {
echo 'Sorry er zijn geen lokaties beschikbaar';
}
?>
Toevoeging op 09/03/2012 11:17:06:
John Adje op 09/03/2012 10:27:39:
Ik ben erg benieuwd of dit kan...
Alles kan!
Heb je ervaring met JavaScript en/of JQuery
Gewijzigd op 09/03/2012 13:18:37 door Ger van Steenderen
Ger van Steenderen op 09/03/2012 11:11:41:
Ik zou gewoon een tabel voor de lokaties maken, dan kan je daar eventueel ook nog extra informatie over een lokatie in kwijt. Dan kan je met de (aangepaste) query de
locaties opvragen:
Toevoeging op 09/03/2012 11:17:06:
Alles kan!
Heb je ervaring met JavaScript en/of JQuery
locaties opvragen:
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
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
<?php
/*************************
* zonder foutafhandeling *
**************************/
$sql = "SELECT
lokatie_id, lokatie_naam
FROM
lokaties
WHERE
lokatie_id
NOT IN
(SELECT
lokatie_id
FROM
members
GROUP BY
lokatie_id
HAVING
COUNT(lokatie_id) = 10)";
//hier connecten met de db
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0) {
echo '<select name="locatie">';
while ($row = mysql_fetch_row($result)) {
echo '<option value="' . $row[0] . '">';
echo $row[1] . '</option>';
}
echo '</select>';
}
else {
echo 'Sorry er zijn geen lokaties beschikbaar"
}
?>
/*************************
* zonder foutafhandeling *
**************************/
$sql = "SELECT
lokatie_id, lokatie_naam
FROM
lokaties
WHERE
lokatie_id
NOT IN
(SELECT
lokatie_id
FROM
members
GROUP BY
lokatie_id
HAVING
COUNT(lokatie_id) = 10)";
//hier connecten met de db
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0) {
echo '<select name="locatie">';
while ($row = mysql_fetch_row($result)) {
echo '<option value="' . $row[0] . '">';
echo $row[1] . '</option>';
}
echo '</select>';
}
else {
echo 'Sorry er zijn geen lokaties beschikbaar"
}
?>
Toevoeging op 09/03/2012 11:17:06:
John Adje op 09/03/2012 10:27:39:
Ik ben erg benieuwd of dit kan...
Alles kan!
Heb je ervaring met JavaScript en/of JQuery
Toevoeging op 09/03/2012 12:24:47:
Heel weinig...
Maar, waar loop je nu nog op vast?
Misschien connect ik niet goed naar de db...?
function connect_db(){
$host = 'localhost';
$username = "****";
$password = "****";
$database = "***";
mysql_connect($host,$username,$password);
mysql_select_db($database)
John Adje op 09/03/2012 13:07:49:
Als ik bovenstaande code kopieer krijg ik een foutmelding.
Altijd vermelden welke.
Gewijzigd op 09/03/2012 13:09:40 door - SanThe -
Kan de pagina niet vinden....
Regel 31 moet zijn:
Ik heb inmiddels aangepast.
Toevoeging op 09/03/2012 13:22:59:
John Adje op 09/03/2012 13:20:27:
Kan de pagina niet vinden....
een html error?
De tabellen:
members (met velden:id,username,password,locatie_naam,team )
locaties (met velden: locatie_id locatie_naam
De onderstaande code heb ik:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?
session_start();
if(!session_is_registered(myusername)){
header("location:main_login.php");
}
?>
session_start();
if(!session_is_registered(myusername)){
header("location:main_login.php");
}
?>
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
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
<?php
/*************************
* zonder foutafhandeling *
**************************/
$sql = "SELECT
lokatie_id, lokatie_naam
FROM
lokaties
WHERE
lokatie_id
NOT IN
(SELECT
lokatie_id
FROM
members
GROUP BY
lokatie_id
HAVING
COUNT(lokatie_id) = 10)";
//hier connecten met de db
function connect_db(){
$host = 'localhost';
$username = "**";
$password = "***";
$database = "rstscholinglnl_";
mysql_connect($host,$username,$password);
mysql_select_db($database)
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0) {
echo '<select name="locatie">';
while ($row = mysql_fetch_row($result)) {
echo '<option value="' . $row[0] . '">';
echo $row[1] . '</option>';
}
echo '</select>';
}
else {
echo 'Sorry er zijn geen lokaties beschikbaar"
}
?>
/*************************
* zonder foutafhandeling *
**************************/
$sql = "SELECT
lokatie_id, lokatie_naam
FROM
lokaties
WHERE
lokatie_id
NOT IN
(SELECT
lokatie_id
FROM
members
GROUP BY
lokatie_id
HAVING
COUNT(lokatie_id) = 10)";
//hier connecten met de db
function connect_db(){
$host = 'localhost';
$username = "**";
$password = "***";
$database = "rstscholinglnl_";
mysql_connect($host,$username,$password);
mysql_select_db($database)
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0) {
echo '<select name="locatie">';
while ($row = mysql_fetch_row($result)) {
echo '<option value="' . $row[0] . '">';
echo $row[1] . '</option>';
}
echo '</select>';
}
else {
echo 'Sorry er zijn geen lokaties beschikbaar"
}
?>
Ik krijg de volgende melding:
HTTP-fout 500 (Internal Server Error): Er is een onverwachte voorwaarde gevonden toen de server het verzoek wilde uitvoeren.
En let op de veldnamen in de query, ik schrijf lokatie (zoals het hoort) met een k en jij met een c.
In de tabel heb je alleen een veld met de locatie_id nodig, dus niet de locatie_naam.
En alleen het veld id aangemaakt.
Ik krijg dan nog de volgende code:
HTTP-fout 500 (Internal Server Error): Er is een onverwachte voorwaarde gevonden toen de server het verzoek wilde uitvoeren.
IK heb de volgende code nu:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?
session_start();
if(!session_is_registered(myusername)){
header("location:main_login.php");
}
?>
session_start();
if(!session_is_registered(myusername)){
header("location:main_login.php");
}
?>
<html>
<body>
Login Successfulasas
<p>klik <a href="http://www.rstscholing.nl/uitloggen.php">hier</a> om uit te loggen</p>
</body>
</html
>
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
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
<?php
/*************************
* zonder foutafhandeling *
**************************/
$sql = "SELECT
lokatie_id, lokatie_naam
FROM
lokaties
WHERE
lokatie_id
NOT IN
(SELECT
lokatie_id
FROM
members
GROUP BY
lokatie_id
HAVING
COUNT(lokatie_id) = 10)";
//hier connecten met de db
function connect_db(){
$host = 'localhost';
$username = "***";
$password = "***";
$database = "rstscholinglnl_";
mysql_connect($host,$username,$password);
mysql_select_db($database)
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0) {
echo '<select name="locatie">';
while ($row = mysql_fetch_row($result)) {
echo '<option value="' . $row[0] . '">';
echo $row[1] . '</option>';
}
echo '</select>';
}
else {
[code]<?php
echo 'Sorry er zijn geen lokaties beschikbaar';
?>
}
?>
/*************************
* zonder foutafhandeling *
**************************/
$sql = "SELECT
lokatie_id, lokatie_naam
FROM
lokaties
WHERE
lokatie_id
NOT IN
(SELECT
lokatie_id
FROM
members
GROUP BY
lokatie_id
HAVING
COUNT(lokatie_id) = 10)";
//hier connecten met de db
function connect_db(){
$host = 'localhost';
$username = "***";
$password = "***";
$database = "rstscholinglnl_";
mysql_connect($host,$username,$password);
mysql_select_db($database)
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0) {
echo '<select name="locatie">';
while ($row = mysql_fetch_row($result)) {
echo '<option value="' . $row[0] . '">';
echo $row[1] . '</option>';
}
echo '</select>';
}
else {
[code]<?php
echo 'Sorry er zijn geen lokaties beschikbaar';
?>
}
?>
PHP manual:
bool session_is_registered ( string $name )
Finds out whether a global variable is registered in a session.
Warning
This function has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0.
Finds out whether a global variable is registered in a session.
Warning
This function has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0.
beter om isset($_SESSION['myusername']) te gebruiken.
Regel 40 en 42 verwijderen.
Is myusername een constante?
if(!session_is_registered(myusername)){
Regel 27 mist een puntkomma.
Regel 40 nogmaals php openen is niet mogelijk.
Twee keer php sluiten is ook niet mogelijk.
En regel 21: als je het connecten in een functie zet moet je hem ook aanroepen, en de afsluitende } ontbreekt
Toevoeging op 10/03/2012 14:51:59:
Dankzij jullie hulp ben ik een stuk verder.
Het vergelijken gaat volgens mij alleen nog niet helemaal goed.
Ik heb in de tabel members nu 4 keer de plaats Goes ingevuld. Volgens mij zou hij dan nu Goes niet meer als optie moeten laten zien?
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
57
58
59
60
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
57
58
59
60
<?
session_start();
if(!session_is_registered(myusername)){
header("location:main_login.php");
}
echo 'Je bent nu ingelogd.<br> Kies hieronder de locatie waar jij de scholing wilt volgen.';
echo 'Je kunt alleen kiezen uit locacties waar nog geen mensen zijn ingelogd';
echo "<br><br>";
/*************************
* zonder foutafhandeling *
**************************/
$sql = "SELECT
lokatie_id, lokatie_naam
FROM
lokaties
WHERE
lokatie_id
NOT IN
(SELECT
lokatie_id
FROM
members
GROUP BY
lokatie_id
HAVING
COUNT(lokatie_id) = 2)";
//hier connecten met de db
//Gegevens in onderstaand kader mogen aangepast worden
//+---------------------------------------------------------+
//login gegevens |
$host = "localhost";//locatie van de MySQL server |
$username = "***n";//gebruikersnaam van de MySQL server |
$password = "***";//wachtwoord van de MySQL server |
$database = "rstscholingnl_";//database die aangesproken moet worden |
$sql = "SELECT * FROM lokaties";//SQL query |
//+---------------------------------------------------------+
//connecteren
$lnk = mysql_connect($host,$username,$password) or die(mysql_error()); //connecteren met de server
mysql_select_db($database,$lnk) or die(mysql_error()." [".$database."]"); //selecteren van de database
$resultaat = mysql_query($sql,$lnk)or die(mysql_error()." [".$sql."]"); //uivoeren SQL statement
$aantal_velden = mysql_num_fields($resultaat)or die(mysql_error()." [".$sql."]"); //het aantal velden uit de tabel benaderen
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0) {
echo '<select name="lokatie">';
while ($row = mysql_fetch_row($result)) {
echo '<option value="' . $row[0] . '">';
echo $row[1] . '</option>';
}
echo '</select>';
}
else {
echo 'Sorry, er zijn geen lokaties meer beschikbaar';
}
?>
session_start();
if(!session_is_registered(myusername)){
header("location:main_login.php");
}
echo 'Je bent nu ingelogd.<br> Kies hieronder de locatie waar jij de scholing wilt volgen.';
echo 'Je kunt alleen kiezen uit locacties waar nog geen mensen zijn ingelogd';
echo "<br><br>";
/*************************
* zonder foutafhandeling *
**************************/
$sql = "SELECT
lokatie_id, lokatie_naam
FROM
lokaties
WHERE
lokatie_id
NOT IN
(SELECT
lokatie_id
FROM
members
GROUP BY
lokatie_id
HAVING
COUNT(lokatie_id) = 2)";
//hier connecten met de db
//Gegevens in onderstaand kader mogen aangepast worden
//+---------------------------------------------------------+
//login gegevens |
$host = "localhost";//locatie van de MySQL server |
$username = "***n";//gebruikersnaam van de MySQL server |
$password = "***";//wachtwoord van de MySQL server |
$database = "rstscholingnl_";//database die aangesproken moet worden |
$sql = "SELECT * FROM lokaties";//SQL query |
//+---------------------------------------------------------+
//connecteren
$lnk = mysql_connect($host,$username,$password) or die(mysql_error()); //connecteren met de server
mysql_select_db($database,$lnk) or die(mysql_error()." [".$database."]"); //selecteren van de database
$resultaat = mysql_query($sql,$lnk)or die(mysql_error()." [".$sql."]"); //uivoeren SQL statement
$aantal_velden = mysql_num_fields($resultaat)or die(mysql_error()." [".$sql."]"); //het aantal velden uit de tabel benaderen
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0) {
echo '<select name="lokatie">';
while ($row = mysql_fetch_row($result)) {
echo '<option value="' . $row[0] . '">';
echo $row[1] . '</option>';
}
echo '</select>';
}
else {
echo 'Sorry, er zijn geen lokaties meer beschikbaar';
}
?>
Gewijzigd op 10/03/2012 14:36:42 door John Adje
maak van COUNT(lokatie_id) = 2 COUNT(lokatie_id) >= 2
Gedaan, maar het resultaat blijft hetzelfde..
Ik heb net even getest en het werkt gewoon.
Dan heb ik misschien iets niet goed in mijn tabellen staan??