database

Status
Niet open voor verdere reacties.

hollander

Gebruiker
Lid geworden
23 mrt 2005
Berichten
210
heey beste helpers,

ik heb een probleem, ik ben een redelijke beginner met databases ( begon er vandaag mee :p ) .
ik wou een poll op mijn site zetten en daarvoor heb ik dit gedaan:

ik heb 2 tabellen in de database gamaakt

1:
Code:
Code: CREATE TABLE poll_opties ( 
id int(11) NOT NULL auto_increment, 
pollid int(11) NOT NULL default '0', 
optie varchar(255) NOT NULL default '', 
votes int(11) NOT NULL default '0', 
PRIMARY KEY (id) 
) TYPE=MyISAM;

2:
Code:
Code: CREATE TABLE polls ( 
id int(11) NOT NULL auto_increment, 
vraag varchar(255) NOT NULL default '', 
begin varchar(100) NOT NULL default '', 
einde varchar(100) NOT NULL default '', 
PRIMARY KEY (id) 
) TYPE=MyISAM;

en toen heb ik dit in mijn ftp server gezet:

config.php
Code:
<?php 

$host = "localhost"; 
$user = "******"; 
$password = "******"; 
$db = "database"; 

mysql_connect($host,$user,$password); 
mysql_select_db($db); 
?>

admin.php
Code:
<?php 
include("config.php"); 
?> 

<html> 
<head><title>Admin</title></head> 

<body bgcolor="white"> 

<center> 

<?php 
if($_POST['action'] == "save_poll") { 
    if(!is_numeric($_POST['aantal_opties'])) { 
        echo "<font color=red>Je moet wel een cijfer invullen!</font>"; 
        exit; 
    } 
      
    if(!$_POST['vraag']) { 
        echo "<font color=red>Je moet wel een vraag invullen!</font>"; 
        exit;          
    } 
      
    $query = mysql_query("SELECT id FROM polls ORDER BY id DESC LIMIT 0,1") or die(mysql_error());

    if(mysql_num_rows($query) > 0) { 
        $oude_poll = mysql_result($query,0,"id"); 
        mysql_query("UPDATE polls SET einde='" . time() . "' WHERE id='" . $oude_poll . "'") or
die(mysql_error());      
    } 
      
    mysql_query("INSERT INTO polls (vraag,begin,einde) VALUES ('" . addslashes($_POST['vraag']) .
"','" . time() . "','0')") or die(mysql_error()); 
      
    $query = mysql_query("SELECT id FROM polls ORDER BY id DESC LIMIT 0,1") or die(mysql_error());

    $poll_id = mysql_result($query,0,"id"); 
      
    for($i=0;$i < $_POST['aantal_opties'];$i++) { 
        mysql_query("INSERT INTO poll_opties (pollid,optie,votes) VALUES ('" . $poll_id . "','" .
addslashes($optie[$i]) . "','0')") or die(mysql_error()); 
    } 
      
    echo "De poll is aangemaakt!<br><br>"; 
} elseif($_POST['action'] == "nieuwe_poll") { 
    if(!is_numeric($_POST['aantal_opties'])) { 
        echo "<font color=red>Je moet wel een cijfer invullen!</font>"; 
        exit; 
    } 
      
    if(!$_POST['vraag']) { 
        echo "<font color=red>Je moet wel een vraag invullen!</font>"; 
        exit;          
    } 
      
    $vraag = $_POST['vraag']; 
    $aantal_opties = $_POST['aantal_opties']; 
      
    $form_html = ""; 
    for($i=1;$i <= $aantal_opties;$i++) { 
        $kleur = ($i % 2) ? "white" : "white"; 
          
        $form_html .= "<tr bgcolor=\"" . $kleur . "\"><td><b>Optie " . $i .
"</b></td><td><input type=\"text\" name=\"optie[]\"
size=\"40\"></td></tr>\n";      
    } 
?> 

<form method="POST" action="<?php echo $PHP_SELF; ?>"> 
<input type="hidden" value="save_poll" name="action"> 
<input type="hidden" value="<?php echo $aantal_opties; ?>" name="aantal_opties"> 
<table border="1" width="65%"> 
<tr bgcolor="white"><td colspan="2"><center><b>Vul de opties
in.</b></center></td></tr> 
<tr bgcolor="white"> 
<td><b>Vraag: </b></td> 
<td><input type="text" name="vraag" size="40" value="<?php echo $vraag;
?>"></td> 
</tr> 

<?php echo $form_html; ?> 

<tr bgcolor="white"> 
<td colspan="2"><center><input type="submit" name="opslaan"
value="Opslaan!"></center></td> 
</tr> 

</table> 
</form> 


<?php      
} else { 
?> 

<form method="POST" action="<?php echo $PHP_SELF; ?>"> 
<input type="hidden" value="nieuwe_poll" name="action"> 
<table border="1" width="65%"> 
<tr bgcolor="white"><td colspan="2"><center>Vul de vraag en het aantal opties in,
om verder te gaan met het aanmaken van de poll.</center></td></tr> 
<tr bgcolor="white"> 
<td><b>Vraag : </b></td> 
<td><input type="text" name="vraag" size="40"></td> 
</tr> 

<tr bgcolor="white"> 
<td><b>Aantal Opties : </b></td> 
<td><input type="text" name="aantal_opties" size="10" maxlength="2"></td> 
</tr> 

<tr bgcolor="white"> 
<td colspan="2"><center><input type="submit" name="opslaan"
value="Aanmaken!"></center></td> 
</tr> 

</table> 
</form> 

<?php 
} 
?> 
</center> 

