CheckBox, botones y funciones

Aver ke te parece lo ke kiero hacer, ¿te pido paciencia sale?
! Ra Parte
Tengo varios checkbox , ste es mi form
<form name="form1" method="post" action="">
<label>
<input id="desc_parte" />
Descripion de Parte</label>
<label>
<input id="desc_parte" />
Motivo</label>
<p>
<label>
<input id="no_oper" />
No. De Operacion</label>
<label>
<input id="Fecha" />
Fecha</label>
</p>
<p>
<label>
<input name="desc_oper" />
Descrip. Operacion</label>
<label>
<input id="hora" />
Hora</label>
</p>
<p>
<label>
<input name="costo" />
Costo</label>
<label>
<input name="costo_tot" />
costo Total</label>
</p>
<p>
<label>
<input name="lado" />
Lado</label>
<label>
<input name="tran" />
Transaccion</label>
</p>
<p>
<label>
<input name="no_nota" />
No_Nota
<input type="checkbox" />
Turno</label>
</p>
<p>
<input name="Si" value="Aceptar" />
</p>
</form>
Dependiendo de lo que yo escoja es lo que me debe salir, es decir mando llamar de una tabla solo lo que este checkeado

1 Respuesta

Respuesta
1
Ankrita Bueno, lo primero:
- Cuando estés probando algo no lo hagas con 20 elementos, prueba con tres, tienes fallos de código tontos y te puedes volver loco para encontrarlos con tantas opciones. Crea tres checkbox, la consulta para 3 opciones y tres botones y comprueba si funciona, pero no montes ese follón, es muy fácil que metas la pata en un punto y coma, el resto esté bien, y te vuelvas loco a buscar fallos en las funciones. O sea, código siempre sencillo de prueba, comprobar que funcionan las funciones y las variables tal cual lo planteas, y después ya vas añadiendo las demás.
- No sé muy bien lo que me pides, me parece entender que quieres hacer un formulario donde se seleccionen los campos de una tabla que quieren ser mostrados por pantalla mediante checkboxes, solo que en ese formulario solo hay un checkbox, lo demás son campos de texto. Y que se cree una tabla en base a esa consulta que muestre los resultados. Pones un botón para ordenar los resultados, pero no sé de donde sacas cual es el orden que quieres, ya que haces una función query que busca y ordena por "no_parte". Ahí me he perdido del todo. Si me mandas solo el código para que yo saque la idea de lo que quieres hacer, y el código está mal, no sabré lo que quieres, es mejor que me lo expliques. Y al poner código como ejemplo, poner menos y que se parezca a lo que quieres hacer, yo lo abro y veo un montón de campos de texto y no checkboxes.
A parte de eso, varias cosas más:
Las variables que estas usando, "$desc_parte" por ejemplo, no existen, has de crearlas: $desc_parte=$_REQUEST[desc_parte]; y asignarles el valor que necesitas de los campos del formulario. Los campos del formulario en si mismos no son variables de php.
SESSION es una variable que se utiliza para pasar valores de una página a otra para que siempre permanezcan mientras no se cierre la sesión. Antes hay que abrirla, y no creo que sea lo que estás haciendo. Se usa generalmente para usuario y contraseña por ejemplo. Tú lo que quieres es crear una cadena para la consulta, esta cadena puede hacerse así:
$consulta = "";
if($desc_parte == "on" ){$consulta = $consulta. ", desc_parte";} 
if($motivo == "on" ){$consulta = $consulta.", motivo";}
No puedes usar en la funciones o las variables nombres reservados para funciones o variables de ese lenguaje, llama a la función "consulta", pero no "query".
Aprovecha las funciones y redúcelas a la mínima expresión, si se van a hacer varias consultas y ya hemos creado una variable "$consulta", se la pasaremos como parámetro a la función, y de paso le pasamos el orden en que debe presentarla con una variable "$orden" por ejemplo (como ves queda más limpio y es más sencillo detectar los errores):
function consultaBase($campos,$orden)

    $query = "select no_parte".$campos." from temp orderby $orden"; 
    $resultado=mysql_query($query, $link) or die (mysql_error()); 
 }
