Foros del Web » Programando para Internet » PHP »

mi funcion se realiza más de 1 vez

Estas en el tema de mi funcion se realiza más de 1 vez en el foro de PHP en Foros del Web. hola amig@s!!!! aquí sgo con mis problemas en el traslado de dominio... en cada artículo tengo una llamada a una función para que me cuente ...
  #1 (permalink)  
Antiguo 11/01/2005, 04:29
Avatar de X3mdesign  
Fecha de Ingreso: octubre-2003
Ubicación: Madrid
Mensajes: 649
Antigüedad: 20 años, 6 meses
Puntos: 2
mi funcion se realiza más de 1 vez

hola amig@s!!!!

aquí sgo con mis problemas en el traslado de dominio...

en cada artículo tengo una llamada a una función para que me cuente que se ha leído una vez... pues bien, cada vez que entro en un artículo, me suma 4, 5, o las veces que le dé la gana... os pongo el código...

Esta función se carga en desde un archivo con las demás funciones
Código PHP:
function lecturas($tablaL,$campoL,$numL){
    
$total $campoL+1;
    
mysql_query ("UPDATE `$tablaL` SET `lecturas` = '$total' WHERE `id`='$numL'");

y desde el artículo la llmo de la siguiente manera:
Código PHP:
// actualización de las lecturas
lecturas($seccion,$datos[7],$num); 
donde $seccion es el nombre de la tabla del artículo, $datos[7], el valor de las lecturas actuales y $num, es el artículo que se está leyendo....

a ver si me podéis indicar cómo realizarlo correctamente :)

gracias again!!!!
__________________
Nippon-Tour, tu portal sobre Japón
¿Te gusta el manga, haces tus propios dibujos? Visita FanArt de Nippon-Tour
  #2 (permalink)  
Antiguo 11/01/2005, 04:38
 
Fecha de Ingreso: septiembre-2004
Ubicación: Viviendo en Manresa(Barcelona)
Mensajes: 230
Antigüedad: 19 años, 6 meses
Puntos: 0
Una pregunta el valor de dentro de datos es siempre siete o lo obtienes de algun otro sitio?
  #3 (permalink)  
Antiguo 11/01/2005, 04:43
Avatar de X3mdesign  
Fecha de Ingreso: octubre-2003
Ubicación: Madrid
Mensajes: 649
Antigüedad: 20 años, 6 meses
Puntos: 2
las obtengo de una query que hago en la BD sobre el artículo en cuestión... y es el valor #7 de la query :), siempre es el mismo auqneu su contenido sea distinto variando del artículo... no se si me he explicado :)
__________________
Nippon-Tour, tu portal sobre Japón
¿Te gusta el manga, haces tus propios dibujos? Visita FanArt de Nippon-Tour
  #4 (permalink)  
Antiguo 11/01/2005, 04:51
 
