Foros del Web » Programando para Internet » PHP »

Ayuda a un novato

Estas en el tema de Ayuda a un novato en el foro de PHP en Foros del Web. Hola: Tengo un formulario que envia , entre otros datos, tres variables checkbox . El formulario lo recoge un programa que tras leer las variables ...
  #1 (permalink)  
Antiguo 17/03/2010, 13:02
 
Fecha de Ingreso: septiembre-2003
Mensajes: 180
Antigüedad: 20 años, 6 meses
Puntos: 1
Ayuda a un novato

Hola: Tengo un formulario que envia , entre otros datos, tres variables checkbox . El formulario lo recoge un programa que tras leer las variables busca en una base de datos coincidencias segun su valor pero cuando alguna no esn definida en el formulario, me da el consiguiente error de falta de definición. Podria validar el formulario con un java script pero no quisiera hacerlo asi ¿ como lo haria ?


Formulario:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>New Page 1</title>
</head>

<body>
<FORM ACTION="buscar.php">
Rojo&nbsp;&nbsp;
<input value="Si" type="checkbox" name="Rojo"><p>
Verde</td>
<input value="Si" type="checkbox" name="Verde"></p>
<p>Azul</td>&nbsp;&nbsp;&nbsp;
<input value="Si" type="checkbox" name="Azul"></p>
<p></td>
&nbsp;<input src="imagenes/continuar.gif" type="submit" name="accion"></td>
</p>
</body>

</html>



buscar.php

<?php
function conectar()
{
$base_de_datos = "base de datos";
$db_usuario = "usuario";
$db_password = "";

if (!($link = mysql_connect("localhost", $db_usuario, $db_password)))
{
echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db($base_de_datos, $link))
{
echo "Error seleccionando la base de datos.";
exit();
}
return $link;
}

$db = conectar();
$registros = 5;
$pagina = $_GET["pagina"];
if (!$pagina) {
$inicio = 0;
$pagina = 1;
}
else {
$inicio = ($pagina - 1) * $registros;
}

$Rojo=$_GET['Rojo'];
$Verde=$_GET['Verde'];
$Azul=$_GET['Azul'];

$resultados = mysql_query("SELECT id FROM tabla WHERE Rojo='$Rojo' and Azul='$Azul' and Verde='$Verde' ");
$total_registros = mysql_num_rows($resultados);
$resultados = mysql_query("SELECT * FROM tabla WHERE Rojo='$Rojo' and Azul='$Azul' and Verde='$Verde' LIMIT $inicio,$registros");
$total_paginas = ceil($total_registros / $registros);
while($articulo=mysql_fetch_array($resultados)) {

echo "<td><font size=1 face=verdana color=#696868>Rojo:<b> ".$articulo["Rojo"]."</td></tr>";
echo "<td><font size=1 face=verdana color=#696868>Azul:<b>".$articulo["Azul"]."<br></td>";
echo "<td><font size=1 face=verdana color=#696868>Verde:<b> ".$articulo["Verde"]."</td></tr>";


echo "<td><font size=1 face=verdana color=#696868><a href='ficha.php?id=".$articulo["id"]."'>ver mas></a></td></tr>";

echo "<td>//////////////////////////////////////////////////////</td>";
echo "<td>////////////////////</table></td></tr></table>";


}
if(($pagina - 1) > 0) {
echo "<a href='index.php?pagina=".($pagina-1)."'>< Anterior</a> ";
}
for ($i=1; $i<=$total_paginas; $i++){
if ($pagina == $i) {
echo "<b>".$pagina."</b> ";
} else {
echo "<a href='index.php?pagina=$i'>$i</a> ";
} }
if(($pagina + 1)<=$total_paginas) {
echo " <a href='index.php?pagina=".($pagina+1)."'>Siguiente ></a>";
}
?>
  #2 (permalink)  
Antiguo 17/03/2010, 13:08
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 5 meses
Puntos: 5
Respuesta: Ayuda a un novato

¿Consabido error de falta de definición?
Pues por lo menos a mí, si me posteas el error exacto me dará mejor idea para ayudarte o al menos intentarlo
salu2
  #3 (permalink)  
