Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Actulizar campo de DB al a vez que se descarga

Estas en el tema de Actulizar campo de DB al a vez que se descarga en el foro de PHP en Foros del Web. Hola gente, espero esten bien. Mi pregunta es como puedo actualizar un campo de una tabla en mi DB cuando al mismo tiempo quiero hacer ...
  #1 (permalink)  
Antiguo 01/12/2015, 17:52
 
Fecha de Ingreso: agosto-2015
Ubicación: Rosario - Argentina
Mensajes: 424
Antigüedad: 8 años, 8 meses
Puntos: 12
Actulizar campo de DB al a vez que se descarga

Hola gente, espero esten bien.

Mi pregunta es como puedo actualizar un campo de una tabla en mi DB cuando al mismo tiempo quiero hacer una descarga ¿Pueden ayudarme?

Lo he intentado de varias maneras con etiqueta <a>, <input> pero nada...
tambien he intentado poner ambas y que cada una realize una accion diferente, pero nada...


bueno, espero puedan ayudarme y gracias de antemano.
  #2 (permalink)  
Antiguo 01/12/2015, 17:56
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Actulizar campo de DB al a vez que se descarga

Cita:
Mi pregunta es como puedo actualizar un campo de una tabla en mi DB cuando al mismo tiempo quiero hacer una descarga ¿Pueden ayudarme?
Es un error pensar así: no puedes hacer dos cosas al mismo tiempo.

Primero debes hacer el UPDATE y luego forzar la descarga, en orden.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 01/12/2015, 18:44
 
Fecha de Ingreso: agosto-2015
Ubicación: Rosario - Argentina
Mensajes: 424
Antigüedad: 8 años, 8 meses
Puntos: 12
Respuesta: Actulizar campo de DB al a vez que se descarga

Cita:
Iniciado por pateketrueke Ver Mensaje
Es un error pensar así: no puedes hacer dos cosas al mismo tiempo.

Primero debes hacer el UPDATE y luego forzar la descarga, en orden.
Me dices o me pasas un enlace de como podria hacerlo? me seria de mucha utilidad. saludos!
  #4 (permalink)  
Antiguo 01/12/2015, 19:35
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Actulizar campo de DB al a vez que se descarga

Son dos cosas diferentes: ¿exactamente con cual tienes problemas?

O bien, muestra tu código para ver lo que llevas hecho.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 02/12/2015, 14:23
 
Fecha de Ingreso: agosto-2015
Ubicación: Rosario - Argentina
Mensajes: 424
Antigüedad: 8 años, 8 meses
Puntos: 12
Respuesta: Actulizar campo de DB al a vez que se descarga

Cita:
Iniciado por pateketrueke Ver Mensaje
Son dos cosas diferentes: ¿exactamente con cual tienes problemas?

O bien, muestra tu código para ver lo que llevas hecho.
Pues mira... segun como arme el sistema solo se ejecuta el update o la descarga

de una manera se ejecuta el update pero no descarga y si lo hago de otra manera se ejecuta la descarga pero no el update

tambien he probado con etiquetas <a > o <input type='submit'>
pero aun asi no lo logro xD.

ahora solo lo tengo armado de modo que se pueda descargar (me importa como privilegio), pero la idea es que tambien se ejecute el update.

¿Crees que con enlasar la descarga al boton y ponerle que ejecute una funcion serviria?
tendria que probarlo, pero mientras tanto esperare la respuesta. saludos!
  #6 (permalink)  
Antiguo 02/12/2015, 17:40
 
Fecha de Ingreso: agosto-2015
Ubicación: Rosario - Argentina
Mensajes: 424
Antigüedad: 8 años, 8 meses
Puntos: 12
Respuesta: Actulizar campo de DB al a vez que se descarga

Lo he resulto con paciencia xD.

Dejo aqui el codigo de la solucion por si algun novato como yo tiene el mismo problema.

