php formulier met database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Sander Jansen

Sander Jansen

27/10/2012 18:00:00
Quote Anchor link
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.
 
PHP hulp

PHP hulp

13/05/2024 10:22:36
 
Frank Nietbelangrijk

Frank Nietbelangrijk

27/10/2012 22:37:44
Quote Anchor link
Sander,

Een kant en klaar script is nooit helemaal precies wat je zoekt. Zelf maken is dat een optie?

Je hebt nodig: PHP HTML en een (mysql-)database.
 
Sander Jansen

Sander Jansen

28/10/2012 00:50:17
Quote Anchor link
Frank Nietbelangrijk op 27/10/2012 22:37:44:
Sander,

Een kant en klaar script is nooit helemaal precies wat je zoekt. Zelf maken is dat een optie?

Je hebt nodig: PHP HTML en een (mysql-)database.


een server met php en mysql heb ik thuis staan, maar het prograeren is helaas niet voor mij weg gelecht... ik kan wel scriptjes samen voegen en klijnne dingen aanpassen maar dat is het dan ook...
 
Koen Hollander

Koen Hollander

28/10/2012 08:33:06
Quote Anchor link
Je kan ook een vacature plaatsen.

http://www.phphulp.nl/php/forum/vacatures/26/

Lees dan wel even de stickie's
 
Frank Nietbelangrijk

Frank Nietbelangrijk

28/10/2012 10:38:00
Quote Anchor link
Kun je wel een formulier maken met HTML? Kun je de opmaak verzorgen met CSS? Dan begin je daarmee en plaats je daarna een post.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

28/10/2012 12:44:40
Quote Anchor link
Even een database opzetje:
user_accounts
- user_id
- user_name
- user_email

events
- event_id
- organizer_id
- event_name
- event_date

event_presence
- event_id
- visitor_id
- present

In de laatste tabel is de PK de combinatie van event_id en visitor_id, present is bv 0 voor afwezig, 1 voor misschien en 2 voor ja. Als iemand nog nooit iets heeft opgegeven, staat dat ook niet in de tabel.
Opvragen kan je dan via
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
SELECT
    e.event_id,
    e.event_name,
    COALESCE(p.present, 0) AS present
FROM
    events AS e
LEFT JOIN
    event_presence AS p
    ON
        e.event_id = p.event_id
    AND
        p.visitor_id = 666
WHERE
    e.organizer_id = 555

De COALESCE in combinatie met de LEFT JOIN zorgt ervoor dat er altijd een 0 voor present geselecteerd als de gegevens van de bezoeker nog niet in de presence tabel voorkomen.
Voor de event_presence tabel gebruik je geen UPDATE statements maar altijd INSERT met ON DUPLICATE KEY UPDATE:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
INSERT INTO
    event_presence
    (event_id, visitor_id, present)
VALUES
    (121, 666, 2)
ON DUPLICATE KEY UPDATE
Gewijzigd op 28/10/2012 12:46:25 door Ger van Steenderen
 
Sander Jansen

Sander Jansen

28/10/2012 12:48:10
Quote Anchor link
ik heb het vragenformulier af... ik heb nu 80 groepen van 3 keuzes (radiobuttens) nu is de bedoeling dat idereen die het inbuld, zijn e-mail invuld, als zijnde ID en dat dan de keuzes die gemaakt zijn worden ge mailt...

als imand mij een scriptje kanmaken met de eerste 2 regels erin dat zou ik zelf de rest wel aanvullen.

de pagina is als volgd opgebouwd:
<form id="form1" name="form1" method="post" action="">
<p>
<label>
<input type="radio" name="1" value="Ja" id="1_0" />
Ja</label>
<br />
<label>
<input type="radio" name="1" value="Nee" id="1_1" />
Nee</label>
<br />
<label>
<input type="radio" name="1" value="Misschien" id="1_2" />
Misschien</label>

en dat zn 80 x met steeds opvolgende nummers bij naam en ID
Gewijzigd op 28/10/2012 14:31:41 door Sander Jansen
 
Frank Nietbelangrijk

Frank Nietbelangrijk

29/10/2012 00:42:41
Quote Anchor link
80 groepen? bedoel je voor 80 evenementen?
 
Sander Jansen

Sander Jansen

29/10/2012 00:46:37
Quote Anchor link
ja...er zijn 80 evenementen waar per evenement ja/nee/misschien ingevuld wordt

