[Recomendado] Preguntas Mas Frecuentes de PHP (scripts)

Páginas: << < (2/6) > >>

Cuantico:

- ¿Como hacer una Encuesta con PHP y MYSQL ?

Bueno, aqui ya le entramos al SQL, te hablaremos suponiendo, que te leiste el link, q te dimos antes de regerirte a www.php.net (el tuto de riven ward y neohex).

Bueno, lo primero es hacer las tablas de la base de datos, necesarias para manejar nuestra encuesta. Para esto, crearemos dos tablas, que explicaré a continuación.

Código:
--
CREATE TABLE encuestas
       (id INT not null AUTO_INCREMENT,
       titulo VARCHAR (50) not null ,
       fecha INT (10) not null ,
       PRIMARY KEY (id));
--
la primera celda id, viene  de identificador, y es numerico, se autoincrementa (1, luego si agregamos otra encuesta, será la numero 2)

Titulo,  será el nombre que llevara la encuesta en activo o que solicitemos a la SQL.
y Fecha, para saber la fecha, en que fue insertada.

Código:
--
CREATE TABLE respuestas
       (id INT not null AUTO_INCREMENT,
       texto VARCHAR (50) not null ,
       votos INT (5) not null ,
       idenc INT not null,
       PRIMARY KEY (id));
--
Bueno, está es donde se estarán depositadas todas las respuestas...

id, hace la misma funcion, de la tabla de arriba
Texto, es el texto o donde irá la pregunta.
votos, la cantidad de votos que tiene dicha respuesta
e idenc, q es para enlazar la respuesta al id de la encuesta.

Bueno, listo todo esto, empezamos a la creacion de nuestra encuesta

1er paso, crearemos un formulario para el admin, donde nos preguntara, el nombre de la pregunta y la Cantidad de respuestas
Llamada enc1.php
Código:
--
<form name="form1" method="post" action="enc2.php">
  <p>Titulo de la encuesta:
    <input type="text" name="titulo">
  </p>
  <p>N&uacute;mero de respuestas:
    <input type="text" name="respuestas">
  </p>
  <p>
    <input type="submit" name="Submit" value="Enviar">
  </p>
</form>
--
Luego, que le demos a aceptar, en el formulario enc1.php, nos dirigira a esta página un segundo formulario llamado enc2.php, con la posibilidad de escribir la cantidad de respuestas que hemos puesto  en enc1.php.

Código:
--
form action="enc3.php" method="post">
  <table border="0">
<?php
  for($i=1;$i<=$respuestas;$i++){
?>
  <tr>
    <td>respuesta <?php echo $i; ?></td>
    <td><input name="p<?php echo $i;?>" type="text" size="50" maxlength="50"></td>
  </tr>
<?php } ?>
  </table>
    <input type="submit" name="Submit" value="Enviar"></p>
   <input name="titulo" type="hidden" value="<?php echo $titulo;?>">
   <input type="hidden" name="respuestas" value="<?php echo $respuestas;?>">
</form>
--

Luego seguimos con el archivo encargado de insertar los datos a la base de datos...

enc3.php
Código:
--
<?php

//Conectamos con la base de datos
include("conectbd.php");
$enlace = mysql_connect($host, $usuario, $password);
mysql_select_db($db,$enlace);

//Obtenemos la fecha del sistema
$fecha = time();

//Insertamos la nueva encuesta
$sql = "INSERT INTO encuestas (titulo, fecha) VALUES ('$titulo', '$fecha') ";
$sql = mysql_query($sql);

//Ahora obtenemos el ID de la encuesta que acabamos de insertar
$sql = "SELECT id FROM encuestas ORDER BY fecha DESC LIMIT 0,1";
$sql = mysql_query($sql);
while($row = mysql_fetch_array($sql)){
   $id=$row["id"];
}

