Como Hacer Un Sistema de Encuestas Con PHP y MySQL _ WebTursos

21
Como Hacer un Sistema de Encuestas con PHP y MySQL Por Edwind Pineda diciembre 21, 2012 MySQL, PHP 64 Comentarios DEMO DESCARGAR En este tutorial aprenderas a hacer un sistema de encuestas funcional, práctico y expandible, usaremos PHP y MySQL con tablas relacionales. Trabajaremos con 4 ficheros PHP, uno para la conexión a la base de datos (conexion.php), uno para listar las encuestas (index.php), otro para crear nuevas encuestas (agregar.php), el que mostrara los resultados de las encuestas (resultado.php) y por ultimo estilos.css que se encargara de darle algo de estetica pero tambien de una parte muy esencial que es la de mostrar la barra de votaciones. Si en ciertas partes el código te resulta muy complejo, lee los comentarios. 0. estilos.css PUBLICIDAD .barra {

description

Sistema

Transcript of Como Hacer Un Sistema de Encuestas Con PHP y MySQL _ WebTursos

  • 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,[email protected].

    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