Foros del Web » Programando para Internet » PHP »

Problema con query

Estas en el tema de Problema con query en el foro de PHP en Foros del Web. Hola a todos, llevo dos dias pegandome con una query para actualizar valores en la BD y no sé en que estoy fallando, creo que ...
  #1 (permalink)  
Antiguo 05/07/2003, 03:26
 
Fecha de Ingreso: febrero-2003
Mensajes: 9
Antigüedad: 21 años, 1 mes
Puntos: 0
Pregunta Problema con query

Hola a todos, llevo dos dias pegandome con una query para actualizar valores en la BD y no sé en que estoy fallando, creo que deberia dejarlo un rato, a ver si me aclaran algo
Tengo un listado de familias, y en una página tienen la opción para editar esa familia, que solo contiene los valores
id_fam y fam_name
Para eso utilizo un archivo edit_fam.php donde le paso los dos valores
http.../edit_fam.php?id_fam=15&fam_name=Alimento para animales
En esta pagina simplemente hago un formulario para pedir el nuevo valor de fam_name, el id no lo modifico
En el formulario asigno la variable $new_fam_name para el nuevo nombre de la familia, e "intento" introducirlo asi:
$sql = 'UPDATE familia SET fam_name = " .$new_fam_name. " WHERE id_fam = " . $id_fam . " ';

Pero en algun lao pierdo las variables anteriores pq me modifica la familia 0 en lugar de la 15 (por ejemplo) y como valor siempre le da . $new_fam_name. por lo que tampoco me pilla el valor que pido en el formulario
Alguna idea?
Gracias de antemano
  #2 (permalink)  
Antiguo 05/07/2003, 04:11
Avatar de Sexma  
Fecha de Ingreso: junio-2003
Ubicación: Valencia
Mensajes: 109
Antigüedad: 20 años, 10 meses
Puntos: 0
Hola:

Creo que lo puede pasar es que en el formulario solo le pasa la variable $new_fam_name a la pagina que tienes en el action y el $id_fam no se lo pasas por lo que lo entiende como un 0 y por eso te modifica ese registro. Prueba esto:

Formulario para modificar:
Código PHP:
<FORM action=modifica.php?id=$id_fam method=post >
  
Alimento: <INPUT name=new_fam_name>
<
INPUT name=Enviar type=submit value=Enviar 
</FORM
Ahora en el modifica.php tendras tanto el $id_fam como el $new_fam_name y ya podras hacer el update con los valores correctos.


Otra opcion es que en el formulario pongas un input hidden con el valor del id_fam, para que asi tambien se lo pases al modifica.php y por tanto ya no hace falta que se lo pases por el action.

Si no lo explicado bien dimelo, pero cero que debe ser ese tu problema.

Un Saludo.
__________________
CLUB ESPORTIU UNIVERSITAT DE VALENCIA

Visita la pagina de la UV-O




Última edición por Sexma; 05/07/2003 a las 04:15
  #3 (permalink)  
Antiguo 05/07/2003, 10:20
 
Fecha de Ingreso: febrero-2003
Mensajes: 9
Antigüedad: 21 años, 1 mes
Puntos: 0
Gracias, pero no es asi exactamente, ya he comprobado a situar las dos variables con un echo en la pagina y me muestra sus valores concretos.
Resumo, yo genero un listado de familias (select_familias.php)
y por cada row, añado las opciones : editar, borrar, ver subfamilias, añadir subfamilia
De ahi, es donde llamo a fam_edit con http://../edit_fam.php?id_fam=15&fam_name=Alimento para animales
Despues en edit_fam, genero un formulario simple si no se da el valor $new_fam_name, para cambiar el nombre de la familia
Los dos valores los tengo pero en el update es cuando no me los coje, el id y new_fam_name que pido en el form
Gracias :)
  #4 (permalink)  
Antiguo 05/07/2003, 10:25
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 2 meses
Puntos: 5
Te recomiendo accesar a tus variables a través de $_GET["id_fam"]

No como $id_fam, que puede no estar accesible si el servidor tiene register_globals=off (por default así es), en cuyo caso, a la hora de usar solo $id_fam, te entregará un valor =0, ya que la variable NO existe, y la crea cuando la llamas con un valor de cero o ""
__________________
Manoloweb
  #5 (permalink)  
Antiguo 05/07/2003, 10:55
 
Fecha de Ingreso: febrero-2003
Mensajes: 9
Antigüedad: 21 años, 1 mes
Puntos: 0
Gracias, pero ahora mismo estoy probando en local y tengo las globals on, se que me conviene ir adaptandome pero no es ese el problema
  #6 (permalink)  
Antiguo 05/07/2003, 12:45
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Mira como se ve tu codigo coloreado:
Código PHP:
$sql 'UPDATE familia SET fam_name = " .$new_fam_name. " WHERE id_fam = " . $id_fam . " '
Tu problema son las comillas. Fijate habres la cadena con ', lo que significa que debes cerrarla con lo mismo '. Pero tu intentas cerrarlo con " para las concatenaciones. En fin, un lio. Prueba:
Código PHP:
$sql "UPDATE familia SET fam_name = '$new_fam_name' WHERE id_fam = $id_fam "
Con las " puedes poner las variables sin concatenar. Tambien puedes poner la ' para el campo de texto. He supuesto que id_fam es numerico, por eso no le pongo '.

Saludos.

PD: Revisa http://www.php.net/manual/en/language.types.string.php para aclararte con las comillas.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #7 (permalink)  
Antiguo 05/07/2003, 13:23
 
Fecha de Ingreso: febrero-2003
Mensajes: 9
Antigüedad: 21 años, 1 mes
Puntos: 0
Gracias josemi, siempre me hago un lio con las comillas, pero me da que el error lo tengo con las variables, usando tu query obtengo un nuevo error 'unknown column $id_fam in where clause' por lo que veo que no llega bien a mysql
El codigo es este, no es muy largo, espero que no moleste:

Código PHP:
<?php
// Cómprobamos si el formulario nos ha enviado las variables
if (!isset($new_fam_name)) {

// si no las tenemos es que no han utilizado el formulario, así que lo pintamos
?>
<!-- El formulario recarga en la misma página  -->
<form name="formulario" method="post" action="<?php $PHP_SELF;?>">
  <table width="100%"  border="0" cellspacing="2" cellpadding="4"  summary="contiene un formulario para insertar citas en la página principal
">
<tr> 
      <td colspan="2"><strong>Administración de Familias</strong><br>
        Con esta herramienta podrá modificar las familias de productos.</td>
    </tr>
        <tr> 
      <td><p><strong>Familia:</strong><br>
          Por favor, inserte el nuevo nombre de la familia para:<br /><em> <?php echo $fam_name;?> de ID:<?php echo $id_fam;?></em></p></td>
      <td><div align="right">
          <input name="new_fam_name" type="text" id="new_fam_name" value="<?php echo $fam_name;?>" size="25">
        <input type="hidden" name="id_fam" value="$id_fam"><input type="hidden" name="id_fam" value="$id_fam">
        </div></td>
    </tr>
    <tr> 
      <td colspan="2"><div align="center"> 
          <input type="submit" name="Submit" value="Enviar">
          <input type="reset" name="reset" value="Cancelar">
                  </div></td>
    </tr>
  </table>
</form>
<?php
}else {
// conexión a la bd  

  
include ('connect.inc');
$sql "UPDATE familia SET fam_name = '$new_fam_name' WHERE id_fam = $id_fam ";


    
 if (@
mysql_query($sql)) { ?>
   <table width="100%"  border="0" cellspacing="2" cellpadding="4" summary="contiene un formulario para insertar citas en la página principal
">

<!-- a partir de aquí es lo que sale una vez que los datos se han añadido -->
  <tr> 
    <td width="100%"><strong>Familias</strong><br>
      Utilidad para añadir familias de productos</td>
  </tr>
  <tr> 
    <td ><div align="center">
        <p><strong>La familia ha sido modificada correctamente</strong></p>
    

        <p>¿Qué quieres hacer ahora?</p></div></td>
  </tr>

  <tr> 
    <td ><div align="center">

<a href="select_familias.php">Volver a familias</a><br />






</div></td>
  </tr>
</table>

<?PHP
 
} else { 
   echo(
"<p>Se ha producido un error al intentar modificar la familia: " 
        
mysql_error() . "</p>"); 
 } 
}
?>

</body>
</html>
  #8 (permalink)  
Antiguo 05/07/2003, 13:45
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Bien, fijate en esta linea:

<input type="hidden" name="id_fam" value="$id_fam"><input type="hidden" name="id_fam" value="$id_fam">

Aparte que estas repitiendo el campo, esto no esta dentro de ningun echo, asi que no estas pasando el valor de la variable $id_fam, estas pasando la cadena '$id_fam'. Pon:
Código PHP:
<input type="hidden" name="id_fam" value="<?php echo $id_fam?>">
Supongo que se te habra pasado, porque veo que lo tienes bien con los otros campos.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #9 (permalink)  
Antiguo 05/07/2003, 13:49
 
Fecha de Ingreso: febrero-2003
Mensajes: 9
Antigüedad: 21 años, 1 mes
Puntos: 0

jod.... y como puse yo la linea esa ahi
Gracias funciona perfecto ahora
  #10 (permalink)  
Antiguo 05/07/2003, 13:59
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
No fuiste tu, en ese momento estabas poseido por un espiritu.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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 18:01.