//Recorremos todas las preguntas
for($i=1; $i<=$respuestas; $i++){

//Obtenemos el texto de la pregunta
   $preg = p.$i;
   $texto = $$preg;

//Y lo insertamos
   $sql = "INSERT INTO respuestas(texto, votos, idenc) VALUES(\"$texto\", 0, $id)";
   $sql = mysql_query($sql);
   }
 ?>
<div align="center"><strong>Felicidades!! Si todo ha ido bien, tu encuesta ha
  sido insertada!! </strong> </div>

--



hacemos el archivo conectabd.php

Código:
--
<?php
$host = "miHost";
$usuario = "miUsuario";
$password = "miContraseña";
$db = "miBaseDeDatos";
?>
--


Bien, ahora, damos el formulario para realizar los votos
Código:
--
<?php
//Conectamos con la base de datos
   require('contactabd.php');
   $enlace = mysql_connect($host,$usuario,$password);
   mysql_select_db($db,$enlace);
   
//Seleccionamos la informacion de la última encuesta insertada
   $consulta = "SELECT * FROM encuestas ORDER BY fecha DESC LIMIT 0,1";
   $consulta = mysql_query($consulta,$enlace);
   while($row = mysql_fetch_array($consulta)){
      $titulo=$row["titulo"];
      $fecha=$row["fecha"];
      $id=$row['id'];
   }
?>
<body>
<form name="form1" method="post" action="votar.php">
  <table width="350" border="1">
    <tr>
      <td colspan="2"><strong>Titulo</strong>: <?php echo $titulo; ?>
        <input type="hidden" name="id" value="<?php echo $id;?>"></td>
    </tr>
    <?php
   $sql = "SELECT texto, id FROM respuestas WHERE idenc=\"$id\"";
   $sql = mysql_query($sql,$enlace);
   while($row = mysql_fetch_array($sql)){
      $texto=$row["texto"];
      $idres=$row["id"];
?>
    <tr>
      <td width="51"><input type="radio" name="opcion" value="<?php echo $idres; ?>"></td>
      <td width="283"><?php echo $texto; ?></td>
    </tr>
    <?php } ?>
    <tr>
      <td><input type="submit" name="Submit" value="Enviar"></td>
      
      <td>Esta encuesta est&aacute; desde el <?php echo date('d-m-y',$fecha); ?></td>
    </tr>
    <tr>
      <td colspan="2"><a href="votar.php">Ver resultados</a></td>
    </tr>
  </table>
</form>
</body>
--


Luego seguimos, con el archivo que se encargara de introducir los votos a la base de datos, llamaremos al archivo votar.php

Código:
--
<?php
require('configuracion.inc.php');
$enlace = mysql_connect($host, $usuario, $password);
mysql_select_db($db,$enlace);
      
//Obtenemos el titulo de la encuesta
$consulta = "SELECT titulo FROM encuestas ORDER BY fecha DESC LIMIT 1,0";
$consulta = mysql_query($consulta,$enlace);
$lado=mysql_num_rows($consulta);
while($row = mysql_fetch_array($consulta)){
   $titulo= $row['titulo'];
}
      
//Obtenemos el numero actual de votos para la opción elegida
//Comprobamos si $opcion no está vacío porque posteriormente este mismo
//fichero lo utilizaremos para ver resultados sin tener que votar necesariamente
if(!empty($opcion)) {
   $consulta = "SELECT votos FROM respuestas WHERE id=$opcion";
   $consulta = mysql_query($consulta,$enlace);
   $lado=mysql_num_rows($consulta);
   while($row = mysql_fetch_array($consulta)){
      $votos= $row['votos'];
   }
      
//Incrementamos en uno los votos totales
   $votos = $votos + 1;
//Y actualizamos la base de datos
   $consulta = "UPDATE respuestas SET votos = $votos WHERE id=$opcion";
   mysql_query($consulta,$enlace);
}
?>
--


Bien, ahora procederemos, a crear el archivo o manera, de mostrar como va la encuesta osea, el estado de votos...

Como el el método, es creando gráfico, necesitaremos tener la LIBRERIA GD activa, para la autocreacion de la imagen.


