Foros del Web » Programando para Internet » PHP »

Error tonto de codigo al insertar en MySQL

Estas en el tema de Error tonto de codigo al insertar en MySQL en el foro de PHP en Foros del Web. Hola a todos: Tengo un problema que supongo que será una tontería, el codigo es el siguiente: Código PHP:         $sql  =  "UPDATE configuracion SET " ;          $resultado  ...
  #1 (permalink)  
Antiguo 08/10/2007, 07:06
 
Fecha de Ingreso: abril-2003
Mensajes: 363
Antigüedad: 16 años, 7 meses
Puntos: 3
Error tonto de codigo al insertar en MySQL

Hola a todos:

Tengo un problema que supongo que será una tontería, el codigo es el siguiente:
Código PHP:
        $sql "UPDATE configuracion SET ";
        
$resultado mysql_query("SELECT * FROM configuracion"$conexion);
        while(
$fila mysql_fetch_array($resultado)){
            
//Concatenamos los resultados
            
$sql .= "$fila[propiedad] = '$_POST[$fila[propiedad]]', ";
        }
        
        
$consulta mysql_query($sql$conexion) or die("Ha ocurrido un error de MySQL."); 
El caso es que cuando declaro las variables $sql, como en el ejemplo el explorador se queda en blanco, si quito esas dos líneas de la variable $sql si que se muestra por pantalla. ¿Como lo puedo seleccionar?

Muchas Gracias
  #2 (permalink)  
Antiguo 08/10/2007, 09:41
Avatar de xempro  
Fecha de Ingreso: marzo-2007
Ubicación: Chile
Mensajes: 222
Antigüedad: 12 años, 8 meses
Puntos: 6
Re: Error tonto de codigo al insertar en MySQL

El problema se te presenta debido a que tienes esa coma (,) al final del valor que concatenas en el while, si imprimes la sentencia (echo $sql;), te podras dar cuenta que esta siempre termina con coma, para solucionar este problema puedes hacer lo siguiente.

Código PHP:
        $sql "UPDATE configuracion SET "
        
$resultado mysql_query("SELECT * FROM configuracion"$conexion);
        
$total mysql_num_rows($resultado); // obtenemos la cantidad de registros.
        
$i=0;
        while(
$fila mysql_fetch_array($resultado)){ 
            
$sql .= "$fila[propiedad] = '$_POST[$fila[propiedad]]'"
            if(
$total!=$i){ 
                
$sql .= ", ";
            }
            
$i++;
        } 
         
        
$consulta mysql_query($sql$conexion) or die("Ha ocurrido un error de MySQL."); 
Esto hace que cuando la cantidad sea igual al contador no agregue la coma (ESO DEBIESE PASAR AL RESCATAR EL ULTIMO REGISTRO).


Si esto no te resulta debes ajustar la solucion a tus requerimientos, debido a que mas de alguna variable se me puede estar escapando ya que desconozco el funcionamiento completo de tu script y la esctructura de tus tablas).
  #3 (permalink)  
Antiguo 08/10/2007, 11:29
 
Fecha de Ingreso: abril-2003
Mensajes: 363
Antigüedad: 16 años, 7 meses
Puntos: 3
Re: Error tonto de codigo al insertar en MySQL

xempro gracias por tu respuesta. he puesto el codigo que me has pasado pero la página también sale en blanco, he comprobado y es por la línea de codigo:
Código PHP:
$sql .= "$fila[propiedad] = '$_POST[$fila[propiedad]]'"
, ya que la he comentado y la página no ha salido en blanco.

el código completo es el siguiente:
Código PHP:
    //Si no hay Accion
    
if (!isset($_GET['accion'])){
        echo 
"<p>Modifique los datos de configuración y pinche &quot;<strong>Guardar</strong>&quot;:</p>
        <form method='post' action='$_SERVER[PHP_SELF]?accion=guardar'>"
;
        
        
$resultado mysql_query("SELECT * FROM configuracion"$conexion);
        while(
$fila mysql_fetch_array($resultado)){
            echo 
"<div>
          <label><strong>$fila[propiedad]</strong>: </label>
          <input type='text' name='$fila[propiedad]' value='$fila[valor]' />
        </div>"
;
        }

        echo
"<div class='enviar'>
            <input type='submit' name='guardar' id='guardar' value='Guardar...' /> 
        </div>
        </form>"
;

    
//Si la Accion es Guardar
    
}elseif($_GET['accion']==guardar){
        
        
$sql "UPDATE configuracion SET ";  
        
$resultado mysql_query("SELECT * FROM configuracion"$conexion); 
        
$total mysql_num_rows($resultado); // obtenemos la cantidad de registros. 
        
$i=0
        while(
$fila mysql_fetch_array($resultado)){  
            
$sql .= "$fila[propiedad] = '$_POST[$fila[propiedad]]'";  
            if(
$total!=$i){  
                
$sql .= ", "
            } 
            
$i++; 
        }  
          
        
$consulta mysql_query($sql$conexion) or die("Ha ocurrido un error de MySQL.");  

        if(
$consulta){
            echo 
"<p>La configuración ha sido <strong>modificada correctamente.</strong></p>";
        }else{
            echo 
"<p><strong>Error al modificar la configuración!!</strong></p>";
        }
    } 
su función es mostrar campo por campo los datos de una table en un formulario y luego poder actualizarlos.
  #4 (permalink)  
Antiguo 08/10/2007, 15:06
 
Fecha de Ingreso: abril-2003
Mensajes: 363
Antigüedad: 16 años, 7 meses
Puntos: 3
Re: Error tonto de codigo al insertar en MySQL