Y la llamas así: consultaBase($consulta,$orden); siempre dentro de <? ¿php?>, no puedes llamarla fuera de código php como has hecho tu en el "onclick"
Revisa con estos datos el código. Crea solo dos o tres campos para comprobar que funciona, o al menos que tu creas que debería de funcionar (si no funciona ya miraremos por qué), pero que al menos en pantalla salgan checkboxes, no campos de texto. Y explícame que es lo que quieres hacer, no sé si entendí bien lo del principio, pero lo del boton6 no tengo ni idea de para que lo quieres usar, sé que hace la consulta, pero no se por qué porque ya la habías hecho antes y guardado en "$query" (que como te dije, no uses ese nombre, llámalo $consulta, o $resultado o lo que quieras menos "query"). Y además siempre hace la misma consulta y ordenada de la misma manera.
Kike
P.D. Cierra esta pregunta y abre otra con el código nuevo que me pases, más cortito, si no será muy incómoda de seguir, creo que se va a alargar :-)
II Parte
asi programo los check box
if ($_REQUEST[Si]){
    if($desc_parte == "on" ){
        $_SESSION[desc_parte] = ", desc_parte";
    }
    }
    else
        $_SESSION[desc_parte] = "";
    if($motivo == "on" ){
        $_SESSION[motivo] = ", motivo";
    }
    else
        $_SESSION[motivo] = "";
    if($no_oper == "on" ){
        $_SESSION[no_oper] = ", no_oper";
    }
    else
        $_SESSION[no_oper] = "";
    if($Fecha == "on" ){
        $_SESSION[fecha] = ", fecha";
    }
    else
        $_SESSION[fecha] = "";
    if($desc_oper == "on" ){
        $_SESSION[desc_oper] = ", desc_oper";
         }
    else
        $_SESSION[desc_oper] = "";
    if($hora == "on" ){
        $_SESSION[hora] = ", hora";
         }
    else
    $_SESSION[hora] = "";
    if($costo == "on" ){
        $_SESSION[costo] = ", costo";
         }
    else
        $_SESSION[costo] = "";
    if($costo_total == "on" ){
        $_SESSION[costo_total] = ", costo_total";
        }
    else
        $_SESSION[costo_total] = "";
    if($lado == "on" ){
        $_SESSION[lado] = ", lado";
        }
        else
        $_SESSION[lado] = "";
    if($tran == "on" ){
        $_SESSION[tran] = ", transaccion";
    }
    else
        $_SESSION[tran] = "";
    if($turno == "on" ){
        $_SESSION[turno] = ", turno";
         }
    else
        $_SESSION[turno] = "";
    if($no_nota == "on" ){
        $_SESSION[no_nota] = ", no_nota";
         }
    else
        $_SESSION[no_nota] = "";
y esta es mi consulta,    
    $query = "select no_parte".$_SESSION[desc_parte].$_SESSION[motivo].$_SESSION[no_oper].$_SESSION[fecha].$_SESSION[desc_oper].$_SESSION[hora].$_SESSION[costo].$_SESSION[costo_total].$_SESSION[lado].$_SESSION[tran].$_SESSION[turno].$_SESSION[no_nota]." from temp ";
hasta aki, creo, no tener problema, el punto empieza aqui, porque dependiendo los campos que sean son los botones que kiero agegar
III Parte
Entonces, se me ocurrió hacer una función por cada campo probable en la tabla, por ejemplo:
function query(){
    $query = "select no_parte".$_SESSION[desc_parte].$_SESSION[motivo].$_SESSION[no_oper].$_SESSION[fecha].$_SESSION[desc_oper].$_SESSION[hora].$_SESSION[costo].$_SESSION[costo_total].$_SESSION[lado].$_SESSION[tran].$_SESSION[turno].$_SESSION[no_nota]." from temp orderby no_parte ";
    $resultado=mysql_query($query, $link) or die (mysql_error());
    }
No se mucho de funciones, pero otra manera no conozco
dos dudas dtengo de esta, una: que no se si esta bn hecha, otra: no se en que parte del código va(eso es lo de menos)
bueno
ahora hago la tabla
y en el primer renglon, tengo esto:
td><input type="submit" name="button6" id="button6" value="No_parte" onclick="query" /></td>
if($_SESSION[desc_parte] == ""){
  if($_SESSION[motivo] == ""){}
  }
  else
<td><input type="submit" name="button6" id="button6" value="No_parte" onclick="<?PHP ?>" /></td
esto es por decir, solo que en la parte de mas abajo, donde hago la tabla, ya me perdi, pues son varios y opcionales orderby, que kiero que se haga en una tabla
Espero tu valiosa ayuda
Como veraz, tengo la idea, solo que eso no basta, necesito saber usar la mayor cantidad de herramientas que me ofrece PHP
Gracias de antemano
Ok, tienes razón, me la complico mucho, pues debo empezar a probar con poquito y bn hecho y no querer hacer todo de una vez, ok
Probare con menos elementos, y continuare mi pregunta
Gracias por tu pacienciia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas