Foros del Web » Programando para Internet » PHP »

un ayudita para guardar datos en mysql

Estas en el tema de un ayudita para guardar datos en mysql en el foro de PHP en Foros del Web. hola chicos, ya he avanzado en lo que voy (para los que no lo hayan leido o no recuerdan, quiero guardar varios checkbox en una ...
  #1 (permalink)  
Antiguo 03/08/2012, 13:33
 
Fecha de Ingreso: junio-2012
Ubicación: En Chile :D
Mensajes: 44
Antigüedad: 11 años, 10 meses
Puntos: 0
un ayudita para guardar datos en mysql

hola chicos, ya he avanzado en lo que voy (para los que no lo hayan leido o no recuerdan, quiero guardar varios checkbox en una base de datos)... ahora tengo dudas de como guardar todo lo que llega de la primera pagina

esta es la pagina que genera la tabla con loc checkbox

Código PHP:
<?php require_once('Connections/formulario.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  if (
PHP_VERSION 6) {
    
$theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  
$theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}
}

mysql_select_db($database_formulario$formulario);
$query_Recordset1 "SELECT * FROM falla_calefon ORDER BY falla ASC";
$Recordset1 mysql_query($query_Recordset1$formulario) or die(mysql_error());
$row_Recordset1 mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 mysql_num_rows($Recordset1);mysql_select_db($database_formulario$formulario);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin título</title>
</head>

<body>

