Foros del Web » Programando para Internet » PHP »

Error tonto

Estas en el tema de Error tonto en el foro de PHP en Foros del Web. miren... tengo un problema... cuando me llegan los resultados de una tabla... me llegan duplicados por cuantos nick tengo.... osea, no me muestra 1, si ...
  #1 (permalink)  
Antiguo 12/07/2003, 21:15
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 14 años, 7 meses
Puntos: 2
Sonrisa Error tonto

miren... tengo un problema... cuando me llegan los resultados de una tabla... me llegan duplicados por cuantos nick tengo.... osea, no me muestra 1, si no varios en los que he estado....

entonces yo pongo esto:

mysql_close();
mysql_free_result($usuario_consultaip2);

y asi consigo solo mostrar 1, el que yo quiero, pero ahora me da este error....


Warning: mysql_fetch_array(): 3 is not a valid MySQL result resource in e:\server\Apache2\htdocs\shadow.top\cuenta.voto.ph p on line 6


y se que esa linea funciona pq la estoy usando mas arriba y no da el error
gracias

se me olvida:

Código PHP:
$usuario_consulta mysql_query("SELECT $selecttbl FROM $sql_tabla WHERE id=$id_mod_nivel") or die($Err01);
while(
$resultados mysql_fetch_array($usuario_consulta)) {
$infowebvotos "$resultados[votos]";
require(
'html/count.votar.ok.php');
mysql_close();
//mysql_free_result($usuario_consultaip2); 
la historia seria quitar el array y poner solo una consulta.... pq he probado con el LIMIT 0,1 y como que no funciona... esq ese codigo esta dentro de 3 IF else, que hacen varias comprobaciones antes... entonces como uso dos Tablas... donde almaceno datos por separado... igual se raya... y lo de siempre... que aun no tengo ni p.idea
__________________
3w.valenciadjs.com
3w.laislatv.com

Última edición por nuevo; 12/07/2003 a las 21:20
  #2 (permalink)  
Antiguo 12/07/2003, 21:19
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Deberías poner todo el código .. esas dos líneas fuera de contexto no dicen mucho ...

Pero .. el orden es al reves .. primero se libera memoria y luego se cierra la BD ..

mysql_free_result($usuario_consultaip2);
mysql_close();


O incluso .. si lo tienes así en ese orden (justo una línea y nada más de código por médio a la siguiente) puedes evitarte el mysql_free_result() o incluso ambas .. pues PHP cierra al terminar tus scripts toda conexión a BD y libera memória de las consultas realizadas. Usalo de todas formas, son buenas constumbres.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 12/07/2003, 21:21
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 14 años, 7 meses
Puntos: 2
Hola Cluster ya empezabamos a echarte de menos...;), trabajando... eh.. eso es bueno...

aqui esta el codigo... no te asustes por lo guarro que es,,, es mi primera comprobacion con IF... jeje y bueno... es un poco kk

