hallo, ik ben opzoek naar een script voor een formulier met ja/nee andwoorden die mensen in kunnen vullen en naderhand kunnen wijzigen. het resultaat moet opvraagbaar zijn.

het is bedoeld voor een aanwezighijdslijst voor evenementen. bijvoorbeeld:

evenement 1: ben je aanwezig? Ja/Nee
evenement 2: ben je aanwezig? Ja/Nee
enz....

resultaatpagina:

evenement 1: 100 man aanwezig...
evenement 2: 120 man aanwezig...


het liefst met een database waar op e-mail adress van de invuller word opgeslagen welke andwoorden zijn gegeven, zodat deze indien nodig gewijzigd kunnen worden...

een beetje het idee van facebook events, wel/niet misschien aanwezig. alleen is het geen optie om dit daadwerkelijk via facebook te doen.
Okee maak maar een database indeling zoals ger dat heeft gezegd.

user_accounts
- user_id int,autoincrement,primary key
- user_name varchar lengte 50
- user_email varchar lengte 50

events
- event_id int,autoincrement,primary key
- organizer_id int
- event_name varchar lengte 50
- event_date date

event_presence
- event_id int
- visitor_id int
- present enum(ja,nee,misschien)
dat is net het probleem...weet niet hoe...heb nooit zelf databases gemaakt
Frank Nietbelangrijk op 29/10/2012 14:36:06

....
event_presence
- event_id int
- visitor_id int
- present enum(ja,nee,misschien)

Frank zo min mogelijk enums gebruiken, dit geeft alleen maar extra contoles bij een insert en een update. dus maakt dan je query ietsje trager.
Databases werken beter met integers.

ik kreeg alleen fouten op de enum...ik heb nu:


Table structure for table events
Column Type Null Default
event_id int(11) No
organizer_id int(11) No
event_name varchar(50) No
event_date date No
Dumping data for table events

Table structure for table events
Column Type Null Default
event_id int(11) No
organizer_id int(11) No
event_name varchar(50) No
event_date date No
Table structure for table event_presence
Column Type Null Default
event_id int(11) No
visitor_id int(11) No
present int(11) No
Dumping data for table event_presence

Table structure for table event_presence
Column Type Null Default
event_id int(11) No
visitor_id int(11) No
present int(11) No
Table structure for table user_accounts
Column Type Null Default
user_id int(11) No
user_name varchar(50) No
user_email varchar(50) No
Dumping data for table user_accounts

Table structure for table user_accounts
Column Type Null Default
user_id int(11) No
user_name varchar(50) No
user_email varchar(50) No
ah okee en viel het mee?

weet je al het verschil tussen een int en een varchar?

[size=xsmall]Toevoeging op 29/10/2012 21:33:54:[/size]

Sander ik heb even een gewijzigde tabel structuur naar je pm gestuurd.

[size=xsmall]Toevoeging op 29/10/2012 21:37:48:[/size]

<?php
// zet vragen op de hoogste name="x" waarde ofwel het aantal vragen.
error_reporting(E_ALL);

$user = array('user_id' => 0, 'user_name' => '', 'user_email' => '');
if(isset($_POST['user_name'])) $user['user_name'] = $_POST['user_name'];
if(isset($_POST['user_email'])) $user['user_email'] = $_POST['user_email'];
$connection = connect();

function connect() {
$connection = mysql_connect("localhost","root","")
or die ('request "Unable to connect to MySQL server."');
$db = mysql_select_db("test", $connection)
or die ('request "Unable to select database."');
return $connection;
}

function validate() {
return true;
}

function getuserinfo($connection) {
$email = strtolower(mysql_real_escape_string($_POST['user_email']));
$name = strtolower(mysql_real_escape_string($_POST['user_name']));

$sql = "SELECT * FROM user_accounts WHERE user_email='".$email."'";
$result = mysql_query($sql, $connection);
if(mysql_num_rows($result) == 1) {
return mysql_fetch_assoc($result);
}
if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
$sql = "INSERT INTO user_accounts VALUES ('', '".$name."', '".$email."')";
if($result = mysql_query($sql, $connection))
return array('user_id' => mysql_insert_id($connection), 'user_name' => $name, 'user_email' => $email);
}
return 0;
}

function savetodatabase($connection) {
global $user;
$sql = "DELETE FROM event_presence WHERE visitor_id=".$user['user_id'];
$result = mysql_query($sql, $connection);
$sql = "SELECT MAX(id) AS max FROM `events`";
$result = mysql_query($sql, $connection);
$row = mysql_fetch_assoc($result);
$max = $row['max'];
for($i = 1 ; $i <= $max ; $i++) {
if(isset($_POST[$i])) {
$sql = "INSERT INTO event_presence VALUES ('".$i."', '".$user['user_id']."', '".$_POST[$i]."')";
mysql_query($sql, $connection);
}
}
}