Código PHP:
<?php
require('config.php');
mysqli_select_db($conexion,$db_web)or die("Error al seleccioar la DB");
$programas_id $_GET['id'];
if(isset(
$_POST['download'])){
    
extract($_POST);
    
mysqli_query($conexion,"UPDATE programas SET descargas=descargas+1 WHERE id='$programas_id'")or die(mysqli_error($conexion));
    echo 
"<script>window.location='$url_web/descargas/$programas_link';</script>";
}
?>
  #7 (permalink)  
Antiguo 02/12/2015, 17:42
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Actulizar campo de DB al a vez que se descarga

De hecho usar Javascript para forzar la descarga está algo mal, lo ideal sería usar header():
Código PHP:
Ver original
  1. header("Location: $url_web/descargas/$programas_link");
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 02/12/2015, 20:34
 
Fecha de Ingreso: agosto-2015
Ubicación: Rosario - Argentina
Mensajes: 424
Antigüedad: 8 años, 8 meses
Puntos: 12
Respuesta: Actulizar campo de DB al a vez que se descarga

Cita:
Iniciado por pateketrueke Ver Mensaje
De hecho usar Javascript para forzar la descarga está algo mal, lo ideal sería usar header():
Código PHP:
Ver original
  1. header("Location: $url_web/descargas/$programas_link");
Lo intente xD, pero no me deja, me sale un error... solo me deja usarla al principi del documento.
  #9 (permalink)  
Antiguo 02/12/2015, 20:56
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Actulizar campo de DB al a vez que se descarga

Cita:
Iniciado por TrinityCore Ver Mensaje
solo me deja usarla al principi del documento.
Exacto.

Y que te salga un error es síntoma de que haces mal las cosas.

Piensa un poco lo siguiente: si vas a usa header() ¿para qué imprimes algo antes o por qué tendrías HTML o texto antes?

Eso es sencillamente absurdo, si tienes la certeza de que vas a usar header() entonces no imprimas ni coloques texto ni HTML antes de nada.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 03/12/2015, 18:14
 
Fecha de Ingreso: agosto-2015
Ubicación: Rosario - Argentina
Mensajes: 424
Antigüedad: 8 años, 8 meses
Puntos: 12
Respuesta: Actulizar campo de DB al a vez que se descarga

Cita:
Iniciado por pateketrueke Ver Mensaje
Exacto.

Y que te salga un error es síntoma de que haces mal las cosas.

Piensa un poco lo siguiente: si vas a usa header() ¿para qué imprimes algo antes o por qué tendrías HTML o texto antes?

Eso es sencillamente absurdo, si tienes la certeza de que vas a usar header() entonces no imprimas ni coloques texto ni HTML antes de nada.
Pero es que yo no estoy imprimiendo nada.... solo estoy descargando y actualizando....

si me pones un ejemplo tal vez pueda entenderlo. saludos!
  #11 (permalink)  
Antiguo 03/12/2015, 22:35
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Actulizar campo de DB al a vez que se descarga

Cita:
Lo intente xD, pero no me deja, me sale un error... solo me deja usarla al principi del documento.
Pues podríamos comenzar por analizar el mensaje de error completo así como el código que lo provoca, ¿tal vez si muestras el 100% de lo que haces?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #12 (permalink)  
Antiguo 03/12/2015, 23:24
 
Fecha de Ingreso: agosto-2015
Ubicación: Rosario - Argentina
Mensajes: 424
Antigüedad: 8 años, 8 meses
Puntos: 12
Respuesta: Actulizar campo de DB al a vez que se descarga

Cita:
Iniciado por pateketrueke Ver Mensaje
Pues podríamos comenzar por analizar el mensaje de error completo así como el código que lo provoca, ¿tal vez si muestras el 100% de lo que haces?
Este seria el code completo de la actualizacion y descarga que deberia realizarse cuando uno da click en el boton xD:

Código PHP:
<?php
require('config.php');
mysqli_select_db($conexion,$db_web)or die("Error al seleccioar la DB");
$programas_id $_GET['id'];
$programas_visitas mysqli_query($conexion,"UPDATE programas SET visitas=visitas+1 WHERE id='$programas_id'")or die(mysqli_error($conexion));
$programas mysqli_query($conexion,"SELECT * FROM programas WHERE id='$programas_id'")or die(mysqli_error($conexion));
$rprogramas mysqli_num_rows($programas);
while(
$linea mysqli_fetch_assoc($programas)){
    
$programas_nombre $linea['nombre'];
    
$programas_imagen $linea['imagen'];
    
$programas_descripcion $linea['descripcion'];
    
$programas_link $linea['link'];
    }
    echo 
