Foros del Web » Programando para Internet » PHP »

Problemas con update

Estas en el tema de Problemas con update en el foro de PHP en Foros del Web. Estoy haciendo una especie de directorio, los ficheros de entrada in y salida out para gestionar las visitas el fichero out funciona perfectamente: añade una ...
  #1 (permalink)  
Antiguo 01/09/2004, 07:43
Avatar de jonk  
Fecha de Ingreso: julio-2002
Ubicación: Barakaldo
Mensajes: 104
Antigüedad: 15 años, 4 meses
Puntos: 0
Exclamación Problemas con update

Estoy haciendo una especie de directorio, los ficheros de entrada in y salida out
para gestionar las visitas

el fichero out funciona perfectamente: añade una visita al registro y va a la web del registro

out.php

Código PHP:
<?
$host 
"xxx"
$user "xxx"
$pass "xxx"
$db "xxx"
$conecta mysql_connect($host,$user,$pass); mysql_select_db($db,$conecta); 
$query "select * from ibpremios where id='$id'"$resp mysql_query($query); 
$existe mysql_num_rows($resp); 
if (
$existe == 0) { echo "Esta web ya no existe en IBpremios"; exit(); } 
else { 
$contador mysql_fetch_array($resp); 
$contador[out]++; 
$query "update ibpremios set out='$contador[out]' where id='$id'"mysql_query($query); 

$query =( "select * from ibpremios where id='$id'"); 
$querymysql_db_query;
while(
$array mysql_fetch_array($query)) {
$web=$array['web'];
?>
<SCRIPT LANGUAGE="javascript"> 
location.href = "<?echo $web;?>"; 
</SCRIPT> 
<?
}
?>
in.php

Código PHP:
<?
$host 
"xxx"
$user "xxx"
$pass "xxx"
$db "xxx"
$conecta mysql_connect($host,$user,$pass); mysql_select_db($db,$conecta); 
$query "select * from ibpremios where id='$id'"$resp mysql_query($query); 
$existe mysql_num_rows($resp); 
if (
$existe == 0) { echo "Esta web ya no exite en IBpremios"; exit(); } 
else { 
$contador mysql_fetch_array($resp); 
$contador[in]++; 
$query "update ibpremios set in='$contador[in]' where id='$id'"mysql_query($query); 

@
mysql_free_result($resp); 
mysql_close($conecta); 
?>
<SCRIPT LANGUAGE="javascript"> 
location.href = "http://www.i-barakaldo.com/premios_ib/n"; 
</SCRIPT>
¿Sabeis porque no funciona el in.php?

para probar
http://www.i-barakaldo.com/premios_ib/n/in.php?id=1
http://www.i-barakaldo.com/premios_ib/n/out.php?id=1

para ver el resultado
http://www.i-barakaldo.com/premios_i...p?cat=1&subc=1
mira Hits In y Hits out

gracias
__________________

MyWay. A mi manera
http://myway.i-barakaldo.com
  #2 (permalink)  
Antiguo 01/09/2004, 08:10
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

El problema es el nombre del campo en la base de datos. Mira http://dev.mysql.com/doc/mysql/en/Legal_names.html y http://dev.mysql.com/doc/mysql/en/Reserved_words.html . Y veras como in es una palabra reservada.

Otra cosa, out.php te da este error:
Cita:
Warning: Supplied argument is not a valid MySQL result resource in /home/.sites/39/site9/web/premios_ib/n/out.php on line 19
posiblemente por este codigo:
Código PHP:
$query =( "select * from ibpremios where id='$id'");
$querymysql_db_query;
while(
$array mysql_fetch_array($query)) 
Mas cosas, siempre que uses mysql_query() comprueba que se haya ejecutado la consulta en MySQL sin error (si devuelve false, es qeu se ha producido un error en MySQL), y muestra el mensaje de error con mysql_error() (www.php.net/mysql_error).

Y tambien es altamente recomendable que durante el desarrollo tengas habilitado mostrar los mensajes de error de PHP (directivas display_errors y error_reporting, o la funcion error_reporting() www.php.net/error_reporting), incluidos los Notices. Los mensajes de error dan muchas pistas para la solucion de los problemas.

Saludos.

PD: Las redirecciones javascript no son recomendables para los buscadores. Aunque sea añade un <noscript> con un texto y un link a la web final.

PD2: La mejor forma de incrementar en uno un campo de una base de datos no es con una combinacion de SELECT+UPDATE, es haciendo un solo UPDATE:

UPDATE tabla SET campo=campo+1 WHERE id=$id

Y en este caso si quieres saber si se ha modificado algun registro (si existe el registro), en lugar de mysql_num_rows() usas mysql_affected_rows() (www.php.net/mysql_affected_rows).
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 01/09/2004, 19:01
Avatar de rasmarko  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 78
Antigüedad: 15 años
Puntos: 1
Desde que empecé a programar en PHP y hacer consultas en MYSQL me ocurrían errores que no podía ver pero que me daba cuenta que estaban porque alguna tabla no actualizaba los datos o no los insertaba, etc.

Después de eso, me basé siempre en mi phpmyadmin para estandarizarme al código SQL y he tenido ahora ya cierta tendencia ortográfica en SQL que me ha evitado ese tipo de errores de confusión en MySQL

Por ejemplo, quizá tu error se deba a que no creas tu consulta de la siguiente manera:

Código PHP:
$contador mysql_fetch_array($resp); 
$contador[in]++; 
$query "UPDATE `ibpremios` SET `in`='$contador[in]' WHERE `id`='$id'"mysql_query($query); 
Espero que te funcione y que tomes esta buena cultura ortográfica. Para que evites confusiones del pobre MySQL.
Saludos.
__________________
Fuentes - Diseweb - Frases Célebres
  #4 (permalink)  
Antiguo 02/09/2004, 03:26
Avatar de jonk  
Fecha de Ingreso: julio-2002
Ubicación: Barakaldo
Mensajes: 104
Antigüedad: 15 años, 4 meses
Puntos: 0
Gracias a todos

Ya esta todo solucionado

:)

salu2
__________________

MyWay. A mi manera
http://myway.i-barakaldo.com
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 19:32.