Foros del Web » Programando para Internet » PHP »

Problemas con contador :(

Estas en el tema de Problemas con contador :( en el foro de PHP en Foros del Web. Saludos: Recurro a los amigos de forsdelweb para ver si me pueden ayudar el error en este scripts que estoy realizando, trata de lo siguiete: ...
  #1 (permalink)  
Antiguo 17/06/2004, 14:45
 
Fecha de Ingreso: junio-2004
Mensajes: 101
Antigüedad: 19 años, 10 meses
Puntos: 0
Problemas con contador :(

Saludos:

Recurro a los amigos de forsdelweb para ver si me pueden ayudar el error en este scripts que estoy realizando, trata de lo siguiete:

Tengo una página listado.php

hago mi consulta a mi BD
muestro mis registros
Y paso la ID y Numero de Click con POST a mi página resutado.php
por lo que el enlace para llevar a resultados.php queda de esta forma

listado.php?numero=<?=$id?>&lecturas=<?=$cuenta?>

en RESULTADOS.PHP
hago un include de lecturas.php que tiene un UPDATE para sumar las lecturas, de esta forma:

Código PHP:
<?
include("conexion.php");
$sql="UPDATE MITABLA SET cuenta='$lecturas' WHERE id=$numero";
mysql_query($sql) or die("Problemas con la Base de Datos");
mysql_close($DB);
?>
Bien hasta aqui me actualizo las lecturas ahora muestro con una consulta todos mis datos en RESULTADOS.PHP

Código PHP:
include("conexion.php");
$sql="select * from MITABLA where id=$numero";
$rs = mysql_query($sql); 
while ($fila = mysql_fetch_object($rs)){ 
$foto=$fila->imagen;
echo "$fila->cuenta";//muestra el número de lecturas
//y todos mis datos incluyendo las lecturas

// Uso un listbox para cambiar de registro
<form action="resultados.php" name="formcat"> <select name="numero" onChange="document.formcat.submit()" class="lista" size="1">
                                                <option>Mas Titulos</option>
                                                <? $rsCategoria=mysql_query("Select id,titulo from MITABLA ORDER BY id DESC");
                                                 while (
$aCat mysql_fetch_array($rsCategoria)) {?>
                                                 <option value="<?=$aCat[0]?>"><?=$aCat[1]?></option>
                                                 <? }
                                                  
?>
                                                    </select>
                                                    </form>


mysql_close($DB);
?>

Bien pues en RESULTADOS.PHP como veran uso una lista desplegable para cambiar de registro y me muestre todo los datos de ese registro
titulo,imagen,lecturas,texto.

Bien aqui el problema resulta que desde la página LISTADO.php ingreso a RESULTADOS.PHP pasando las lecturas que tomo de mi BD, actualizo el númeor de lecturas y hago una nueva consulta para mostrar todos mis datos, hasta alli todo bien pues lo hace el problema es que cuando uso la lista desplegable para pasar a otro registro, me pone el número de lecturas en cero. y no se como solucionarlo....

espero que alguien pueda ayudarme.....
  #2 (permalink)  
Antiguo 18/06/2004, 07:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
En tu "<select>" sólo pasas la variable "ID" de tu BD al seleccinar tu opción .. te falta la otra variabel que gestiona ese dato del conteo (si quieres hacerlo así).

Para tu caso concreto .. yo lo solventaría simplemente "serializando" las variables extra que requiero en el "value" de ese <option>:

<option value="<?=$aCat[0].'|'.$aCat['cuenta']?>"><?=$aCat[1]?></option>

Con lo cual te quedaría algo tipo:

<option value="1|34">blabla</option>

El primer nº del value de ese option seria el ID y el segundo (separado por el caracter |) sería el contador ..

Al recibir tu $numero en resultados.php .. tendrías que aplicar explode() a esa variable para quedarte con las dos "psudo-variables" que se están propagando ahí:

$numero_lecturas=explode('|',$numero);
$numero=$numero_lecturas[0]; // el ID (numero)
$lecturas=$numero_lecturas[1]; // las lecturas .. (cuenta)

Pero .. la solución a estos problemas normalmente se solventa pasando tu ID sólo a tu script que tenga que hacer tu "update" y ahí antes de ese update haces un "select" para obtener los datos de ese registro sea uno más (como ese "cuenta") o N más y vas aplicando las actualizaciones que requieras tipo:

Es decir .. te basas en ese ID (que identifica a ese campo como único) para obtener el resto de datos que vas a trabajar con el .. Pero .. para el caso particular de un "contador" se hacen cosas tipo:

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

sin más SELECT por médio ..

cuenta=cuenta+1 toma el valor del campo y lo incrementa en las unidades que indiques y lo deja en dicho campo.

Un saludo,
  #3 (permalink)  
Antiguo 18/06/2004, 08:15
 
Fecha de Ingreso: junio-2004
Mensajes: 101
Antigüedad: 19 años, 10 meses
Puntos: 0
Hola:

Muchas gracias por tu respuesta, entiendo muy bien lo que quieres decir pero queria evitar un SELECT de màs que me parecia que se podia evitar y la soluciòn usando el explode() me parece interesante.

Al final cambie un poco el scripts y me a dado resultados

Ahora desde lista.php solo paso la id a lecturas.php hago mi UPDATE usando cuenta=cuenta+1 para sumar las lecturas...
un header para redireccionar a resultados.php pasando mi ID
y en el select en vez de llevar a RESULTADOS.PHP ahora lleva a LECTURAS.PHP
como paso la ID se ejecuta el UPDATE por lo que la cuenta de lecturas aumenta


Muchas gracias.......
Saludos........
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 11:59.