Código PHP:
<?php
if ($_GET['accion']=="votar"){
require (
"aut_config.inc.php");
//··············································································COMPROBAMOS LA IP SI ESTA
$usuario_consultaip2 mysql_query("SELECT $selecttblONLINE FROM $sql_tbl_votos") or die($Err01);
while(
$resultados mysql_fetch_array($usuario_consultaip2)) {
$ip=$REMOTE_ADDR;
$ipcompruba"$resultados[ip]";
if (
$ip == $ipcompruba) {
//··············································································SI ESTA LA IP EN LA BASE DE DATOS
$ultfecha "$resultados[tid]";
if (
$fecha_votos $ultfecha) {
require (
"aut_config.inc.php");
$id_mod_nivel$_GET['id'];
$consulta mysql_query("SELECT id FROM $sql_tbl_votos WHERE id='$id'") or die($Err01);
$prexiste mysql_num_rows ($consulta);
mysql_free_result($consulta);
if (
$prexiste != 0) {
mysql_close();
mysql_free_result($usuario_consultaip);
} else {
require (
"aut_config.inc.php");
$id_mod_nivel$_GET['id'];
$consulta mysql_query("SELECT id FROM $sql_tbl_votos WHERE id='$id'") or die($Err01);
$prexiste mysql_num_rows ($consulta);
mysql_free_result($consulta);
if (
$prexiste != 0) {
mysql_close();
mysql_free_result($usuario_consultaip);
} else {
mysql_query("DELETE FROM $sql_tbl_votos WHERE tid < '$fecha_votos'") or die($Err01);
mysql_close();
}
}
require (
"aut_config.inc.php");
$id_mod_nivel$_GET['id'];
$usuario_consulta mysql_query("SELECT $selecttbl FROM $sql_tabla WHERE id=$id_mod_nivel") or die($Err01);
while(
$resultados mysql_fetch_array($usuario_consulta)) {
$contador "$resultados[votos]";
$nweb=$_GET['id'];
$infowebvotos"$resultados[votos]";
$infowebvotos ++;
}
$contador ++;
//$contador-1;
mysql_query("UPDATE $sql_tabla SET votos='$contador' WHERE id='$id'") or die($Err01);
mysql_close();
//··············································································SI TIENE QUE SUMAR MAS MENOS TIEMPO
  
} else {
//··············································································NO TIENE QUE SUMAR MAS TERMINADO !!!
$id_mod_nivel$_GET['id'];
$nweb=$_GET['id'];
require (
"aut_config.inc.php");
$usuario_consulta mysql_query("SELECT $selecttbl FROM $sql_tabla WHERE id=$id_mod_nivel") or die($Err01);
while(
$resultados mysql_fetch_array($usuario_consulta)) {
$infowebvotos "$resultados[votos]";
require(
'html/count.votar.ok.php');
mysql_close();
//mysql_free_result($usuario_consultaip2);
   
}
 }
//··············································································NO TIENE QUE SUMAR MAS FIN
 
} else {
//··············································································NO ESTA LA IP EN LA BASE DE DATOS
 
}
}
require (
"aut_config.inc.php");
$id_mod_nivel$_GET['id'];
$consulta mysql_query("SELECT id FROM $sql_tbl_votos WHERE ip='$ip' AND idtop='$id'") or die($Err01);
$prexiste mysql_num_rows ($consulta);
mysql_free_result($consulta);
if (
$prexiste != 0) {
mysql_close();
mysql_free_result($usuario_consulta);
exit;
}
mysql_query("INSERT INTO $sql_tbl_votos (tid, ip, idtop) VALUES (now(),'$ip','$id')") or die($Err01);
require (
"aut_config.inc.php");
$id_mod_nivel$_GET['id'];
$consulta mysql_query("SELECT id FROM $sql_tbl_votos WHERE id='$id'") or die($Err01);
$prexiste mysql_num_rows ($consulta);
mysql_free_result($consulta);
if (
$prexiste != 0) {
mysql_close();
mysql_free_result($usuario_consultaip);
} else {
mysql_query("DELETE FROM $sql_tbl_votos WHERE tid < '$fecha_votos'") or die($Err01);
mysql_close();
}
}
mysql_free_result($usuario_consultaip);
require (
"aut_config.inc.php");
$id_mod_nivel$_GET['id'];
$usuario_consulta mysql_query("SELECT $selecttbl FROM $sql_tabla WHERE id=$id_mod_nivel") or die($Err01);
while(
$resultados mysql_fetch_array($usuario_consulta)) {
$contador "$resultados[votos]";
$nweb=$_GET['id'];
$infowebvotos"$resultados[votos]";
}
mysql_query("UPDATE $sql_tabla SET votos='$contador' WHERE id='$id'") or die($Err01);
mysql_close();
mysql_free_result($usuario_consulta);
require (
"aut_config.inc.php");
$id_mod_nivel$_GET['id'];
$usuario_consulta mysql_query("SELECT $selecttbl FROM $sql_tabla WHERE id=$id_mod_nivel") or die($Err01);
while(
$resultados mysql_fetch_array($usuario_consulta)) {
$contador "$resultados[votos]";
$nweb=$_GET['id'];
$infowebvotos"$resultados[votos]";
$infowebvotos ++;
}
mysql_query("UPDATE $sql_tabla SET votos='$infowebvotos' WHERE id='$id'") or die($Err01);//cuenta visita la 1º vez
mysql_close();
mysql_free_result($usuario_consulta);
require (
"aut_config.inc.php");
$id_mod_nivel$_GET['id'];
$usuario_consulta mysql_query("SELECT $selecttbl FROM $sql_tabla WHERE id=$id_mod_nivel") or die($Err01);
while(
$resultados mysql_fetch_array($usuario_consulta)) {
$infowebvisitas "$resultados[votos]";
require(
'html/count.votar.php');
mysql_close();
}
?>

ya se que te estas riendo...jejeej. es normal... pero te digo que tarde 4 horas en hacer que funcione.... ufff que lokura... me lo pase muy bien... me enfade, me rei, me volvi a enfadas... y al final la satisfaccion de tener algo porti mismo... aunq sea una chapuza... he leido sobre los CASE, y creo que en una version superior lo utilizare... 1º tengo que leer y aprender... pero creo que con los CASE seria mas apropiado que ese lio de IF... gracias a ti y a todos los que componeis FOROS DEL WEB.... es el Invento del Siglo... ya lo digo yo....