<form action="prueba3.php" method="POST">
<?
if (!$_POST){
?>
    <table border="0">
      <tr>
        <td>&nbsp;</td>
        <td>id</td>
      </tr>
      <?php do { ?>
        <tr>
          <td><input type="checkbox" name="obss[]" id="obss[]" value="<?php echo $row_Recordset1['falla']; ?>"  /></td>
          <td><?php echo $row_Recordset1['falla']; ?></td>
        </tr>
        <?php } while ($row_Recordset1 mysql_fetch_assoc($Recordset1)); ?>
    </table>
<br>
    <input type="submit" value="Enviar datos!" >
    <?php ?>
</form>


</body>
</html>
<?php
mysql_free_result
($Recordset1);
?>
y esta es la pagina que recibe los datos y los guarda:

Código PHP:
<?php require_once('Connections/formulario.php'); ?>
<?php 
    $OBS
=$_POST["obss"];
    
//$n=$_POST["n"];
?>

<?php
    
for ($i=0;$i<count($OBS);$i++)
       {
       
?>    
    
<?php
$observa
=$OBS[$i]." "; }
$sql "UPDATE falla_cocina SET opcion=$observa";
$insertar=mysql_query($sql) or die(mysql_error());
?>
donde esta la falla???
  #2 (permalink)  
Antiguo 03/08/2012, 14:37
Bultack
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: un ayudita para guardar datos en mysql

Bueno, yo no conozco tu proyecto pero viendo los códigos de los dos archivos puede sacarse.

Tu el value que le das a los checkbox es este
Código:
value="<?php echo $row_Recordset1['falla']
Este valor que tipo es? Varchar, int, etcétera...

Si es un Varchar el fallo lo tienes en el UPDATE porque lo tienes de esta forma
Código:
$sql = "UPDATE falla_cocina SET opcion=$observa";
Deberías agregarle las comillas simples a la variable $observa.
  #3 (permalink)  
Antiguo 03/08/2012, 14:55
 
Fecha de Ingreso: junio-2012
Ubicación: En Chile :D
Mensajes: 44
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: un ayudita para guardar datos en mysql

Cita:
Iniciado por Bultack Ver Mensaje
Bueno, yo no conozco tu proyecto pero viendo los códigos de los dos archivos puede sacarse.

Tu el value que le das a los checkbox es este
Código:
value="<?php echo $row_Recordset1['falla']
Este valor que tipo es? Varchar, int, etcétera...

Si es un Varchar el fallo lo tienes en el UPDATE porque lo tienes de esta forma
Código:
$sql = "UPDATE falla_cocina SET opcion=$observa";
Deberías agregarle las comillas simples a la variable $observa.
Hola, muchas gracias por tu respuesta, y si, era eso

Mi problema ahora es que solo me guarda un valor de $observa, no todos los seleccionados...
  #4 (permalink)  
Antiguo 03/08/2012, 15:18
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 633
Antigüedad: 18 años, 2 meses
Puntos: 53
Respuesta: un ayudita para guardar datos en mysql

es por que no concatenas los valores solo los vas sustituyendo
Cita:
for ($i=0;$i<count($OBS);$i++)
{
$observa=$OBS[$i]." "; //<<<<<<sustituyes
}
usa esto
Cita:
$observa.=$OBS[$i]." "; //<<<<<<concatenas usando ( .= )
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”
  #5 (permalink)  
Antiguo 03/08/2012, 16:19
 
Fecha de Ingreso: junio-2012
Ubicación: En Chile :D
Mensajes: 44
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: un ayudita para guardar datos en mysql



Funciona!!!!!

Muchas gracias Lindo

Lo unico si, es que si bien me guarda lo que necesito, me entrega este Notice...

Notice: Undefined variable: observa in C:\xampp\htdocs\prueba3.php on line 10

que es efectivamente la linea donde puse el .=
  #6 (permalink)  
Antiguo 04/08/2012, 02:12
Bultack
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: un ayudita para guardar datos en mysql

El problema yo lo estoy viendo aquí:
Código:
<?php require_once('Connections/formulario.php'); ?>
<?php
    $OBS=$_POST["obss"]; 
    //$n=$_POST["n"]; 
?>
<?php
    for ($i=0;$i<count($OBS);$i++) 
       { 
        
?>     
     
<?php 
$observa=$OBS[$i]." "; } 
$sql = "UPDATE falla_cocina SET opcion=$observa"; 
$insertar=mysql_query($sql) or die(mysql_error()); 
?>
Primero una pregunta, este es el único código que tienes en el archivo o hay más código? Te lo pregunto más que nada porque me extraña ver en un código que es solo PHP, abrir y cerrar tantas veces el código PHP.

Con solo ver el código PHP yo lo dejaba así
Código:
<?php require_once('Connections/formulario.php'); 

    $OBS=$_POST["obss"]; 
    //$n=$_POST["n"]; 


    for ($i=0;$i<count($OBS);$i++) 
       {
             $observa=$OBS[$i]." "; } 
             $sql = "UPDATE falla_cocina SET opcion=$observa"; 
             $insertar=mysql_query($sql) or die(mysql_error()); 
?>
Ahora, tu fallo está aquí. Dentro del bucle FOR tu solo tienes esto:
Código:
    for ($i=0;$i<count($OBS);$i++) 
       {
             $observa=$OBS[$i]." "; }
Esto lo que hace es ir almacenando en $observa cada valor que hay en el array de $OBS. Cuando lo haya hecho saldrá del bucle y ejecutará las consultar SQL.

Lo que deberías hacer es incluir dentro del bucle FOR la consulta SQL y la función SQL para que así te haga el UPDATE durante todo el bucle y para cada valor que se almacene en $observa.


EDITO: Un consejo que te doy y que creo que te ayudará bastante. Cuando crees una función, uses un condicional, bucle y se incluyan las llaves '{}' es mejor colocarlo de esta forma
Código:
if(condicion) {
     Esto es una forma fácil y cómoda para poder encontrar los posibles fallos y saber que es lo que hay exactamente entre las llaves '{}'
} //Colocar la llave de cierre a la altura en la que empieza la función, condición, bucle...

Última edición por Bultack; 04/08/2012 a las 02:17
  #7 (permalink)  
Antiguo 04/08/2012, 11:56
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: un ayudita para guardar datos en mysql

Cita:
Iniciado por marce_vampira Ver Mensaje


Funciona!!!!!

Muchas gracias Lindo

Lo unico si, es que si bien me guarda lo que necesito, me entrega este Notice...

Notice: Undefined variable: observa in C:\xampp\htdocs\prueba3.php on line 10

que es efectivamente la linea donde puse el .=
Demasiado código para lo que haces, en fin, el error es que antes de concatenar los valores en el for primero debes iniciar la variable:

Código PHP:
Ver original
  1. <?php require_once('Connections/formulario.php');
  2.  
  3.     $OBS=$_POST["obss"];
  4.     //$n=$_POST["n"];
  5. $observa = '';
  6.     for ($i=0;$i<count($OBS);$i++)
  7.        {
  8.        $observa.=$OBS[$i]." ";
  9.        }
  10.  
  11. $sql = "UPDATE falla_cocina SET opcion=$observa";
  12. $insertar=mysql_query($sql) or die(mysql_error());
  13. ?>

Ahora, un código mas limpio y ordenado:
Código PHP:
Ver original
  1. <?php
  2. require_once('Connections/formulario.php');
  3.  
  4. //si no entiendes lo que sigue es un IF pero ABREVIADO
  5. //lo que significa es que pregunta si $_POST['obss'] es un array
  6. //si lo es une todos los items en una sola variable separados por un espacio, si no
  7. //es array, guarda el valor de $_POST['obss'] directamente en la variable
  8. $observa = is_array($_POST['obss']) ? implode(' ',$_POST['obss']) : $_POST['obss'];
  9. $sql = "UPDATE falla_cocina SET opcion='$observa'";
  10. $insertar=mysql_query($sql) or die(mysql_error());
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #8 (permalink)  
Antiguo 06/08/2012, 08:09
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 633
Antigüedad: 18 años, 2 meses
Puntos: 53
Respuesta: un ayudita para guardar datos en mysql

Cita:
Iniciado por marce_vampira Ver Mensaje


Funciona!!!!!

Muchas gracias Lindo

Lo unico si, es que si bien me guarda lo que necesito, me entrega este Notice...

Notice: Undefined variable: observa in C:\xampp\htdocs\prueba3.php on line 10

que es efectivamente la linea donde puse el .=
sabia que no se tenian q inciar las variables en php pero prueba entonces declararla antes de tu ciclo
Cita:
$observa="";
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”

Etiquetas: formulario, html, mysql, sql, tabla
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 05:37.