Creare sondaggio

  • Creatore Discussione Creatore Discussione Shyson
  • Data di inizio Data di inizio

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
In rete ho trovato vari codici per creare un sondaggio da mettere nel sito, e come al solito non so quale usare anche perché non me intendo molto, intenderei usare il DB visto che ora lo uso
 
Ma non stampa proprio nulla? Se ci sono dei '@' prima di alcune funzioni nel codice
es
PHP:
@mysql_connect($mysql[host], $mysql[user], $mysql[pass]);
levale:
esempio
PHP:
mysql_connect($mysql[host], $mysql[user], $mysql[pass]);
Poi posta gli errori!
Ciao ciao!
 
Ma non stampa proprio nulla? Se ci sono dei '@' prima di alcune funzioni nel codice
es
PHP:
@mysql_connect($mysql[host], $mysql[user], $mysql[pass]);
levale:
esempio
PHP:
mysql_connect($mysql[host], $mysql[user], $mysql[pass]);
Poi posta gli errori!
Ciao ciao!

Ora un po' funziona:

ho creato il file results.php e vote.php e li richiamo in un file esterno con include, questo file esterno è a sua volta richiamato in ogni pagina del sito. Ho eliminato il file install.php avendo io stesso creato la tabella nel db.

A video ora stampa questo ma non c'è la barra di progresso sotto ogni risposta

Come hai conosciuto i prodotti ?

Internet (0.0%)
Depliant (0.0%)
Casualmente (0.0%)
Giornali o televisione (0.0%)
Da amici o conoscenti (0.0%)
 
Vuoi postare il codice?

A sx di ogni risposta devo mettere il "radio" ed in fondo il bottone "vota"

results.php

PHP:
<?php
$question = "<span style=\"color:#008040; text-align:center;\">Come hai conosciuto i prodotti Akuna?</span>";
$answers = array("Internet", "Depliant", "Casualmente", "Giornali o televisione", "Da amici o conoscenti");
$query = @mysql_query("SELECT * FROM sondaggio");
$result = @mysql_fetch_array($query);
echo "{$question}<br /><br />";
for ($x = 1; $x <= count($answers); $x++) {
$total = $total + $result[tot_ . $x];
}
for ($i = 1; $i <= count($answers); $i++) {
@$percent = $result[tot_ . $i] / $total;
$percent = $percent * 100;
$percent = number_format($percent, 1);
echo "" . $answers[$i - 1] . "<br /><span style=\"color:#ff8000;\">({$percent}%)</span><br />";
}
?>

vote.php

PHP:
<?php
if ($_COOKIE[JacoZ_Poll] == TRUE) {
echo "Hai già votato, grazie!";
}
else
{
mysql_query("UPDATE sondaggio SET tot_{$_POST[a]} = tot_{$_POST[a]}+1 ");
setcookie("JacoZ_Poll", "www.jacoz.net", time() + 86400);
header("Location: results.php");
}
?>

nel file esterno che poi viene richiamato in tutte le pag del sito

PHP:
<!-- Richiama i file per il sondaggio e il voto -->
<p style="text-align:left; margin-left:8px; margin-top:-5px;">
<?php
include ("results.php");
include ("vote.php");
?>
echo "<form action="vote.php" method="post">";
echo "<strong>{$question}</strong><br /><br />n";
for ($i = 0; $i <= count($answers) - 1; $i++) {
echo "<input type="radio" name="a" value="" . ($i + 1) . "">{$answers[$i]}<br />n";
}
echo " <br /><input type="submit" value=" Vota ">n";
echo " <a href="results.php">Risultati</a>n";
echo "</form>n";
</p>
 
ciao
scusa devo capire cosa vuoi fare esattamente:
tu vuoi sapere la percentuale di come hanno conosciuto il tuo prodotto, giusto?
se è così c'è qualcosa che non mi torna, soprattutto per quanto riguarda il db, da quello che capisco non c'è la distinzione della "provenienza".
da quello che vedo nello script quello che stai facendo è una votazione generica che non distingue, con questa query
PHP:
mysql_query("UPDATE sondaggio SET tot_{$_POST[a]} = tot_{$_POST[a]}+1 ");
come fai ad attribuire il voto ad una certa provenienza?
secondo me è da rimettere la mani su tutto se da quanto ho capito è giusto.
 
ciao
scusa devo capire cosa vuoi fare esattamente:
tu vuoi sapere la percentuale di come hanno conosciuto il tuo prodotto, giusto?
se è così c'è qualcosa che non mi torna, soprattutto per quanto riguarda il db, da quello che capisco non c'è la distinzione della "provenienza".
da quello che vedo nello script quello che stai facendo è una votazione generica che non distingue, con questa query
PHP:
mysql_query("UPDATE sondaggio SET tot_{$_POST[a]} = tot_{$_POST[a]}+1 ");
come fai ad attribuire il voto ad una certa provenienza?
secondo me è da rimettere la mani su tutto se da quanto ho capito è giusto.
Quello che vorrei fare è una cosa del genere, però con il radio a sx di ogni risposta ed in fondo il bottone Vota
http://www.akuna.net/index.php?typ=AUU&showid=285
 

Allegati

  • Img_01.jpg
    Img_01.jpg
    84,9 KB · Visite: 291
ciao
secondo me dovresti modificare la tabella così

id int(1) primarykey default 1
internet int(12) default 0
depliant int(12) default 0
casualmente int(12) default 0
giornali int(12) default 0
amici int(12) default 0

id basta int(1) in quanto la tabella avrà un solo record
gli altri campi dovendo incrementarsi di 1 ad ogni voto devono essere di tipo intero
evita di dare nomi con spazi
poi con phpmyadmin crei il primo record in pratica sarà = 1,0,0,0,0,0
questo se vuoi solo avere i totali, in questo caso il tutto si riduce al semplice script
PHP:
<?php
//dati di connessione
if(isset($_POST['vota'])){
	$voto=htmlspacialcars($_POST['voto']);//per eventuale sicurezza
	$q="UPDATE sondaggio SET $voto= $voto + 1 WHERE id=1";
	if(mysql_query($q)){
		echo "grazie di aver votato";
	}else{
		echo "si è verificato un errore, riprova più tardi";
	}
}
?>

<form action="" method="post"><!-- nell'actio il nome della pagina o echo $_SERVER['PHP_SELF'] se nella stessa-->
    <select name="voto">
      <option value="internet">internet</option>
      <option value="depliant">internet</option>
      <option value="casualmente">casualmente</option>
      <option value="giornali">giornali o televisione</option>
      <option value="amici">amici o conoscenti</option>
    </select><p>
    <input name="vota" type="submit" id="vota" value="vota"></p>
</form>

al posto della select puoi mettere dei radio con name=voto e il valore come nella select es
HTML:
internet <input name="voto" type="radio" value="internet"> | depliant <input name="voto" type="radio" value="depilant"> | ecc.....
se invece vuoi anche vedere come si sono espressi i voti es. in un certo periodo la tabella va modificata, sappimi dire se ti interessa

dimenticavo
con un po' di js puoi evitare di mettere il pulsante di submit e nella select all' onchange submit
 
Ultima modifica:
Non ho capito questa parte

id int(1) primarykey default 1

e questa


internet int(12) default 0
 
ciao
id int(1) primarykey default 1
dato che la tabella ha un solo record inutile dargli es int(3) che corrisponde a voler avere tanti record da 1 a 999, di default 1 perche deve rimanere sempre lo stesso
internet int(12) default 0
ho messo 12 per non avere problemi, puoi accettare un totale massimo di 999.999.999.999 voti (999 milardi, ti auguro di averli, saresti meglio di google), defaul 0 perche il conteggio deve partire da 0 (nessun voto), al primo che clicca su "internet" avrai internet = 0 + 1 = 1

per i radio basta che sostituire il codice tra <select ... >....</select> con la serie di radio

edit
se parli di quello che c'è nel box indicato "SONDAGGIO" da quello che vedo è tutto js, in tal caso non so darti una mano
 
Ultima modifica:

Discussioni simili