este codigo puede parecer complejisimo, pero solo obtiene datos de la bd, y los dibuja en el grafico....
Código:
--
dgrafica.php
<?php
include("conectadb.php");
$enlace = mysql_connect('tuHost','tuUsuario','tuPassword');
mysql_select_db('tuBaseDeDatos');

//Obtenemos el titulo de la última encuesta para colocarlo como título en nuestro gráfico
$consulta = "SELECT titulo, id FROM encuestas ORDER BY fecha DESC LIMIT 0,1";
$consulta = mysql_query($consulta,$enlace);
$lado=mysql_num_rows($consulta);
while($row = mysql_fetch_array($consulta)){
  $titulo= $row['titulo'];
  $id=$row['id'];
}

//Obtenemos el numero de votos de cada opcion y los metemos en "votos[]"
$consulta = "SELECT votos, texto FROM respuestas WHERE idenc=$id";
$consulta = mysql_query($consulta,$enlace);
$lado=mysql_num_rows($consulta);
while($row = mysql_fetch_array($consulta)){
  //Guardamos el texto en la variable temp. Este texto nos servirá como
   //índice en el array votos[]
  $temp = $row['texto'];
  $votos[$temp]= $row['votos'];
}

//Variables del gráfico
$width = 500;       //Ancho de la imagen
$espacioCol = 30;   //Espacio que habrá del principio de una columna a otra
$altoCol = 15;      //El alto de las columnas
$height = 2*count($votos)*$espacioCol+45;   //El alto de la imagen
$maxvoto = max($votos);   //Valor de la opcion mas votada
$maxlargo = $width-50;      //Largo que tendrá la opción mas votada
$coeficiente = (int)($maxlargo / $maxvoto);   //Coeficiente para calcular el largo de cada opcion

//Creamos la imagen con el alto y ancho asignados anteriormente   
$image = imagecreate($width,$height);

//Declaramos variables para los colores.   Al ser el gris el primer color que
//declaramos, éste se quedará como color de fondo en la imagen
$gray = imagecolorallocate($image, 0xC0, 0xC0, 0xC0);
$black = imagecolorallocate($image, 0x00, 0x00, 0x00);
$blue = imagecolorallocate($image, 0x00, 0x00, 0xFF);

//Recorremos el array 'votos'
for($i=0; list($texto, $vot) = each($votos); $i++) {

  $labelfont = 2; //Fuente empleada para etiquetas
  //Dibujamos las barras
  //Coordenadas para definir el rectángulo
  $valign = ($i+1)*$espacioCol + 15;
  $halign = 30;
  $valign2 = $valign + $altoCol;
  $halign2 = $halign+$vot*$coeficiente;
  imagefilledrectangle($image,$halign,$valign,$halign2,$valign2,$blue);
  
  //Ponemos el índice de cada barra
  //Coordenadas para colocar los indices
  $indice = $i + 1;
  $halign = 15;
  imagestring($image, $labelfont, $halign, $valign, $indice, $black);
  
  //Leyenda: Numero de opcion + Texto + ( votos )
  //Coordenadas para colocar la leyenda
  $valign = ($i+1)*$espacioCol + (count($votos)*$espacioCol)+ 15;
  $halign = 30;
  $leyenda = "Opcion ".$indice.": ".$texto." ($vot)";
  imagestring($image, $labelfont, $halign, $valign, $leyenda, $black);      
}

//Asignamos tipografía y colocamos el título en la parte superior izquierda
$titlefont = 3;
imagestring($image, $titlefont, 10, 10, $titulo, $black);

//Dibujamos el recuadro que encierra el contenido
imagerectangle($image, $width - 5, 30, 5, $height - 5, $black);   

//Devolvemos la imagen
header("Content-type: image/png");
imagepng($image);
imagedestroy($image);
?>
--

y para visualizar, la imagen con los resultados, solo utilizamos:

<img src="dgrafica.php">

Ejemplos tomados de programacion.com, con el fin de explicar mas o menos la sistematización de las encuestas, esperando, q a partir de este script, como introducción, cada uno, pueda hacer su propio sistema...