Fecha de Ingreso: septiembre-2004
Ubicación: Viviendo en Manresa(Barcelona)
Mensajes: 230
Antigüedad: 19 años, 6 meses
Puntos: 0
Ok, podrias poner antes de la llamada un if, con un contador que si vale 0 la ejecute y dentro de este le sumas uno.
Código PHP:
$contador=0;
if(
$contador==1){
lecturas($seccion,$datos[7],$num); 
$contador ++;
}else{

asi te aseguras que solo lo haga una vez.No se es una idea... Prueba y me dices a ver que tal...
  #5 (permalink)  
Antiguo 11/01/2005, 05:01
Avatar de X3mdesign  
Fecha de Ingreso: octubre-2003
Ubicación: Madrid
Mensajes: 649
Antigüedad: 20 años, 6 meses
Puntos: 2
jaja, no te lo vas a creer... con eso no hace la suma... es increíble (@_@)
__________________
Nippon-Tour, tu portal sobre Japón
¿Te gusta el manga, haces tus propios dibujos? Visita FanArt de Nippon-Tour
  #6 (permalink)  
Antiguo 11/01/2005, 05:04
 
Fecha de Ingreso: septiembre-2004
Ubicación: Viviendo en Manresa(Barcelona)
Mensajes: 230
Antigüedad: 19 años, 6 meses
Puntos: 0
Pon $campoL++; y comprueba que en la primera llamada ejecute todo correcto. Es que no se, si pones el codigo completo puede que se vea otro error, nose...
  #7 (permalink)  
Antiguo 11/01/2005, 06:12
Avatar de X3mdesign  
Fecha de Ingreso: octubre-2003
Ubicación: Madrid
Mensajes: 649
Antigüedad: 20 años, 6 meses
Puntos: 2
poniendo esto tambien suma lo que quiere

Código PHP:
function lecturas($tablaL,$campoL,$numL){
    
$campoL++;
    
mysql_query ("UPDATE `$tablaL` SET `lecturas` = '$campoL' WHERE `id`='$numL'");
    
//return;


y este es el código de la página que muestra las recetas:

Código PHP:
<!-- InstanceBegin template="/Templates/contenidos.dwt.php" codeOutsideHTMLIsLocked="false" --><?php
// Para conocer el tamaño de la página generada
ob_start(); 
$seccion $HTTP_GET_VARS["seccion"];
$apartado $HTTP_GET_VARS["apartado"];
$num $HTTP_GET_VARS["num"];
$pagina $HTTP_GET_VARS["pagina"];
$tema $HTTP_GET_VARS["tema"];
$palabras $HTTP_GET_VARS["palabras"];
$tabla $_POST["tabla"];

@include(
"lib/scripts.php");        
    
//link para envio del articulo 
$link="$PHP_SELF?seccion=$seccion&num=$num";
    
?><!-- InstanceBeginEditable name="head" --><!-- InstanceEndEditable --> 
<table width="95%" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td><!-- InstanceBeginEditable name="contenido" --> 
      <?php
    
// campos de la tabla Gastronomia: id, receta, tiempo, preparacion, ingredientes, observaciones, imagen, lecturas, comentarios
        
$contenido mysql_query ("SELECT * FROM `$seccion` WHERE `id`='$num' LIMIT 1") or die (mysql_error());
        
$datos mysql_fetch_row ($contenido);    
        
        
//link para envio del articulo 
        
$titulo="Receta: $datos[1]";
        
        
// actualización de las lecturas
        
lecturas($seccion,$datos[7],$num);
        
        
// búsqueda de palabras clave
        // palabras_clave($palabras,$datos[5],$color1);
                
        
?>
      <p><?php    echo "<a href=$PHP_SELF?seccion=$seccion>Volver a Gastronomia</a>"?></p>
      <table width="100%" border="0" cellpadding="5" cellspacing="0" bgcolor="#eeeeee">
        <tr> 
          <td height="2" colspan="2" bgcolor="<?php echo $color1?>"><strong><font color="#FFFFFF" size="2" face="Arial"><?php echo $datos[1]; ?></font></strong></td>
        </tr>
        <tr> 
          <td valign="top">
            <table width="100%" border="0" cellpadding="5" cellspacing="0" bgcolor="#eeeeee">
              <tr>
                <td><strong>Tiempo:</strong> <?php echo $datos[2]; ?></td>
              </tr>
              <tr>
                <td><p><strong>Ingredientes:</strong></p>
                    <?php 
                     
if ($datos[6]){ ?>
                    <table width="43" border="0" align="right" cellpadding="0" cellspacing="2">
                      <tr><td width="33">
                          <table width="10" border="1" cellpadding="5" cellspacing="0" bordercolor="<?php echo $color1?>" bgcolor="#F3F3F3" >
                          <tr><td><?php echo "<img src=../imagenes/$seccion/$datos[6]>"?></td></tr>
                          </table>
                      </td></tr>
                    </table>
                    <?php ?>
                    <blockquote><p align="justify"><?php echo palabras_clave($palabras,$datos[4],$color1); ?></p></blockquote>
                </td>
              </tr>
              <tr>
                <td><p><strong>Preparaci&oacute;n:</strong></p>
                    <blockquote><p align="justify"><?php echo palabras_clave($palabras,$datos[3],$color1); ?></p></blockquote>
                </td>
              </tr>
              <?php if ($datos[5]){    ?>
              <tr><td><p><strong>Observaciones:</strong><blockquote><?php echo palabras_clave($palabras,$datos[5],$color1); ?><p></p></blockquote></td></tr>
              <?php ?>
              <tr>
                <td><div align="right"><a href="<?php echo "$PHP_SELF?seccion=EnviarAmigo&Titulo=$titulo&link=".urlencode($link); ?>">Enviar a un amigo &gt;&gt;</a></div></td>
              </tr>
              <tr></tr>
            </table></td>
        </tr>
        <tr bgcolor="<?php echo $color1?>"><td height="2" colspan="2"></td></tr>
      </table>
      <p></p>
      <p align="center">
    <?php
    
if($datos[8]!=0) { ?>
    <iframe width="90%" height="200" align="middle" scrolling="auto" marginheight="5" marginwidth="5" src="/web/comentarios.php<?php echo "?tema=$seccion&num=$num"?>"></iframe>    
    <?php ?>
    <?php include ("web/comentar.php"); ?>
    </p>
      <table width="100%" border="0" cellspacing="0" cellpadding="0">
        <tr>           
          <td>
            <?php    echo "<a href=$PHP_SELF?seccion=$seccion>Volver a Gastronomia</a>"?>
          </td>
          <td><div align="right"><a href=#top>Subir</a></div></td>
        </tr>
      </table>

      <!-- InstanceEndEditable --></td>
  </tr>
</table>
<?
// al final de tu script 
$size=ob_get_length(); 
ob_end_flush();
?><!-- InstanceEnd -->
gracias!!!!
__________________
Nippon-Tour, tu portal sobre Japón
¿Te gusta el manga, haces tus propios dibujos? Visita FanArt de Nippon-Tour
  #8 (permalink)  
Antiguo 11/01/2005, 06:43
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Primero, ¿por que darle trabajo a PHP cuando lo puedes hacer solo con SQL? Si lo que quieres es sumar uno a un campo, lo mas sencillo es:

UPDATE tabla SET campo=campo+1 WHERE loquesea

Es menos generalista que tu funcion, pero realiza esa unica accion.

Sobre la suma multiple, dentro de esa funcion haz un echo "Aqui<br>" y cuenta cuantas veces y donde sale el mensaje. En teoria solo tendria que salir una vez por pagina. Si sale mas, cuestion de buscar donde y por que se llama.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #9 (permalink)  
Antiguo 12/01/2005, 07:20
Avatar de X3mdesign  
Fecha de Ingreso: octubre-2003
Ubicación: Madrid
Mensajes: 649
Antigüedad: 20 años, 6 meses
Puntos: 2
gracias Josemi, no he podido responderte ante por diversos errores en el dominio ... he probado lo que me has dicho colocando "Aqui" y lo escribe 1 vez pero suma 4 veces... también he cambiado la línea a:

Código PHP:
mysql_query ("UPDATE `$tablaL` SET `lecturas`='$campoL++' WHERE `id`='$numL'"); 
y entonces no suma (O_o)...

a ver si damos con ello

P.D: he cambiado la línea con y sin comillas con el mismo resultado :(
__________________
Nippon-Tour, tu portal sobre Japón
¿Te gusta el manga, haces tus propios dibujos? Visita FanArt de Nippon-Tour
  #10 (permalink)  
Antiguo 12/01/2005, 07:31
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
¿Has probado con
Código PHP:
 mysql_query ("UPDATE `$tablaL` SET `lecturas`=`lecturas`+1 WHERE `id`='$numL'"); 
?

Asumiendo que en campoL va el valor anterior de lecturas.

Y por supuesto, asumiendo que no se ejecuta 4 veces seguidas el script aunque solo se vea una (alguna redireccion, frames o iframes, ...).

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #11 (permalink)  
Antiguo 12/01/2005, 08:06
Avatar de X3mdesign  
Fecha de Ingreso: octubre-2003
Ubicación: Madrid
Mensajes: 649
Antigüedad: 20 años, 6 meses
Puntos: 2
tengo el portal de forma que se carga un contenido dependiendo de la variable $seccion dentro del mismo index.php... por cierto he realizado un echo de la query

Código PHP:
echo "UPDATE `$tablaL` SET `lecturas`='$campoL'+1 WHERE `id`='$numL'"
y lo muestra bien.. pero suma lo que le da la gana... normaltente +4, pero aveces otros valores... y no se puede añadir algo como "LIMIT 1"??

saludos!!!
__________________
Nippon-Tour, tu portal sobre Japón
¿Te gusta el manga, haces tus propios dibujos? Visita FanArt de Nippon-Tour
  #12 (permalink)  
Antiguo 14/01/2005, 04:25
Avatar de X3mdesign  
Fecha de Ingreso: octubre-2003
Ubicación: Madrid
Mensajes: 649
Antigüedad: 20 años, 6 meses
Puntos: 2
Volviendo al tema... me he fijado que actualizando hay veces que suma 1 y otras el valor que le da la gana.... no es muy normal... verdad??
__________________
Nippon-Tour, tu portal sobre Japón
¿Te gusta el manga, haces tus propios dibujos? Visita FanArt de Nippon-Tour
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 01:25.