Nose si se me ha entendido antes, quería decir que la página queda en blanco incluso cuando se ejecuta la primera parte del código, no deja ni mostrar el formulario.

Muchas Gracias
  #5 (permalink)  
Antiguo 09/10/2007, 10:56
 
Fecha de Ingreso: abril-2003
Mensajes: 363
Antigüedad: 16 años, 7 meses
Puntos: 3
Re: Error tonto de codigo al insertar en MySQL

¿Alguno me puede ayudar?
  #6 (permalink)  
Antiguo 09/10/2007, 11:00
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.990
Antigüedad: 14 años, 10 meses
Puntos: 80
Re: Error tonto de codigo al insertar en MySQL

Testea poniendo esto en la primera linea:

Código PHP:
error_reporting(E_ALL^E_NOTICE); 
Esta linea se usa para encontrar errores que el browser no conoce y que php no envia a la pagina por defecto.

Revisa con esta linea y si sale algo ponlo aca.

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #7 (permalink)  
Antiguo 10/10/2007, 04:20
 
Fecha de Ingreso: abril-2003
Mensajes: 363
Antigüedad: 16 años, 7 meses
Puntos: 3
Re: Error tonto de codigo al insertar en MySQL

He puesto ese código pero la cosa sigue igual, no me muestra nada por pantalla.

Código PHP:
echo error_reporting(E_ALL^E_NOTICE);

//Si no hay Accion 
    
if (!isset($_GET['accion'])){ 
        echo 
"<p>Modifique los datos de configuración y pinche &quot;<strong>Guardar</strong>&quot;:</p> 
        <form method='post' action='$_SERVER[PHP_SELF]?accion=guardar'>"

         
        
$resultado mysql_query("SELECT * FROM configuracion"$conexion); 
        while(
$fila mysql_fetch_array($resultado)){ 
            echo 
"<div> 
          <label><strong>$fila[propiedad]</strong>: </label> 
          <input type='text' name='$fila[propiedad]' value='$fila[valor]' /> 
        </div>"

        } 

        echo
"<div class='enviar'> 
            <input type='submit' name='guardar' id='guardar' value='Guardar...' />  
        </div> 
        </form>"


    
//Si la Accion es Guardar 
    
}elseif($_GET['accion']==guardar){ 
         
        
$sql "UPDATE configuracion SET ";   
        
$resultado mysql_query("SELECT * FROM configuracion"$conexion);  
        
$total mysql_num_rows($resultado); // obtenemos la cantidad de registros.  
        
$i=0;  
        while(
$fila mysql_fetch_array($resultado)){   
            
$sql .= "$fila[propiedad] = '$_POST[$fila[propiedad]]'";   
            if(
$total!=$i){   
                
$sql .= ", ";  
            }  
            
$i++;  
        }   
           
        
$consulta mysql_query($sql$conexion) or die("Ha ocurrido un error de MySQL.");   

        if(
$consulta){ 
            echo 
"<p>La configuración ha sido <strong>modificada correctamente.</strong></p>"
        }else{ 
            echo 
"<p><strong>Error al modificar la configuración!!</strong></p>"
        } 
    } 
Lo he puesto con echo y sin él. ¿Cual puede ser el error?

Muchas Gracias
  #8 (permalink)  
Antiguo 10/10/2007, 05:59
 
Fecha de Ingreso: abril-2003
Mensajes: 363
Antigüedad: 16 años, 7 meses
Puntos: 3
Re: Error tonto de codigo al insertar en MySQL

He comprobado el log de errores del servidor y me pone lo siguiente:

Código HTML:
PHP Parse error: parse error, unexpected '[', expecting ']' in /var/www/vhosts/pruebas.com/httpdocs/admin/configuracion-general.php on line 91, referer: http://www.pruebas.com/admin/principal.php?
la linea 91 coincide con la línea:
Código PHP:
$sql .= ", "
he comentado esa linea y me da error en la línea:
Código PHP:
$sql .= "$fila[propiedad] = '$_POST[$fila[propiedad]]'"
¿a que se refiere el error?
  #9 (permalink)  
Antiguo 10/10/2007, 06:17
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 15 años, 1 mes
Puntos: 48
Re: Error tonto de codigo al insertar en MySQL

RTFM http://www.php.net/manual/en/language.types.string.php
  #10 (permalink)  
Antiguo 10/10/2007, 09:37
 
Fecha de Ingreso: abril-2003
Mensajes: 363
Antigüedad: 16 años, 7 meses
Puntos: 3
Re: Error tonto de codigo al insertar en MySQL

Gracias DarkJ, ya he RTFM.

Creo entender según el enlace que me has pasado que te refieres a:

Código PHP:
$sql .= $fila[propiedad] . "= '" $_POST[$fila[propiedad]] . "'"
Con esto he conseguido que funcione.

¿Estaría correcto el codigo?

Gracias
  #11 (permalink)  
Antiguo 10/10/2007, 17:29
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 15 años, 1 mes
Puntos: 48
Re: Error tonto de codigo al insertar en MySQL

Casi. $fila['propiedad'] en los 2 sitios. Sin comillas estarias haciendo referencia a una constante de nombre propiedad. PHP al no encontrarla devuelve el nombre como una cadena y por eso funciona. Pero si estaria definida, devolveria el contenido de la constante.
  #12 (permalink)  
Antiguo 11/10/2007, 03:21
 
Fecha de Ingreso: abril-2003
Mensajes: 363
Antigüedad: 16 años, 7 meses
Puntos: 3
Re: Error tonto de codigo al insertar en MySQL

Ok, muchas gracias
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 00:06.