if($_SERVER['REQUEST_METHOD'] == 'POST') {
$user = getuserinfo($connection);
if(isset($_POST['save'])){
if(validate())
savetodatabase($connection);
}
}

$sql = "SELECT * FROM events LEFT JOIN event_presence ON id = event_id AND visitor_id=".$user['user_id'];
$result = mysql_query($sql, $connection);
?>
<!DOCTYPE html>
<html>
<body>

<form name="input" action="test.php" method="post">
<p class="naam">
<label>Uw naam:
<input type="text" name="user_name" id="user_name" value="<?php echo $user['user_name']; ?>" />
</label>
<label>Uw e-mail adres:
<input type="text" name="user_email" id="user_email" value="<?php echo $user['user_email']; ?>" />
</label>
<input type="submit" name="load" id="load" value="Haal mijn lijst op" />
</p>
<?php if($user['user_id']) { ?>
<table class="mytable">
<tr>
<th>datum</th>
<th>activiteit</th>
<th>zaal open</th>
<th>aanvang</th>
<th>lokatie</th>
<th>Deelname</th>
</tr>
<?php while($row = mysql_fetch_assoc($result)) { ?>
<tr>
<td><? echo $row['event_date']; ?></td>
<td><? echo $row['event_name']; ?></td>
<td><? echo $row['event_open']; ?></td>
<td><? echo $row['event_start']; ?></td>
<td><? echo $row['event_location']; ?></td>
<td>
<label><input type="radio"<? if($row['present'] == 'ja') echo ' checked="checked"';
?> name="<? echo $row['id']; ?>" value="ja" />Ja</label><br />
<label><input type="radio"<? if($row['present'] == 'nee') echo ' checked="checked"';
?> name="<? echo $row['id']; ?>" value="nee" />Nee</label><br />
<label><input type="radio"<? if($row['present'] == 'misschien') echo ' checked="checked"';
?> name="<? echo $row['id']; ?>" value="misschien" />Misschien</label>
</td>
</tr>
<?php } ?>
</table>
<input type="submit" name="save" value="Opslaan">
<?php } else { ?>
email verplicht invullen!
<?php } ?>

</form>
</body>
</html>
ik heb bovenstaande code toegevoegd en deze werkt...nu moet ik alleen nog alle events invullen in de database?

[size=xsmall]Toevoeging op 29/10/2012 22:01:01:[/size]

het lijkt er alleen op dat de keuzes niet worden opgeslagen...?

[size=xsmall]Toevoeging op 29/10/2012 22:01:25:[/size]

http://84.28.204.44/flaarisse/1.php

[size=xsmall]Toevoeging op 29/10/2012 22:04:54:[/size]

event_presence blijft leeg...gebruiker maakt hij wel aan
waarschijnlijk moet je nog even een aantal velden aan de database toevoegen en wijzigen zie je pm

dan gaat hij zeker werken want dat doet hij hier ook :) morgenavond dan even aan de totaal overzicht werken
ik heb de database leeg gemaakt en opnieuw geimporteert vanuit de pm met de datamase... deze werkt niet...of heb ik ergens anders wat fout gedaan?

dit is wat ik nu heb: (ik heb alleen de e-mailadressen even eruit gehaald vanwegen privecy...

-- phpMyAdmin SQL Dump
-- version 3.5.2
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Oct 29, 2012 at 10:30 PM
-- Server version: 5.5.25a
-- PHP Version: 5.4.4

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Database: `flaarisse`
--

-- --------------------------------------------------------

--
-- Table structure for table `events`
--

CREATE TABLE IF NOT EXISTS `events` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`organizer_id` int(11) NOT NULL,
`event_name` varchar(50) NOT NULL,
`event_location` varchar(50) NOT NULL,
`event_date` date NOT NULL,
`event_open` time NOT NULL,
`event_start` time NOT NULL,
PRIMARY KEY (`id`),
KEY `organizer_id` (`organizer_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

--
-- Dumping data for table `events`
--

INSERT INTO `events` (`id`, `organizer_id`, `event_name`, `event_location`, `event_date`, `event_open`, `event_start`) VALUES
(1, 0, 'event 1', 'event lokatie 1', '2012-10-30', '20:30:00', '21:00:00');

-- --------------------------------------------------------

--
-- Table structure for table `event_presence`
--

CREATE TABLE IF NOT EXISTS `event_presence` (
`event_id` int(11) NOT NULL,
`visitor_id` int(11) NOT NULL,
`present` enum('ja','nee','misschien') NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

--
-- Table structure for table `user_accounts`
--

CREATE TABLE IF NOT EXISTS `user_accounts` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` varchar(50) NOT NULL,
`user_email` varchar(50) NOT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

--
-- Dumping data for table `user_accounts`
--

INSERT INTO `user_accounts` (`user_id`, `user_name`, `user_email`) VALUES
(3, 'sander jansen', '*emailadress*'),
(4, '', '*emailadress*');

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Reageren