tb he aprendido que se puede usar varias Tablas diferentes y que el ID no hace del todo falta... se puede usar otro Campo previamente rellenado claro... es Genial el PHP... quiero masssss... y massss... Viva el Php viiiivaaaa
__________________
3w.valenciadjs.com
3w.laislatv.com

Última edición por nuevo; 12/07/2003 a las 21:28
  #4 (permalink)  
Antiguo 12/07/2003, 21:34
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
jeje y tan "guarro" el código (con todos los respetos) .. a ver si pá'la próxima identamos el código .. se verá más claro .. me refiero a esto:

ejemplo
Código PHP:
<?
if ($algo=="nose"){
   echo 
"bla bla bla";
} else {
    echo 
"bla bla bla";
}
?>

Por lo demas .. sinceramente .. me lieeeeeee con el peaazo de código. Sólo te doy algunos consejos.

En PHP tienes instrucciones para "romper" o "salir" de un bucle o condicional cuando lo desees .. Me refiero a break; o a exit; .. El break; lo puedes usar para esas partes que dices "aqui ya no tiene que contar mas" o algo así ...

Por lo demas .. usando BD como lo estás haciendo .. tienes funciones própias de Mysql cómo SUM() para eso mismo .. sumar el total de registros .. por ejemplo para esa média que quieres hacer .. Aplica SUM y obtienes el total .. luego COUNT() y tienes el número de registros implicados .. lo divides y venceras. xDD

Intenta ordenar (e identar) mejor el código y veras que -TU- mismo veras mejor como va la lógica del mismo (algoritmo).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 12/07/2003, 22:03
Avatar de execon  
Fecha de Ingreso: enero-2002
Ubicación: Temuco
Mensajes: 179
Antigüedad: 15 años, 10 meses
Puntos: 0
Por lo que ví en tu código creo que el error está en que el enlace a la Bd. lo haces sólo una vez, sin embargo varias veces (condicionadas por supuesto) cierras la conexión.

Si cierras la conexión al enlace de la base de datos, entonces debes volevr a abrirlo, de modo que puedas usar en una nueva instancia dicha base de datos.

Creo tb. que la solución a tu problema de repetición está en sólo liberar el recordset sin cerrar el enlace:

Cita:
mysql_free_result($recordset);
# mysql_close($enlace); <--- eliminar ésta linea y dejar sólo una en todo el script o usarla sólo cuando sea necesario.
Espero te ayude.

Saludos.
__________________
----------------------------------
APP Developer
[email protected]
----------------------------------
  #6 (permalink)  
Antiguo 13/07/2003, 01:01
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 14 años, 7 meses
Puntos: 2
ya lo tengo arreglado... gracias a todos... solo tenia que limpiar algunos...

mysql_free_result($usuario_consulta);
mysql_close();

me pase de largo usando esa funcion...jejeje, este codigo es de un contador de visitas, lo hace mediante la IP del usuario y la FECHA, si es menor de X segundos suma+1 y actualiza la BD añadiendo en un campo dichos valores... la suma+1 se hace desde otra TABLA, ya que esta escrito para un TOP, DOWNLOAD FILES o PICS, recoge el numero ID de lo que queremos descargar y lo compara con otra TABLA, que contiene las ips,fechas,y... el numero ID de lo que estamos descargando... asi un usuario puede pulsar varias descargas que, cada una de ellas tendra su propio contador....;), de vez en cuando BORRA, las ips que tengan menor fecha de la que pusimos.... asi se mantiene casi siempre limpia...

si alguien necesita de este codigo y no lo tiene claro..."no me extraña", lo puedo limpiar para que quede mejor... pero aun tardare un poco, ya que estoy en otra cosa ahora... pero lo hare.;)

Código PHP:
<?php
if ($_GET['accion']=="votar"){
require (
"aut_config.inc.php");
//··············································································COMPROBAMOS LA IP SI ESTA
$usuario_consultaip2 mysql_query("SELECT $selecttblONLINE FROM $sql_tbl_votos LIMIT 0,1") or die($Err01);
while(
$resultados mysql_fetch_array($usuario_consultaip2)) {
$ip=$REMOTE_ADDR;
$ipcompruba"$resultados[ip]";
if (
$ip == $ipcompruba) {
//··············································································SI ESTA LA IP EN LA BASE DE DATOS
$ultfecha "$resultados[tid]";
if (
$fecha_votos $ultfecha) {
require (
"aut_config.inc.php");
$id_mod_nivel$_GET['id'];
$consulta mysql_query("SELECT id FROM $sql_tbl_votos WHERE id='$id'") or die($Err01);
$prexiste mysql_num_rows ($consulta);
mysql_free_result($consulta);
if (
$prexiste != 0) {
mysql_close();
} else {
require (
"aut_config.inc.php");
$id_mod_nivel$_GET['id'];
$consulta mysql_query("SELECT id FROM $sql_tbl_votos WHERE id='$id'") or die($Err01);
$prexiste mysql_num_rows ($consulta);
mysql_free_result($consulta);
if (
$prexiste != 0) {
mysql_free_result($usuario_consultaip);
mysql_close();
} else {
mysql_query("DELETE FROM $sql_tbl_votos WHERE tid < '$fecha_votos'") or die($Err01);
mysql_close();
}
}
require (
"aut_config.inc.php");
$id_mod_nivel$_GET['id'];
$usuario_consulta mysql_query("SELECT $selecttbl FROM $sql_tabla WHERE id=$id_mod_nivel") or die($Err01);
while(
$resultados mysql_fetch_array($usuario_consulta)) {
$contador "$resultados[votos]";
$nweb=$_GET['id'];
$infowebvotos"$resultados[votos]";
$infowebvotos ++;
}
$contador ++;
mysql_query("UPDATE $sql_tabla SET votos='$contador' WHERE id='$id'") or die($Err01);
mysql_close();
//··············································································SI TIENE QUE SUMAR MAS MENOS TIEMPO
  
} else {
//··············································································NO TIENE QUE SUMAR MAS TERMINADO !!!
$id_mod_nivel$_GET['id'];
$nweb=$_GET['id'];
require (
"aut_config.inc.php");
$usuario_consulta mysql_query("SELECT $selecttbl FROM $sql_tabla WHERE id=$id_mod_nivel") or die($Err01);
while(
$resultados mysql_fetch_array($usuario_consulta)) {
$infowebvotos "$resultados[votos]";
require(
'html/count.votar.ok.php');
mysql_close();
   }
 }
//··············································································NO TIENE QUE SUMAR MAS FIN
 
} else {
//··············································································NO ESTA LA IP EN LA BASE DE DATOS
 
}
}
require (
"aut_config.inc.php");
$id_mod_nivel$_GET['id'];
$consulta mysql_query("SELECT id FROM $sql_tbl_votos WHERE ip='$ip' AND idtop='$id'") or die($Err01);
$prexiste mysql_num_rows ($consulta);
mysql_free_result($consulta);
if (
$prexiste != 0) {
mysql_free_result($usuario_consulta);
mysql_close();
exit;
}
mysql_query("INSERT INTO $sql_tbl_votos (tid, ip, idtop) VALUES (now(),'$ip','$id')") or die($Err01);
require (
"aut_config.inc.php");
$id_mod_nivel$_GET['id'];
$consulta mysql_query("SELECT id FROM $sql_tbl_votos WHERE id='$id'") or die($Err01);
$prexiste mysql_num_rows ($consulta);
mysql_free_result($consulta);
if (
$prexiste != 0) {
mysql_free_result($usuario_consultaip);
mysql_close();
} else {
mysql_query("DELETE FROM $sql_tbl_votos WHERE tid < '$fecha_votos'") or die($Err01);
mysql_close();
}
}
require (
"aut_config.inc.php");
$id_mod_nivel$_GET['id'];
$usuario_consulta mysql_query("SELECT $selecttbl FROM $sql_tabla WHERE id=$id_mod_nivel") or die($Err01);
while(
$resultados mysql_fetch_array($usuario_consulta)) {
$contador "$resultados[votos]";
$nweb=$_GET['id'];
$infowebvotos"$resultados[votos]";
}
mysql_query("UPDATE $sql_tabla SET votos='$contador' WHERE id='$id'") or die($Err01);
mysql_close();
mysql_free_result($usuario_consulta);
require (
"aut_config.inc.php");
$id_mod_nivel$_GET['id'];
$usuario_consulta mysql_query("SELECT $selecttbl FROM $sql_tabla WHERE id=$id_mod_nivel") or die($Err01);
while(
$resultados mysql_fetch_array($usuario_consulta)) {
$contador "$resultados[votos]";
$nweb=$_GET['id'];
$infowebvotos"$resultados[votos]";
$infowebvotos ++;
}
mysql_query("UPDATE $sql_tabla SET votos='$infowebvotos' WHERE id='$id'") or die($Err01);//cuenta visita la 1º vez
mysql_free_result($usuario_consulta);
mysql_close();
require (
"aut_config.inc.php");
$id_mod_nivel$_GET['id'];
$usuario_consulta mysql_query("SELECT $selecttbl FROM $sql_tabla WHERE id=$id_mod_nivel") or die($Err01);
while(
$resultados mysql_fetch_array($usuario_consulta)) {
$infowebvisitas "$resultados[votos]";
require(
'html/count.votar.php');
mysql_close();
}
?>
__________________
3w.valenciadjs.com
3w.laislatv.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 03:12.