Foros del Web » Programando para Internet » PHP »

en que falla mi consulta?

Estas en el tema de en que falla mi consulta? en el foro de PHP en Foros del Web. Quiero actualizar grupo, disco, formato y localizacion mediante un formulario donde se le pasa el id. Esta consulta la uso para actualizar, está bien? $cons="UPDATE ...
  #1 (permalink)  
Antiguo 31/07/2002, 09:49
 
Fecha de Ingreso: junio-2002
Ubicación: España
Mensajes: 348
Antigüedad: 15 años, 6 meses
Puntos: 8
en que falla mi consulta?

Quiero actualizar grupo, disco, formato y localizacion mediante un formulario donde se le pasa el id.
Esta consulta la uso para actualizar, está bien?

$cons="UPDATE discos SET grupo=$grupo, disco=$disco, formato=$formato, localizacion=$localizacion WHERE id='$id'";
  #2 (permalink)  
Antiguo 31/07/2002, 09:55
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 15 años, 5 meses
Puntos: 0
Re: en que falla mi consulta?

prueba incluyendo comillas en las variables

$cons="UPDATE discos SET grupo='$grupo', disco='$disco', formato='$formato', localizacion='$localizacion' WHERE id='$id'";

y despues ejecutas con mysql_query

ATTE BHONOX
  #3 (permalink)  
Antiguo 31/07/2002, 09:56
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 15 años, 11 meses
Puntos: 17
Re: en que falla mi consulta?

$cons="UPDATE discos SET grupo=$grupo, disco=$disco, formato=$formato, localizacion=$localizacion WHERE id='$id'";

Esto estaría bien si, y sólo si, grupo, disco, formato y localización son campos numéricos o de fecha, e id es un campo numérico.
Si, por ejemplo, id fuera numérico y los otros fueran campos de texto, la consulta sería así:

$cons="UPDATE discos SET grupo='$grupo', disco='$disco', formato='$formato', localizacion='$localizacion' WHERE id=$id";


Joe Tawers,
<a href="http://www.ilimit.com/towers">http://www.ilimit.com/towers</a>
  #4 (permalink)  
Antiguo 31/07/2002, 10:08
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Re: en que falla mi consulta?

Cain .. no se si te entendí bien ...

Pero que tiene que ver el resto de campos que usas en un SELECT .. en un UPDATE .. o lo que sea .. cuando usas una condicion WHERE ..?

Lo otro .. si definimos una condicion WHERE campo=valor .. deberan ser mismo tipo para que se cumpla la condicion ...

De todas formas yo siempre he usado la estructura:
WHERE campo='$valor' .. y he comparado tanto alfanumericos como numericos y nunca me ha dado problemas? .. a que te refieres con lo que comentas? ...

Un saludo,
  #5 (permalink)  
Antiguo 31/07/2002, 10:21
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 15 años, 11 meses
Puntos: 17
Re: en que falla mi consulta?

Normalmente, los nombres de campo son cadenas de texto, por eso, cuando queremos especificar una cadena de texto como valor (opuesto a nombre de campo), la entrecomillamos.

UPDATE tabla SET campo='valor'

Pero si el valor es numérico o una fecha, no es necesario entrecomillar nada, porque se supone que el nombre de un campo no es ni un número ni una fecha

UPDATE tabla SET edad=4,dia=2002-07-25

Lo mismos para SELECT, INSERT, REPLACE, etc. etc. También dentro de WHERE, VALUES,...

Al menos así es como lo hago yo.

Joe Tawers,
<a href="http://www.ilimit.com/towers">http://www.ilimit.com/towers</a>
  #6 (permalink)  
Antiguo 31/07/2002, 10:24
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 15 años, 5 meses
Puntos: 0
Re: en que falla mi consulta?

lo que es yo siempre uso tambien los campos de esta manera

variable = '$variable';

y no tengo problemas que este definido como numerico o caracter o como sea
ATTE BHONOX
  #7 (permalink)  
Antiguo 31/07/2002, 10:50
 
Fecha de Ingreso: diciembre-2001
Mensajes: 451
Antigüedad: 16 años
Puntos: 0
Re: en que falla mi consulta?

creo que tiens una confusion de conceptos, pero tecnicamente esta bien que al ser fechas o numero no se asigne con el valor entre comillas, aunque en la practica y por lo general he visto muchas personas que por norma usan las comillas para asignar cualquier tipo de valor para evitar errores al hacer la consulta y tambien por estandarizar el formato de las consultas sql.

Salud!
  #8 (permalink)  
Antiguo 31/07/2002, 16:39
 
Fecha de Ingreso: junio-2002
Ubicación: España
Mensajes: 348
Antigüedad: 15 años, 6 meses
Puntos: 8
Re: en que falla mi consulta?

Teneis razon chicos, los que son char no les pongo entre ' ' pero id que es int se lo pongo, aunque me sigue sin funcionar. os pongo el archivo por si es otro error:
&lt;?php
if(!isset($grupo))
{
?&gt;

&lt;form action=&quot; &quot;&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Grupo:&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;input type=&quot;text&quot; name=&quot;grupo&quot;&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Disco:&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;input type=&quot;text&quot; name=&quot;disco&quot;&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Formato:&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;input type=&quot;text&quot; name=&quot;formato&quot;&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Localizaci&amp;oacute;n:&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;input type=&quot;text&quot; name=&quot;localizacion&quot;&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;input type=&quot;submit&quot; value=&quot;Actualizar&quot;&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/form&gt;

&lt;?php
}
else
{
$conex=mysql_connect(&quot;localhost&quot;, &quot;&quot;, &quot;&quot;)
or die(&quot;No se ha conectado&quot;);

mysql_select_db(&quot;musica&quot;, $conex);

$cons2=&quot;UPDATE discos SET grupo='$grupo', disco='$disco', formato='$formato', localizacion='$localizacion' WHERE id=$id&quot;;
mysql_query($cons2, $conex);

$cons3=&quot;SELECT * FROM discos WHERE grupo='$grupo'&quot;;
$resultado2=mysql_query($cons3, $conex);

$num_campos = mysql_num_fields($resultado2);

while ($fila=mysql_fetch_row($resultado2))
{
for ($i=0; $i&lt;$num_campos; $i++)
echo $fila[$i], &quot; &quot;;
echo &quot;&lt;br&gt;\n&quot;;
}
mysql_free_result($resultado2);
}
?&gt;
Lo que quiero conseguier es actualizar todos los campos con un formulario y mostrar el resultado. ID se lo paso desde otro formulario en otra página.
  #9 (permalink)  
Antiguo 03/08/2002, 06:54
 
Fecha de Ingreso: junio-2002
Ubicación: España
Mensajes: 348
Antigüedad: 15 años, 6 meses
Puntos: 8
Re: en que falla mi consulta?

Por favor!! en que me falla?
  #10 (permalink)  
Antiguo 03/08/2002, 16:42
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Re: en que falla mi consulta?

Hola,

Puedes intentar que el propio PHP te de mas pistas. Prueba a usar la funcion mysql_error(), que te dice que error se ha producido. Por ejemplo:
Código:
mysql_query($cons2, $conex) or die(&quot;Error en la consulta: $cons2; MySQL dice que el fallo es &quot;.mysql_error());
Con esto veras tanto el error de MySQL y la consulta. Puede que descubras que algun campo esta vacio, o no tiene un valor valido, o que te has equivocado al escribir.

Una cosa que no te he entendido bien es lo que haces con el id. Por lo que creo, en una pagina, digamos pagina1.php, le das un valor y llamas a esta pagina con el formulario y el codigo. Te muestra el formulario y al dar a enviar se vuelve a cargar y ejecuta el codigo.
No estoy seguro, pero si es asi como lo haces puede que se pierda el id, porque la pagina con el formulario solo recibe el valor cuando te muestra el formulario, no la segunda vez cuando se ejecutan las consultas y por tanto $id no tiene valor. Te digo que no estoy seguro de esto porque como dejas el campo action del form vacio, no se como llama a la pagina cuando le das al submit. Si tengo razon, lo puedes solucionar o bien poniendo en el formulario un campo oculto que se llame id y tenga como valor el id que le has pasado; o ponerle en el action el nombre de la pagina seguido por ?id= y el valor (action=&quot;pag.php?id=&lt;?php echo $id; ?&gt;).

Recuerda, siempre es mejor que PHP o MySQL te digan cual es el error exacto. Aunque no lo sepas solucionar, puedes poner el mensaje que te da en estos foros y a nosotros nos sera mas facil ayudarte. Espero que te ayude.


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 02:52.