php formulier met database
misschien moet je het even met de hand aanmaken
de enigste lastige is dan enum('ja','nee','misschien')
je kunt 'ja','nee','misschien' bij de lengte zetten maar je kan er ook gewoon een varchar van maken
Toevoeging op 29/10/2012 23:00:57:
en wat is de bedoeling met organizer_id?
Toevoeging op 29/10/2012 23:07:31:
en is het mogelijk dat de pagina niet op activitijd gesorteerd wordt maar datum?
Waar heb je nu de informatie staan over de evenementen? Excel, iets anders?
Je kunt sorteren op datum door ' ORDER BY event_date DESC' achter de query te zetten, en ook ervoor zorgen dat alleen de events van vandaag in de toekomst geselecteerd worden. Dan krijg je dit:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$sql = "SELECT * "; //ik laat dit staan maar dit is absoluut NOT DONE
$sql .= "FROM events
LEFT JOIN event_presence ON id = event_id AND visitor_id=".$user['user_id'] . "
WHERE events.event_date => CURRENT_DATE()
ORDER BY events.event_date DESC";
?>
$sql = "SELECT * "; //ik laat dit staan maar dit is absoluut NOT DONE
$sql .= "FROM events
LEFT JOIN event_presence ON id = event_id AND visitor_id=".$user['user_id'] . "
WHERE events.event_date => CURRENT_DATE()
ORDER BY events.event_date DESC";
?>
Frank er zitten wat onvolkomenheden in jouw script. Het is een goed gebruik om geen getallen te gebruiken als naam voor een input, je kan bv ook dit doen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
echo '<input type="radio" name="evrd[' . $row['event_id' . '"]';
//Als er een primary key staat op event_id EN visitor_id in evnet_presence
//kan je jouw savesavetodatabase zo doen:
function savetodatabase($connection) {
global $user;
$sql = "INSERT INTO event_presence (event_id, visitor_id, present)" . PHP_EOL;
$valuelist = array();
foreach($_POST['evrd'] as $id => $value) {
$valuelist[] = "(" . (int) $id . ", " . $user['user_id'] .
", '" . mysql_real_escape_string($value) . "')";
}
if (count($valuelist) > 0) {
$sql .= "VALUES" . PHP_EOL . implode(', ', $valuelist) . PHP_EOL . "ON DUPLICATE KEY UPDATE";
$result = mysql_query($sql);
return $result;
}
return false;
}
echo '<input type="radio" name="evrd[' . $row['event_id' . '"]';
//Als er een primary key staat op event_id EN visitor_id in evnet_presence
//kan je jouw savesavetodatabase zo doen:
function savetodatabase($connection) {
global $user;
$sql = "INSERT INTO event_presence (event_id, visitor_id, present)" . PHP_EOL;
$valuelist = array();
foreach($_POST['evrd'] as $id => $value) {
$valuelist[] = "(" . (int) $id . ", " . $user['user_id'] .
", '" . mysql_real_escape_string($value) . "')";
}
if (count($valuelist) > 0) {
$sql .= "VALUES" . PHP_EOL . implode(', ', $valuelist) . PHP_EOL . "ON DUPLICATE KEY UPDATE";
$result = mysql_query($sql);
return $result;
}
return false;
}
Gewijzigd op 30/10/2012 19:30:12 door Ger van Steenderen
en ik denken dat het niet zo moeilijk zou zijn...
Dan geef ik je een query waarmee je dat in één keer in de events tabel kan zetten. Handmatig dingen invoeren doen we in deze tijd weinig meer ;-)
Gewijzigd op 30/10/2012 19:28:11 door Ger van Steenderen
Ger je zou mij en Sander kunnen helpen aan de query om de totalen van ja/nee/misschien te verkrijgen
Alvast bedankt als je dat doen wil.
Gewijzigd op 30/10/2012 19:37:24 door Frank Nietbelangrijk
Toevoeging op 30/10/2012 20:50:59:
ik heb eens handmatig wat gegevens ingevuld in events_presence and deze worden wel opgehaald en corect weergegeven, zodra er op opslaan wordt geklikt word deze informatie verwijderd uit de database (geprobeerd met 1 gebruiker ingevuld)
Gewijzigd op 30/10/2012 20:54:36 door Sander Jansen
Stuur even een PM, veel veiliger.
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
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
SELECT
e.event_name,
COUNT(ja.event_id) AS jaas,
COUNT(mss.event_id) AS mssen,
COUNT(nee.event_id) AS nees
FROM
events As e
LEFT JOIN
(SELECT
event_id
FROM
event_presence
WHERE
present ='Ja'
) AS ja
ON e.event_id = ja.event_id
LEFT JOIN
(SELECT
event_id
FROM
event_present
WHERE
present ='Misschien'
) AS mss
ON e.event_id = mss.event_id
LEFT JOIN
(SELECT
event_id
FROM
event_present
WHERE
present ='Nee'
) AS nee
ON e.event_id = nee.event_id
GROUP BY e.event_name
e.event_name,
COUNT(ja.event_id) AS jaas,
COUNT(mss.event_id) AS mssen,
COUNT(nee.event_id) AS nees
FROM
events As e
LEFT JOIN
(SELECT
event_id
FROM
event_presence
WHERE
present ='Ja'
) AS ja
ON e.event_id = ja.event_id
LEFT JOIN
(SELECT
event_id
FROM
event_present
WHERE
present ='Misschien'
) AS mss
ON e.event_id = mss.event_id
LEFT JOIN
(SELECT
event_id
FROM
event_present
WHERE
present ='Nee'
) AS nee
ON e.event_id = nee.event_id
GROUP BY e.event_name
Gewijzigd op 30/10/2012 21:18:24 door Ger van Steenderen
bedankt voor het meehelpen, ik snap alleen niet goed hoe ik het script moet gebruiken...neem aan dat hier nog een stuk bij moet?
@Sander: Job done, zie pm
@Ger: moest er nog even een taalfoutje uithalen maar toen werkte je query in één keer!
Scheelt mij denk ik een hoop gedoe.
Gewijzigd op 31/10/2012 17:38:35 door Frank Nietbelangrijk