Toevoeging op 29/10/2012 00:47:13:

vandaar dat facebook ook geen optie is...

Toevoeging op 29/10/2012 00:47:25:

vandaar dat facebook ook geen optie is...

Toevoeging op 29/10/2012 00:47:25:

ja...er zijn 80 evenementen waar per evenement ja/nee/misschien ingevuld wordt

Toevoeging op 29/10/2012 00:54:32:

wat ik nu heb is: http://84.28.204.44/flaarisse/vragenlijst.html
 
Frank Nietbelangrijk

Frank Nietbelangrijk

29/10/2012 08:42:52
Quote Anchor link
oke en flaarisse dat is een naam?
 
Sander Jansen

Sander Jansen

29/10/2012 08:51:41
Quote Anchor link
ja...dat is de naam van de vereniging
 
Frank Nietbelangrijk

Frank Nietbelangrijk

29/10/2012 14:36:06
Quote Anchor link
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)
Gewijzigd op 29/10/2012 14:52:15 door Frank Nietbelangrijk
 
Sander Jansen

Sander Jansen

29/10/2012 16:44:33
Quote Anchor link
dat is net het probleem...weet niet hoe...heb nooit zelf databases gemaakt
 
Frank Nietbelangrijk

Frank Nietbelangrijk

29/10/2012 18:22:26
Quote Anchor link
Wat heb je wel geïnstalleerd? xampp?


Toevoeging op 29/10/2012 18:41:26:

kijk eens op: http://localhost/phpmyadmin daar is waar je een database, een table en fields kunt aanmaken.
http://www.web-garden.be/cursusphp/Hoofdstuk11.pdf
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

29/10/2012 20:33:56
Quote Anchor link
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.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

29/10/2012 20:41:06
Quote Anchor link
Oke bedankt voor de tip
 
Sander Jansen

Sander Jansen

29/10/2012 21:16:49
Quote Anchor link
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
 
Frank Nietbelangrijk

Frank Nietbelangrijk

29/10/2012 21:20:56
Quote Anchor link
ah okee en viel het mee?

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

Toevoeging op 29/10/2012 21:33:54:

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

Toevoeging op 29/10/2012 21:37:48:

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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?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="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $user['user_name']; ?>
" />
</label>
<label>Uw e-mail adres:
<input type="text" name="user_email" id="user_email" value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $user['user_email']; ?>
" />
</label>
<input type="submit" name="load" id="load" value="Haal mijn lijst op" />
</p>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?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>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php while($row = mysql_fetch_assoc($result)) { ?>

<tr>
<td>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $row['event_date']; ?>
</td>
<td>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $row['event_name']; ?>
</td>
<td>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $row['event_open']; ?>
</td>
<td>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $row['event_start']; ?>
</td>
<td>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $row['event_location']; ?>
</td>
<td>
<label><input type="radio"
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<? if($row['present'] == 'ja') echo ' checked="checked"';
                ?>
name="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $row['id']; ?>
" value="ja" />Ja</label><br />
<label><input type="radio"
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<? if($row['present'] == 'nee') echo ' checked="checked"';
                ?>
name="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $row['id']; ?>
" value="nee" />Nee</label><br />
<label><input type="radio"
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<? if($row['present'] == 'misschien') echo ' checked="checked"';
                ?>
name="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $row['id']; ?>
" value="misschien" />Misschien</label>
</td>
</tr>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php } ?>

</table>
<input type="submit" name="save" value="Opslaan">
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php } else  { ?>

email verplicht invullen!
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php } ?>


</form>
</body>
</html>
 
Sander Jansen

Sander Jansen

29/10/2012 21:53:24
Quote Anchor link
ik heb bovenstaande code toegevoegd en deze werkt...nu moet ik alleen nog alle events invullen in de database?

Toevoeging op 29/10/2012 22:01:01:

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

Toevoeging op 29/10/2012 22:01:25:

http://84.28.204.44/flaarisse/1.php

Toevoeging op 29/10/2012 22:04:54:

event_presence blijft leeg...gebruiker maakt hij wel aan
 
Frank Nietbelangrijk

Frank Nietbelangrijk

29/10/2012 22:24:08
Quote Anchor link
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
 
Sander Jansen

Sander Jansen

29/10/2012 22:32:34
Quote Anchor link
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 */;
 

Pagina: 1 2 volgende »



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.