Post on 07-Nov-2015
description
27/4/2015 ComohacerunSistemadeencuestasconPHPyMySQL| WebTursos
http://web.tursos.com/comohacerunsistemadeencuestasconphpymysql/ 1/21
ComoHacerunSistemadeEncuestasconPHPyMySQLPor Edwind Pineda
diciembre 21, 2012 MySQL, PHP 64 Comentarios
DEMO DESCARGAR
Enestetutorialaprenderasahacerunsistemadeencuestasfuncional,prcticoyexpandible,usaremosPHPyMySQLcontablasrelacionales.
Trabajaremoscon4ficherosPHP,unoparalaconexinalabasededatos(conexion.php),unoparalistarlasencuestas(index.php),otroparacrearnuevasencuestas(agregar.php),elquemostraralosresultadosdelasencuestas(resultado.php)yporultimoestilos.cssqueseencargaradedarlealgodeesteticaperotambiendeunapartemuyesencialqueeslademostrarlabarradevotaciones.
Sienciertasparteselcdigoteresultamuycomplejo,leeloscomentarios.
0.estilos.css
PUBLICIDAD
.barra{
27/4/2015 ComohacerunSistemadeencuestasconPHPyMySQL| WebTursos
http://web.tursos.com/comohacerunsistemadeencuestasconphpymysql/ 2/21
moz (top, , ) webkit (top, , ) (tobottom, , ) both px white bold right px px px px
sansserif px
none red
right
left
both
.barra{background: #ff3019;
background: lineargradient #ff3019 0% #cf0404 100% ;background: lineargradient #ff3019 0% #cf0404 100% ;background: lineargradient #ff3019 0% #cf0404 100% ;clear: ;height: 15 ;color: ;fontweight: ;textalign: ;padding: 6 ;borderradius: 4 ;maxwidth: 356 ;minwidth: 20 ;
}
/*Apartirdeaquiessolocosmetico,lopuedesborrar*/
*{margin: 0;padding: 0;fontfamily: ;fontsize: 14 ;
}body{
background: #464646;}a{
textdecoration: ;color: ;
}.fr{
float: ;}
,.fl .votar{float: ;
}.cf{
clear: ;
27/4/2015 ComohacerunSistemadeencuestasconPHPyMySQL| WebTursos
http://web.tursos.com/comohacerunsistemadeencuestasconphpymysql/ 3/21
both
px auto px px px pxsolid
px px pxsolid px center
px
px
block
pxsolid px none
px px gray block bold white
clear: ;}
.wrap{padding: 25 ;margin: 0 ;width: 385 ;background: #F3F3F3;borderradius: 4 ;margintop: 70 ;border: 1 #E0E0E0;
}h1{
marginbottom: 20 ;fontsize: 21 ;borderbottom: 1 #DDD;paddingbottom: 15 ;textalign: ;
}form>div{
marginbottom: 20 ;}form.titulo{
marginright: 20 ;}formlabel{
display: ;}forminput[type='text'],select{
border: 1 #E0E0E0;padding: 6 ;resize: ;
}forminput[type="submit"]{
padding: 8 16 ;background: ;border: 0;display: ;fontweight: ;color: ;
27/4/2015 ComohacerunSistemadeencuestasconPHPyMySQL| WebTursos
http://web.tursos.com/comohacerunsistemadeencuestasconphpymysql/ 4/21
white px
px none
px px px
white
gray bold px
black
px
px
block px both
color: ;borderradius: 6 ;
}forminput[type="submit"]:hover{
background: #505050;}ul.votacion{
marginbottom: 25 ;liststyle: ;
}li.votacion {
padding: 8 ;background: #FCFCFC;borderradius: 5 ;marginbottom: 5 ;
}li.votacion :hover{
background: ;}
lia.votacion {color: ;fontweight: ;fontsize: 16 ;
}lia.votacion :hover{
color: ;}
lispan.votacion {marginleft: 10 ;
}.votacion .fl{
marginbottom: 5 ;}.volver{
display: ;paddingtop: 15 ;clear: ;
}.resultado{
27/4/2015 ComohacerunSistemadeencuestasconPHPyMySQL| WebTursos
http://web.tursos.com/comohacerunsistemadeencuestasconphpymysql/ 5/21
left
px px black
1.SQLCreamosunatalaconelnombreencuestasconlossiguientescampos:id,tituloyfecha.Aquisealmacenaralosdatoslasencuestascomoeltituloylafechaquefuecreadalaencuestas,utilizaremosotratablaparaquealmacenelasopcionesdelasencuestas.
encuestas id AUTO_INCREMENTtitulo fecha date
id CHARSET latin1AUTO_INCREMENT
Ahorainsertarmosunosdatosdeejemploenlatabla:
encuestas id titulo fecha
Creamosotratablaconelnombreopcionesconlossiguientescampos:id,id_encuesta,nombreyvalor.Elcampodeid_encuestatendrrelacinconelcampoiddelatablaencuestas,ennombreiraelnombreyvalorguardaraelnumerodevotosquetendralaopcionrespectiva.
opciones id AUTO_INCREMENT id_encuesta nombre
.resultado{float: ;
marginleft: 10 ;margintop: 7 ;color: ;
}
CREATE TABLE IF NOT EXISTS ` ` (` ` int(11) NOT NULL ,` ` varchar(50) NOT NULL,` ` NOT NULL,PRIMARY KEY (` `)) ENGINE=InnoDB DEFAULT = =1 ;
INSERT INTO ` ` (` `, ` `, ` `)VALUES (NULL , 'QueosparecenlostutorialesdePHP?','20121215');
CREATE TABLE IF NOT EXISTS ` ` (` ` int(11) NOT NULL ,` ` int(11) NOT NULL,` ` varchar(50) NOT NULL,
27/4/2015 ComohacerunSistemadeencuestasconPHPyMySQL| WebTursos
http://web.tursos.com/comohacerunsistemadeencuestasconphpymysql/ 6/21
valor
id CHARSET latin1AUTO_INCREMENT
Insertamosdatosalatablaopciones:
opciones id id_encuesta nombre valor
Fijaosquehedefinidoid_encuestacon1yesporquequieroqueestasopcionesestenrelacionadasconlaencuestasquecreamosanteriormentequellevabaelidde1.
Sinoentendisteisbiencomovamosatrabajarlasrelacionesdelastablas,estagraficateaclararlasdudas:
PUBLICIDAD
` ` int(11) NOT NULL,
PRIMARY KEY (` `)) ENGINE=InnoDB DEFAULT = =1 ;
INSERT INTO ` ` (` ` ,` ` ,` ` ,` `)VALUES (NULL , '1', 'MuyBueno', '14'), (NULL , '1', 'Bueno', '6'), (NULL , '1', 'Malo', '2');
27/4/2015 ComohacerunSistemadeencuestasconPHPyMySQL| WebTursos
http://web.tursos.com/comohacerunsistemadeencuestasconphpymysql/ 7/21
02.conexion.phpEltipicoficheroPHPparaguardarlosdatosdelaconexin,nadadelotromundo:
mysql_connect
03.index.phpLoprimeroseraincluiralficherodeconexin,luegoharemosunaconsultaalabasedatosparaquenosmuestrenlosttulosdelatablaencuestaslosmismosquemostraremoscomoenlaceshacialasencuestas,estosenlacesllevaraneliddelaencuestasencuestinmedianteGET(encuestas.php?id=x).
27/4/2015 ComohacerunSistemadeencuestasconPHPyMySQL| WebTursos
http://web.tursos.com/comohacerunsistemadeencuestasconphpymysql/ 8/21
Sistemadeencuestas
Encuestas
Agregarnuevaencuesta
Nosdeberairquedandoas:
html< lang enUS=" ">head< >
meta< charset UTF8=" ">title< > title
link< rel stylesheet=" " href estilos.css=" ">head
body< >div< class wrap=" ">h1< > h1
ul< class votacionindex=" ">
' id
27/4/2015 ComohacerunSistemadeencuestasconPHPyMySQL| WebTursos
http://web.tursos.com/comohacerunsistemadeencuestasconphpymysql/ 9/21
04.encuesta.phpLinea04:SinoexistelavariabledeURLseregresaraalapaginaprincipal.Linea11:Siledanavotar(elformdevotacioniraabajo)ysihanseleccionadounaopcionsevaaactualizarlosdatosdelcampovalordelatablaopciones:
1
27/4/2015 ComohacerunSistemadeencuestasconPHPyMySQL| WebTursos
http://web.tursos.com/comohacerunsistemadeencuestasconphpymysql/ 10/21
AhoralaparteHTMLdondeiraelformdevotacion,aquivamosagenerarunaconsultaalabasedatosparaquesemuestrenlosdatosdelatablaencuestasconrelacinalatablaopcionescomoradiobuttons,partesdeunform:
Linea15:EnestalineaharemosunqueryconINNERJOINenelcualtrabajaremosconlastablasencuestasyopcionesdondeaseraencuestasybesopciones,aquibuscaremosfilasdondea.idseaigualab.encuesta_id,elvalordea.idquesecompararaseradefinidopor$id,estevalorloobtuvimosalprincipioenelprimerpedazodecdigomedianteGET.
Linea18y27:Conelresultadodelqueryhacemosunwhiledondemostraremoseltitulodelaencuestayluegoenlalinea48semuestrancadaunadelasopcionescomoinput[type='radio'],$auxesunavariableauxiliarquenosayudaadetenerelbucleparaqueciertoselementossemuestrensolounavez.
PUBLICIDAD
if(isset($_POST['valor'])){
$opciones = $_POST['valor'];$mod = mysql_query("SELECT*FROMopcionesWHEREid="while($result = mysql_fetch_object($mod)){
$valor = $result>valor + 1;//obtenemoselvalorde'valor'yleaadimos1unidadmysql_query("UPDATEopcionesSETvalor='".$valor
}header('location:resultado.php?id='.$id);//Porultimoloredireccionamosalaencuestasmostrandolosresultados.
}}
?>
27/4/2015 ComohacerunSistemadeencuestasconPHPyMySQL| WebTursos
http://web.tursos.com/comohacerunsistemadeencuestasconphpymysql/ 11/21
Sistemadeencuestas
12345678910111213141516171819
html< lang enUS=" ">
head< >meta< charset UTF8=" ">
title< > title link< rel stylesheet=" " href estilos.css=" ">
headbody< >
div< class wrap=" ">
form< action="" method post=" ">
' '
' '
' id
' '
" Seleccionaunaopcion "
' '
27/4/2015 ComohacerunSistemadeencuestasconPHPyMySQL| WebTursos
http://web.tursos.com/comohacerunsistemadeencuestasconphpymysql/ 12/21
Sitodosalibien,encuesta.phpdeberiaverseasi:
' ' ' VerResultados
' larr Volver '
echo input< name votar=" " type submit=" " value Votar=" "> ;echo a< href resultado.php?id '.$id.'=" = " class resultado=" ">
echo a< href index.php=" " class volver=" ">& ; a ;
?>
formdiv
bodyhtml
27/4/2015 ComohacerunSistemadeencuestasconPHPyMySQL| WebTursos
http://web.tursos.com/comohacerunsistemadeencuestasconphpymysql/ 13/21
05.resultado.phpEstaarchivoesmassimple,aquimostraremoslosresultadosdelasencuestasdeacuerdoalidobtenidoporGET(resultado.php?id=x):Linea11:ParaobtenerelvalorusamosSUM()paraquenosresultelasumatotaldelvalorenunsolonumero:
LuegomostramoslosresultadosconelmismoqueryconINNERJOINqueyahemosusadoanteriormente,estonosmostraracadaopcinenformadediv(.barra)alqueledefinimoselanchoenporcentajeusandounaoperacinmatemtica,
1
SistemadeEncuestas
1234567
@
@
27/4/2015 ComohacerunSistemadeencuestasconPHPyMySQL| WebTursos
http://web.tursos.com/comohacerunsistemadeencuestasconphpymysql/ 14/21Sillegastehastaaquiresultado.phpdeberalucirsimilaraesto:
78
910111213141516
body< >
div< class wrap=" "> form< action="" method post=" ">
@
@ " " " " ' ' ' valor
' '
' Total ' ' Volver
ulformdivbodyhtml
27/4/2015 ComohacerunSistemadeencuestasconPHPyMySQL| WebTursos
http://web.tursos.com/comohacerunsistemadeencuestasconphpymysql/ 15/21
Sillegastehastaaquiresultado.phpdeberalucirsimilaraesto:
06.agregar.phpEnesteficheroesprobablementeelmascomplejodetodos,manejaremoselprocesoPHParribayelformularioabajo,porelloparaentenderestaparteesnecesarioverelcdigocompleto(leercomentarios):
27/4/2015 ComohacerunSistemadeencuestasconPHPyMySQL| WebTursos
http://web.tursos.com/comohacerunsistemadeencuestasconphpymysql/ 16/21
" Tienequellevarporlomenos opciones
if($titulo != ""){
$num = $_POST['opciones'];//estevalorlovamosaobtenerdeloqueelusuarioingresecomonumerodeopcionesalcrearlaencuesta$fecha = date('Ymd');
$sql= "INSERTINTO`encuestas`(`id`,`titulo`,`fecha`)VALUES(NULL,'$titulo','$fecha');"mysql_query($sql);
$sql = "SELECTMAX(id)asidFROMencuestas";//ahoraobtenemoseliddelaultimafila,//laqueacabamosdeingresar,//estolohacemosparapoderasociarlelasopciones
$req = mysql_query($sql);
while($result = mysql_fetch_object($req)){$id_encuesta = $result>id;//conelresultadoobtenidohacemosunbucleydefinimoslosresultadoscomoid_encuesta.
}
$sql = "INSERTINTO`opciones`(`id`,`id_encuesta`,`nombre`,`valor`)VALUES"for($i=1;$i 2
}else{header('location:index.php');//porultimositodosaliobien,redireccionamosalindexparaqueelusuarioveasuencuestareciencreada.
}mysql_query($sql);//yejecutamoselquery
}
27/4/2015 ComohacerunSistemadeencuestasconPHPyMySQL| WebTursos
http://web.tursos.com/comohacerunsistemadeencuestasconphpymysql/ 17/21
SistemadeEncuestas
AgregarEncuesta
Titulo
Opcion Ndeopciones
}}
?>
html< lang enUS=" ">head< >
meta< charset UTF8=" ">title< > title
link< rel stylesheet=" " href estilos.css=" ">head
body< >
div< class wrap=" ">h1< > h1
form< action="" method post=" ">
div< class fltitulo=" ">label< > : label
input< name titulo=" " type text=" " value=" div
div< class cf=" ">label< > : label
input< name opc=" " type text=" " size 43=" ">div
div< class cf=" ">
input< name enviar=" " type submit=" " value Enviar=" "> input< name opciones=" " type hidden=" " value=" input< name cont=" " type hidden=" " value=" cont ">
div
div< class fl=" ">label< > : label
27/4/2015 ComohacerunSistemadeencuestasconPHPyMySQL| WebTursos
http://web.tursos.com/comohacerunsistemadeencuestasconphpymysql/ 18/21
Ndeopciones
Volver
Porultimo,agregar.phpensusdosfases:
label< > : labelselect< name opciones=" ">
option< value=" "> option a< href index.php=" " class volver=" "> aformdiv
bodyhtml
27/4/2015 ComohacerunSistemadeencuestasconPHPyMySQL| WebTursos
http://web.tursos.com/comohacerunsistemadeencuestasconphpymysql/ 19/21
27/4/2015 ComohacerunSistemadeencuestasconPHPyMySQL| WebTursos
http://web.tursos.com/comohacerunsistemadeencuestasconphpymysql/ 20/21 Compartir Compartir Compartir
PosiblesmejorasDentrodelasposiblesmejorasqueselepodemoshaceralsistema,estalacreacindenuevasencuestas(agregar.php)detrsdeunlogin,otraadicinserialadeimpedirvotacionesconsecutivasbloqueandolaIPoporcookies.
Sinoentendistealgunaparteotesalealgnerror,hzmelasaberenloscomentariosyrecuerdaquepuedesbajarteelcdigofuentedesdeesteenlaceoverloenfuncionamientoaqui.
27/4/2015 ComohacerunSistemadeencuestasconPHPyMySQL| WebTursos
http://web.tursos.com/comohacerunsistemadeencuestasconphpymysql/ 21/21
Compartir Compartir Compartir
EdwindPinedaSoyAutor/EditordeTursos,estudiolaIngenieriadeSistemasytrabajocomoprogramadorPHPfreelance,siguemeenTwitteroescribemealm@edwindpineda.com.
Talvezteinterese
10 Comandos SQL quete pueden ser de
utilidad
Dotgeek: HostingGratuito para
Desarrolladores Web
Traducir la Funcindate() de PHP al
Espaol
Como Hacer unFormulario deContacto IV:
Almacenar en Base deDatos MySQL con PHP