Antiguo 17/03/2010, 13:09
 
Fecha de Ingreso: febrero-2010
Mensajes: 818
Antigüedad: 14 años, 2 meses
Puntos: 55
Respuesta: Ayuda a un novato

algo asi ?
Código PHP:
if ($_GET['verde']!='' AND $_GET['rojo']!='' AND $_GET['azul']!=''){
consulta.
}
else 
mensaje de falta de datos
  #4 (permalink)  
Antiguo 17/03/2010, 13:13
 
Fecha de Ingreso: diciembre-2009
Mensajes: 33
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Ayuda a un novato

Lo que quieres es que se pueda elejir 1 o 2 o las 3 opciones y q aunque no elijas 1 de ellas igual realice la consulta???
  #5 (permalink)  
Antiguo 17/03/2010, 13:17
 
Fecha de Ingreso: marzo-2010
Ubicación: Lima, Perú
Mensajes: 136
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: Ayuda a un novato

1) Repregunta: ¿Cuando no especificas si se envia por method POST o GET, se sobre entiende que es por GET? sino, creo que ahi esta tu problema

2) luego, podrias verificar si estas seteadas las variables antes de lanzar la consulta.

3) De ahi, no mescles presentacion con logica.

SAludos
  #6 (permalink)  
Antiguo 17/03/2010, 14:37
 
Fecha de Ingreso: septiembre-2003
Mensajes: 180
Antigüedad: 20 años, 6 meses
Puntos: 1
Respuesta: Ayuda a un novato

Efectivamente, el error es de variable no definida, y eso es lo que quiero evitar, que no me de error al elegir un color y dejar las otras dos variables vacias, que busque en la base de datos la variable definida.
El envio es por el metodo GET.
  #7 (permalink)  
Antiguo 17/03/2010, 14:48
 
Fecha de Ingreso: marzo-2010
Ubicación: Lima, Perú
Mensajes: 136
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: Ayuda a un novato

Cita:
Iniciado por Campesino Ver Mensaje
Efectivamente, el error es de variable no definida, y eso es lo que quiero evitar, que no me de error al elegir un color y dejar las otras dos variables vacias, que busque en la base de datos la variable definida.
El envio es por el metodo GET.
Es decir aun eligiendo un color, busque en la base de datos ==> si es asi, usa SWITCH y ponle casos si las variables estan seteadas. Una seteada, dos seteadas, tres seteadas, etc

explicado buien?
  #8 (permalink)  
Antiguo 17/03/2010, 15:20
 
Fecha de Ingreso: diciembre-2009
Mensajes: 33
Antigüedad: 14 años, 3 meses
Puntos: 0
que tal si haces preguntas antes de hacer la consulta a la bd...

por ejemplo:

if($Rojo != "" && $Azul != "" && $Verde != ""){
$dw = "Rojo='$Rojo' and Azul='$Azul' and Verde='$Verde'";
}else{

if($Rojo != "" && $Azul != "" && $Verde == ""){$dw = "Rojo='$Rojo' and Azul='$Azul'";
}else{

if($Rojo != "" && $Azul == "" && $Verde == ""){$dw = "Rojo='$Rojo'";
}else{

if($Rojo != "" && $Azul == "" && $Verde != ""){$dw = "Rojo='$Rojo and Verde='$Verde''";
}else{

if($Rojo == "" && $Azul != "" && $Verde != ""){$dw = "Azul='$Azul and Verde='$Verde''";
}
}
}
}
$dw = "Rojo='' and Azul='' and Verde=''";
}


La verdad, no se si estara bien.. pero es la idea...
es como usar un Switch

revisa bien las llaves por si omiti alguna xd

Saludos

ups omito algo importante..

tus consultas dejalas asi:

...
$resultados = mysql_query("SELECT id FROM tabla WHERE $dw ");
$total_registros = mysql_num_rows($resultados);
$resultados = mysql_query("SELECT * FROM tabla WHERE $dw LIMIT $inicio,$registros");
...

Última edición por GatorV; 17/03/2010 a las 15:28

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:14.