Cuantico:

-  ¿Como hacer mi propia pagina de error 404 (Petición no encontrada) ?

Bien, si andas preguntando como se hace esto, es que ya has visto las webs, que tienen sus errorers 404 personalizados, como aqui lo tenemos, en elhacker.net  (puedes entrar a www.elhacker.net/cuántico.htm , y verás que te da un error 404, q ha hecho el brujo).

Empecemos....



Lo primero que tenemos que hacer, es agregar la siguiente linea al .htaccess

Código:
--
ErrorDocument 404 /path/mi404.php
--

pero si queremos mas errores, algo tan sencillo como:

Código:
--
ErrorDocument 505 /path/mi505.php
--
por poner un ejemplo...

Bueno, luego que hallamos configurado...
procedemos a crear nuestro script...

Código:
--
<html>
<head>
<title>Documento no encontrado</title>
</head>
<body>
El documento: <b><?=$_SERVER['REQUEST_URI']; ></b> URL no encontrada<br>
Regresar o Morir

</body>
</html>

--

Recuerda, hacer la pagina mayor a 512 bytes, ya que Internet Explorer, no muestra paginas de errores menores a este size....

$_SERVER['REQUEST_URI'] <--- Esta variable, lo que hace es mostrar el archivo que ha sido pedido por el explorador!

y es asi de Facil :)

Pero, como te darás cuenta tu, si los usuarios que reciben este error no te avisan del enlace roto......

pues podemos hacer mas extenso este script, y que este nos envie un mail, con el enlace que fue pedido y no encontrado o cualquier otro error.... lo hacemos con la función mail()...

Veamos:

Código:
--
ErrorDocument 505 /path/mi505.php
--
por poner un ejemplo...

Bueno, luego que hallamos configurado...
procedemos a crear nuestro script...

Código:
--
<html>
<head>
<title>Documento no encontrado</title>
</head>
<body>
El documento: <b><?=$_SERVER['REQUEST_URI']; ></b> URL no encontrada<br>
Regresar o Morir

<?php

$fecha = date('d/m/Y H:i:s');
$a = 'cuántico@qantic.net';
$asunto = 'error blah blah';
$mensaje = 'El archvio: ' . $_SERVER['REQUEST_URI'] . ' ha dado el error blah bla a la peticion en fecha ' . $fecha . ' por ' . $_SERVER['HTTP_REFERER'];

mail($a, $asunto, $mensaje);
?>
</body>
</html>

--

Ya podés hacer tus propios Errores (valga la redundancia :P)

Cuantico:

- ¿Hacer sistema de avisar cumple años? ¿como?

neohex ha escrito:
/*

weno pues como tenia ganas de programar un ratito(5 minutos xdd) pues te e echo eso que kerias...basicamente, tu aora lo tienes que adaptar a tu gusto, con tu estilo, ect, etc, ect...

Son 5 archivos:
1- config.php
2- crear_tabla.php
3- insertar_fecha.php
4- fecha.php
5- borrar_tabla.php

config.php - Realiza la conexion con la DB.
Código:
--
<?php
$server = "localhost";
$user = "root";
$pass = "";
$db = "neohex";
$conec = @mysql_connect("$server", "$user", "$pass");
$dbconec = @mysql_select_db($db) or die (mysql_error());
?>
--

crear_tabla.php - Crea la tabla "fechas" en la DB
Código:
--
<?php
include("config.php");
if (isset($crear)){
$sql = "CREATE TABLE fechas (nombre varchar(20) not null,diames varchar(5) not null,ano varchar(4) not null)";
$resp = mysql_query("$sql", $conec) or die (mysql_error());
}else{
?>
<form method="post" action="<?php $PHP_SELF ?>">
<input type="submit" name="crear" value="Crear Tabla">
<?php
}
?>
--

insertar_fecha.php - Desde donde se insertan las fechas en la DB
Código:
--
<?php
include("config.php");
if (isset($insertar)){
$sql = "INSERT INTO fechas (nombre,diames,ano) VALUES ('$nombre','$diames','$ano')";
$resp = mysql_query("$sql", $conec) or die (mysql_error());
}else{
?>
<form method="post" action="<?php $PHP_SELF ?>">
Nombre:<input type="text" name="nombre"><br>
Dia/Mes:<input type="text" name="diames" value="<?php=date ("d/m"); ?>" size="5">Año:<input type="text" name="ano" value="<?php=date ("Y"); ?>" size="4"><br>
<input type="submit" name="insertar" value="Insertar">
<?
}
?>
--

fecha.php - Muestra a los usuarios que cumplen los años
Código:
--
<?php
include("config.php");
$sql = "SELECT * FROM fechas";
$resp = mysql_query("$sql", $conec) or die (mysql_error());
while($row = mysql_fetch_array($resp)){
$dia = date ("d/m");
$edad_ac = date ("Y");
$edad_an = "".$row['ano']."";
$fecha = "".$row['diames'];
$edad = $edad_ac - $edad_an;
if ($dia == $fecha){
echo "¡¡Felicidades: <b>".$row['nombre']."</b>!! hoy cumples $edad años.<br>";
}
}
?>
--

borrar_tabla.php - Cuando te canses de esto pues borrar todo el contenido..xdd
Código:
--
<?php
include("config.php");
if (isset($crear)){
$sql = "DROP TABLE fechas";
$resp = mysql_query("$sql", $conec) or die (mysql_error());
}else{
?>
<form method="post" action="<? $PHP_SELF ?>">
<input type="submit" name="crear" value="Borrar Tabla">
<?
}
?>
--

¿Como lo usas?
[1] - El unico archivo que tienes que modificar con tus datos es el config.php
[2] - Subes todos los archivos a tu servidor
[3] - Creas la tabla (crear_tabla.php)
[4] - Ya cualkier usuario puede insertar su nombre y fecha de nacimiento...

*/

Cuantico:

- Quiero tener mis textos bien encuadrados, como agrego un salto de linea cada 80 caracteres? (por citar un ejemplo


Bien fácil mi querido watson, si has visto la opcion de wordwrap que tiene tu notepad, esa tambien podés usarla en php, de la siguiente manera:

Código:
--
<?php
$noticia = "textoooooooooooooooooooooooo";
$car = "80";

function br($noticia, $car) {
      if(strlen($noticia) > $car) {  // verifica si el texto tiene mas de 80 caracteres

        $noticia = wordwrap($noticia,$car,"<br>",1);  } // inserta el salto a los 80 car...

        else $noticia=$noticia; // si no es mas largo de 80 caracteres, lo deja igual

        return $noticia;      
} ?>
--


Cuantico:

-Quiero que mi web, cargue imagenes aleatoriamente!

Código:
--
<?php

$max = 2; // Cantidad de imagenes
srand((double)microtime()*1000000);
$numero = rand(0,"$max");     // busca un numero aleatorio, entre 0 y el $max incluyendolos

$imagen0 = "imagen0.jpg"; // nombre de imagenes, con todo y ruta
$imagen1 = "imagen1.jpg";
$imagen2 = "imagen2.gif";

?>


<img src="
<?php if ($numero== "0")
{
echo ("$imagen0");
}

if ($numero== "1")
{
echo ("$imagen1");
}

if ($numero== "2")
{
echo ("$imagen2");
}?>">


--


si quieres agregar una imagen, incrementas el $max + 1
o cantidad de imagenes que quieras agregar

y luego, agregas
Código:
--
$imagen3 = "imagen3.jpg";
$imagen4 = "imagen4.jpg";
--
etc
Siempre antes del primer if


y luego, siempre de de la ultima variable de la ruta de imagen, agregas esto, para que pueda salir tus nuevas imagenes...


Código:
--
if ($numero== "3")
{
echo ("$imagen3");
}
if ($numero== "4")
{
echo ("$imagen4");
}
--

y listo!

Páginas: << < (2/6) > >>