"<h1 id='titulo_post'>$programas_nombre</h1>
    <div id='web_imagen' style='background-image:url($url_web/funciones/images/$programas_imagen);'></div>
    <div id='descripcion_web'>$programas_descripcion</div>
    <form method='post'>
    <div id='web_link'><input type='submit' name='download' id='descargar_web' value='Descargar $programas_nombre'></div></a>
    </form>"
;
    
$conexion -> close();
?>
<?php
require('config.php');
mysqli_select_db($conexion,$db_web)or die("Error al seleccioar la DB");
$programas_id $_GET['id'];
if(isset(
$_POST['download'])){
    
extract($_POST);
    
mysqli_query($conexion,"UPDATE programas SET descargas=descargas+1 WHERE id='$programas_id'")or die(mysqli_error($conexion));
    
mysqli_query($conexion,"UPDATE programas SET visitas=visitas-1 WHERE id='$programas_id'")or die(mysqli_error($conexion));
    echo 
"<script>window.location='$programas_link';</script>";
}
?>
Tu que llevas tiempo, esto te parecera como auriculares enredados xD, aun soy nuevo y acepto criticas constructivas, por eso aun estoy aqui aunque el tema este teoricamente solucionado.

saludos y espero tu respuesta!
  #13 (permalink)  
Antiguo 04/12/2015, 04:08
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 4 meses
Puntos: 154
Respuesta: Actulizar campo de DB al a vez que se descarga

Hola TrinityCore,

Esto es lo que imprimes antes de forzar la descarga:

Código PHP:
Ver original
  1. echo "<h1 id='titulo_post'>$programas_nombre</h1>
  2.    <div id='web_imagen' style='background-image:url($url_web/funciones/images/$programas_imagen);'></div>
  3.    <div id='descripcion_web'>$programas_descripcion</div>
  4.    <form method='post'>
  5.    <div id='web_link'><input type='submit' name='download' id='descargar_web' value='Descargar $programas_nombre'></div></a>
  6.    </form>";

Los "echo" sirven para "imprimir" algo en pantalla, a eso se refiere pateketrueke.

Esperaremos a ver qué te dice él para estar más claros, que él sabe más que yo de lejos.
  #14 (permalink)  
Antiguo 04/12/2015, 17:26
 
Fecha de Ingreso: agosto-2015
Ubicación: Rosario - Argentina
Mensajes: 424
Antigüedad: 8 años, 8 meses
Puntos: 12
Respuesta: Actulizar campo de DB al a vez que se descarga

Cita:
Iniciado por rbczgz Ver Mensaje
Esperaremos a ver qué te dice él para estar más claros, que él sabe más que yo de lejos.

Pero no comprendo....

bien dicen que el code se lee de arriba hacia abajo... ps..

ahi se deberia de ejecutar primero la consultas y luego descargar el programa, ya que ese es el orden no?,
  #15 (permalink)  
Antiguo 04/12/2015, 17:56
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Actulizar campo de DB al a vez que se descarga

Cita:
ahi se deberia de ejecutar primero la consultas y luego descargar el programa, ya que ese es el orden no?,
Sí, tiendes toda la razón: pero olvidas algo.

En dicho proceso imprimes el formulario siempre, siempre, siempre, siempre... no importa si estás forzando la descarga más abajo: siempre imprimes el formulario.

¿O me equivoco?

O bien, vamos a suponer que no imprimes el formulario ¿pero sí sabes lo que significa "salto de linea" o "espacio en blanco" verdad?

Eso es también un motivo que genera salida: y es posible que tus include/require imprimas o produzcas algún tipo de salida, y además entre el ?> y <?php que tienes en tu código se genera otro salto de linea.

Son muchas causas las que producen salida, ¿por qué no muestras el mensaje de error completo como te he pedido desde un principio?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: campo, tabla, vez
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:56.