</body> 
</html>

poll.php:
Code:
<?php 
include("config.php"); 
$query = mysql_query("SELECT * FROM polls ORDER BY id DESC LIMIT 0,1") or die(mysql_error()); 
$pollid = mysql_result($query,0,"id"); 
$vraag = mysql_result($query,0,"vraag"); 

$poll_cookie = "defertico_poll" . $pollid; 

if(empty($_COOKIE[$poll_cookie])) { 
   
    echo "<form action=\"verwerk.php\" method=\"POST\"><input type=\"hidden\"
name=\"poll_cookie\" value=\"" . $poll_cookie . "\">\n"; 
    echo "<table border=0>"; 
    echo "<tr><td colspan=\"2\"><b>" . $vraag .
"</b></td></tr>"; 
    $query = mysql_query("SELECT * FROM poll_opties WHERE pollid='" . $pollid . "' ORDER BY id
ASC") or die(mysql_error()); 
    while ($var = mysql_fetch_object($query)) { 
        echo "<tr><td><input class=\"form\" type=\"radio\" name=\"vote\" value=\"" .
$var->id . "\">&nbsp;" . $var->optie . "</td></tr>\n"; 
    } 
    echo "<tr><td vAlign=right><input class=\"form\" type=\"submit\" value=\"Stem!\"
name=\"stemmen\"></form></td></tr></table>\n\n"; 
} else { 
      
      
    $query = mysql_query("SELECT * FROM poll_opties WHERE pollid='" . $pollid . "' ORDER BY id
ASC") or die(mysql_error()); 
    $totaal = 0; 
    while ($var = mysql_fetch_object($query)) { 
        $totaal = $totaal + $var->votes; 
    } 

    echo "<b>" . $vraag . "</b><br>"; 
    $query = mysql_query("SELECT * FROM poll_opties WHERE pollid='" . $pollid . "' ORDER BY id
ASC") or die(mysql_error()); 
    while ($var = mysql_fetch_object($query)) { 
        $percentage = (integer)(($var->votes / $totaal) * 100); 
        echo "" . $var->optie . " : " . $var->votes . "<br>\n"; 
        echo "<img class=\"form\" src=\"poll.gif\" width=\"" . $percentage . "\"
height=\"8\"> (" . $percentage . " %)<br>\n"; 
    } 
} 
?>

verwerk.php
Code:
<?php 
include("config.php"); 

if($_POST['stemmen']) { 
$poll_cookie = $_POST['poll_cookie']; 
      
if(empty($_COOKIE[$poll_cookie])) { 
      
    $query = mysql_query("SELECT * FROM poll_opties WHERE id='" . $_POST['vote'] . "'") or
die(mysql_error()); 
    while ($var = mysql_fetch_object($query)) { 
        $aantal_stemmen = $var->votes + 1; 
    } 
      
    $dagen = 60*60*24*365; 
    $expiredate = time() + $dagen; 
    setcookie($poll_cookie,"gestemd","$expiredate"); 
      
    mysql_query("UPDATE poll_opties SET votes='" . $aantal_stemmen . "' WHERE id='" .
$_POST['vote'] . "'") or die(mysql_error()); 
      
} 
      
    $prev = getenv("HTTP_REFERER"); 
    header("Location: poll.php"); 
    exit; 
} 
?>

als ik nou de ftp op start en de admin open in de browser kan ik instelle welke vraag ik wel en hoeveel opties hij moet hebben en als ik dan op opslaan druk komt er te staan:

No Database Selected

wat betekent dit ??

groetjes hollander
 
Heb je wel de goede naam voor de database? Heet die ook echt 'database' of anders?
 
ik heb werkelijk waar geen idee :p

hoe zou die moete hete ?
 
Laatst bewerkt:
Dat moet je bij je webruimte waar de database staat informeren. (Als je PhpMyAdmin gebuikt staat het bovenaan (geloof ik).)
 
ik heb gekeken maar het enigste wat boven aan staat is ikkelderontoer@localhost ..

is dit het ?

ik heb dat dus in gevult bij config.php :

Code:
$db = "ikkelderontoer@localhost";

zo kwam het dus uit te zien en nog steeds het zelfde .. wat nu ?
 
Nee, zo moet je niet doen. Je moet @localhost weglaten, dus dat wordt dit:
PHP:
$db = "ikkelderontoer";
localhost is wat je invult bij host, maar dat had je al goed.
 
Bedankt het is gelukt !! , nu het volgende :p hoe kan ik een poll vraag verandere of een nieuwe poll beginne ?
 
Ik ken het script niet, maar wat kun je allemaal als je gaat naar admin.php (gewoon intypen in de adresbalk)?
 
dan kom ik op de pagina terecht waarmee ik de poll kan maken.. maar als ik dan een pol wil maken en op opslaan druk staat er :

Duplicate entry '0' for key 1
 
Staat er iets in een van de twee tabellen? Zo ja, dan moet je misschien die tabellen even legen.
 
Ik denk dat ik nu wel weet waar de fout zit, namelijk bij het invoegen van de poll of de pollopties. De melding betekend dat er twee keer 0 staat waar een unieke waarde hoort te staan. Maar als ik het script op die plek bekijk zit er geen fout in. Het kan best zijn dat ik iets over het hoofd heb gezien.
Misschien is er iemand anders hier op Helpmij.nl die het wel weet.
 
bedoel je dit ?
bij poll.php

Code:
<?php 
include("config.php"); 
$query = mysql_query("SELECT * FROM polls ORDER BY id DESC LIMIT 0,1") or die(mysql_error()); 
$pollid = mysql_result($query,0,"id"); 
$vraag = mysql_result($query,0,"vraag");
 
Nee ik bedoelde eigenlijk iets anders, maar ging er iets fout bij admin.php of bij poll.php?
 
Oké, dan zit volgens mij in een van de volgende twee regels een fout:
PHP:
mysql_query("INSERT INTO polls (vraag,begin,einde) VALUES ('" . addslashes($_POST['vraag']) .
"','" . time() . "','0')") or die(mysql_error());
PHP:
mysql_query("INSERT INTO poll_opties (pollid,optie,votes) VALUES ('" . $poll_id . "','" .
addslashes($optie[$i]) . "','0')") or die(mysql_error());
Ik weet alleen niet wat er fout gaat. Misschien dat iemand anders hier op Helpmij.nl het wel weet...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan