Foros del Web » Programando para Internet » PHP »

alguien me puede decir que error es este

Estas en el tema de alguien me puede decir que error es este en el foro de PHP en Foros del Web. hola tengo un tagboard en mi web, que le he echo algunas modificaciones, todo bien. el problema que tengo en que cuando ingresan mensajes, despues ...
  #1 (permalink)  
Antiguo 14/02/2006, 07:51
 
Fecha de Ingreso: octubre-2005
Mensajes: 407
Antigüedad: 12 años, 2 meses
Puntos: 2
alguien me puede decir que error es este

hola tengo un tagboard en mi web, que le he echo algunas modificaciones, todo bien.

el problema que tengo en que cuando ingresan mensajes, despues de los 120 as o menos, no se bien, porque algunos voy borrando por insultos, y demas que dejan, al llegar mas o menos a los 120

da el siguiente error al querer dejar algun mensaje

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /home/ju000393/public_html/tagboard3/tag.php on line 86

muestro un pedazo del codigo a partir de la linea 80

Código PHP:
#INSERCIÓN DE DATOS EN LA TABLA:
    
if (($nombre != $null) && ($texto != $null)) {
            
$qry2 "SELECT id, nombre, url, mensaje, ip FROM $tbl ORDER BY id ASC"
            
$ttl 0;
            while (
$row mysql_fetch_row($qry2)) { 
                if (
$cmz == $null) { $cmz $row[0]; }
            
$b_txt $row[3];
            
$ttl++;
            }
        
$ttl++;
        
$lmt++;
        if (
$ttl == $lmt) {
            
$qry "DELETE FROM $tbl where id = '$cmz' LIMIT 1";
            
$res mysql_query($qry) or die("$msg[19]: $qry"); 
        }
        
$ip $_SERVER['REMOTE_ADDR'];
        
$fecha gmdate("$fch"time()); $fecha "$fecha (GMT)";
        
$qry "SELECT deny FROM $tdn WHERE ip = '$ip'";
        
$res mysql_query($qry) or die("$msg[19]: $qry");
        while (
$row mysql_fetch_row($res)) { $dny $row[0]; }
        if ((
$dny == 1) && ($sms == 1)) { echo "<SPAN CLASS=\"avs\">$msg[4]</SPAN><BR>"; }
            if ((
$b_txt != $texto) && ($dny == 0)) {
                
$qry "INSERT INTO $tbl (url,nombre,mensaje,ip,fecha) VALUES('$url','$nombre','$texto','$ip','$fecha')"
                
$res mysql_query($qry) or die("$msg[18]");
            }
    } 
saludos
__________________
DJJJ
  #2 (permalink)  
Antiguo 14/02/2006, 08:00
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Intenta usar mysql_error() para que puedas saber concretamente el error de SQL o de conexión que puedas tener.

Ejemplo:
$res = mysql_query($qry) or die(mysql_error());

Aunque .. por el problema que describes parece ser que duplicas indices al superar el tamaño del tipo de campo "id" (donde supongo que defines un autoincremental y único como "id").

Indicanos la estructura de tus tablas (con tipos de campos y tamaños) ..

Un saludo,
  #3 (permalink)  
Antiguo 14/02/2006, 08:06
 
Fecha de Ingreso: octubre-2005
Mensajes: 407
Antigüedad: 12 años, 2 meses
Puntos: 2
esta es la tabla

si el id es autoincremental, la estructura de tabla es la siguiente

CREATE TABLE tagdata
id TINYINT (5) not null AUTO_INCREMENT
nombre VARCHAR (255)
mensaje TEXT NOT NULL
url VARCHAR (255)
ip VARCHAR (32)
fecha VARCHAR (32)
PRIMARY KEY (id)
__________________
DJJJ
  #4 (permalink)  
Antiguo 14/02/2006, 08:08
 
Fecha de Ingreso: octubre-2005
Mensajes: 407
Antigüedad: 12 años, 2 meses
Puntos: 2
y agrengandole mysql_error()

me da el siguiente mensaje
Query was empty
__________________
DJJJ
  #5 (permalink)  
Antiguo 14/02/2006, 08:43
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Observa:

http://dev.mysql.com/doc/refman/5.0/...ric-types.html

El tipo de dato que usas para tu ID (autoincremental) es un TINYINT .. dices que tenga de longitud "5" digitos .. pero ese tipo de campo numérico no llega a más de "3" por definición ..

Además .. si no defines que sea "sin signo" su rango es -128 a +127 .. por ende como tu das "ID's" positivos .. si bien un "TINYINT" podría dar hasta 255 .. de esa forma sólo puedes usar 127 (más o menos el n° de registro que te daba problemas).

La solución es que leas bien sobre Mysql y sus tipos de datos. Usa un INT (o menor) pero "sin signo" para tomar de 0 a +4294967295 (registros máximo) y no la mitada si indicas que sea con signo. Creo que con esos 4 millones de registros ya tendrás para un largo tiempo XDD

Un saludo,
  #6 (permalink)  
Antiguo 14/02/2006, 08:43
 
Fecha de Ingreso: octubre-2005
Mensajes: 407
Antigüedad: 12 años, 2 meses
Puntos: 2
ayuda please

ahora me fijo
__________________
DJJJ
  #7 (permalink)  
Antiguo 14/02/2006, 08:47
 
Fecha de Ingreso: octubre-2005
Mensajes: 407
Antigüedad: 12 años, 2 meses
Puntos: 2
clusterr mil gracias ahora me pongo a leerr

millll gracias cluster, por colaborar con todossss

eres un genio, de nuevo muchas graciassss

y lo que haces no tiene precio
__________________
DJJJ
  #8 (permalink)  
Antiguo 14/02/2006, 08:55
 
Fecha de Ingreso: octubre-2005
Mensajes: 407
Antigüedad: 12 años, 2 meses
Puntos: 2
cluster milllllllll de milllonessss de graciasssssss
le cambie lo que dijiste funciona espectacularrrrr


de nuevoooo muchisimas gracias.
__________________
DJJJ
  #9 (permalink)  
Antiguo 14/02/2006, 09:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Me alegro que te funcione .. pero más me alegraría saber que entiendes por qué te sucedió y así en consecuencia cuando diseñes tus BBDD (tablas) y tengas que indicar tipos de datos para campos "autonuméricos" (o de cualquier otro tipo) sepas por qué usar uno u otro en cada caso particular.

Un saludo,
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 14:22.