Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema en array

Estas en el tema de Problema en array en el foro de PHP en Foros del Web. Tengo el siguiente código: Código PHP:      while( $mostrarvencimiento  =  mysql_fetch_assoc ( $mostrarfecha ))          {           if(isset( $_POST [ '3meses' ])){        $fechavencimiento  =  mysql_real_escape_string ( ...
  #1 (permalink)  
Antiguo 11/03/2016, 23:09
 
Fecha de Ingreso: enero-2016
Ubicación: Venezuela
Mensajes: 139
Antigüedad: 8 años, 3 meses
Puntos: 3
Problema en array

Tengo el siguiente código:
Código PHP:
    while($mostrarvencimiento mysql_fetch_assoc($mostrarfecha))
         {
          if(isset(
$_POST['3meses'])){
      
$fechavencimiento mysql_real_escape_string($_POST['fechavencimiento']);
      if(isset(
$fechavencimiento)){
      
$query3mesmysql_query("UPDATE empresas SET fechavencimiento = date_add(fechavencimiento,interval 3 month) where id = ".$mostrarvencimiento['id']." LIMIT 1");
      if(
$query3mes){
        echo 
"<script>alert('Se han agregado 3 meses más a ".$mostrarvencimiento['nombreempresa']."') </script> Será redirigido automaticamente..";

          
header('refresh:1; url=porcaducar');
           
      }
      else{
        echo 
"<script>alert('No se pudo extender el lapso de tiempo de ".$mostrarvencimiento['nombreempresa']." ')</script>";
      }
    }
    } 
Hago eso para poder extender 3 meses, pero la cosa es que en otro archivo tengo lo siguiente:
Código PHP:
while($mostrarvencimiento mysql_fetch_array($mostrarfecha))
         {
               echo
'
              <tr>
                <td>Id: '
.$mostrarvencimiento['id'].' / IdE: '.$mostrarvencimiento['idestado'].'</td>
                <td>'
.$mostrarvencimiento['nombreempresa'].'</td>
                <td>'
.$mostrarvencimiento['fechavencimiento'].'</td>
                <td>
                 '
.$mostrarvencimiento['telefonoadmin'].</td>
                <
td><form method="post" action="recibir.php"><input type="submit" value="3 Meses" name="3meses" id="3meses"><input type="submit" value="6 Meses" name="6meses" id="6meses">
                <
input type="submit" value="1 Año" name="12meses" id="12meses"></td></form>
              </
tr
Me muestra todo perfecto, como quiero, pero al momento de dar click que si a 3 meses me registra 3 meses a todas las empresas y yo solo quiero que me registre 3 meses a una sola, supongo que esto se debe al array o no se si sea por el form, ¿Alguna manera de solucionarlo?

Nota: No he duplicado post, solo que el tema del otro post ya lo solucione pero ahora tengo este problema
  #2 (permalink)  
Antiguo 12/03/2016, 11:41
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 9 meses
Puntos: 263
Respuesta: Problema en array

es que solo estas pasando la fecha de vencimiento y no la id del cliente al que quieres actualizar, al menos eso veo hasta alli, yo haria la petición con ajax para hacerla mas dinamica y pasaria los valores al php
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 13/03/2016, 13:09
 
Fecha de Ingreso: enero-2016
Ubicación: Venezuela
Mensajes: 139
Antigüedad: 8 años, 3 meses
Puntos: 3
Respuesta: Problema en array

Cita:
Iniciado por xfxstudios Ver Mensaje
es que solo estas pasando la fecha de vencimiento y no la id del cliente al que quieres actualizar, al menos eso veo hasta alli, yo haria la petición con ajax para hacerla mas dinamica y pasaria los valores al php
Lo intenté de esta manera:

Código PHP:
if(isset($_POST['3meses'])){
      
$fechavencimiento mysql_real_escape_string($_POST['id']);
      
$query3mesmysql_query("UPDATE empresas SET fechavencimiento = date_add(fechavencimiento,interval 3 month) where id = ".$mostrarvencimiento['id']." LIMIT 1");
      if(
$query3mes){
        echo 
"<script>alert('Se han agregado 3 meses más a ".$mostrarvencimiento['nombreempresa']."') </script> Será redirigido automaticamente..";

          
header('refresh:1; url=porcaducar');
           
      }
      else{
        echo 
"<script>alert('No se pudo extender el lapso de tiempo de ".$mostrarvencimiento['nombreempresa']." ')</script>";
      } 
Pero sigue pasando lo siguiente: Al momento de darle click a 3meses me cambia correctamente la fecha en la empresa, pero selecciona todas, no selecciona solo a la que le di click, no crees que sea por el form? la verdad ya no se que sea
  #4 (permalink)  
Antiguo 13/03/2016, 16:13
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 9 meses
Puntos: 263
Respuesta: Problema en array

Cita:
Iniciado por byrong Ver Mensaje
Lo intenté de esta manera:

Código PHP:
if(isset($_POST['3meses'])){
      
$fechavencimiento mysql_real_escape_string($_POST['id']);
      
$query3mesmysql_query("UPDATE empresas SET fechavencimiento = date_add(fechavencimiento,interval 3 month) where id = ".$mostrarvencimiento['id']." LIMIT 1");
      if(
$query3mes){
        echo 
"<script>alert('Se han agregado 3 meses más a ".$mostrarvencimiento['nombreempresa']."') </script> Será redirigido automaticamente..";

          
header('refresh:1; url=porcaducar');
           
      }
      else{
        echo 
"<script>alert('No se pudo extender el lapso de tiempo de ".$mostrarvencimiento['nombreempresa']." ')</script>";
      } 
Pero sigue pasando lo siguiente: Al momento de darle click a 3meses me cambia correctamente la fecha en la empresa, pero selecciona todas, no selecciona solo a la que le di click, no crees que sea por el form? la verdad ya no se que sea
dime aquí donde estas pasando la id????

Código PHP:
Ver original
  1. <td><form method="post" action="recibir.php"><input type="submit" value="3 Meses" name="3meses" id="3meses"><input type="submit" value="6 Meses" name="6meses" id="6meses">
  2.                 <input type="submit" value="1 Año" name="12meses" id="12meses"></td></form>

si no la estas pasando entonce te va a actualizar todo lo que llegue

deberia de ser algo asi:

Código PHP:
Ver original
  1. <form method="post" action="recibir.php"><input type="submit" value="3 Meses" name="3meses" id="3meses"><input type="submit" value="6 Meses" name="6meses" id="6meses">
  2.                 <input type="submit" value="1 Año" name="12meses" id="12meses"></td><input type="hidden" name="id" value="<?php echo $mostrarvencimiento['id']; ?>/></form>

alli estariamos pasando la id oculta en el form
__________________
[email protected]
HITCEL
  #5 (permalink)  
Antiguo 14/03/2016, 00:06
 
Fecha de Ingreso: enero-2016
Ubicación: Venezuela
Mensajes: 139
Antigüedad: 8 años, 3 meses
Puntos: 3
Respuesta: Problema en array

Cita:
Iniciado por xfxstudios Ver Mensaje
alli estariamos pasando la id oculta en el form
Bro lo puse como dijiste y me sigue enviando los dos:
Código PHP:
  <tr>
                <
td>Id'.$mostrarvencimiento['id'].' IdE'.$mostrarvencimiento['idestado'].'</td>
                <
td>'.$mostrarvencimiento['nombreempresa'].'</td>
                <
td>'.$mostrarvencimiento['fechavencimiento'].'</td>
                <
td>
                 
'.$mostrarvencimiento['telefonoadmin'].'</td>
                <
td><form method="post" action="recibir.php"><input type="submit" value="3 Meses" name="3meses" id="3meses"><input type="submit" value="6 Meses" name="6meses" id="6meses">
                <
input type="submit" value="1 Año" name="12meses" id="12meses"><input type="hidden" name="id" value="'.$mostrarvencimiento['id'].';"></td></form>
              </
tr
La Query está así:
Código PHP:
 while($mostrarvencimiento mysql_fetch_assoc($mostrarfecha))
         {
          if(isset(
$_POST['3meses'])){
      
$fechavencimiento mysql_real_escape_string($_POST['id']);
      
$query3mesmysql_query("UPDATE empresas SET fechavencimiento = date_add(fechavencimiento,interval 3 month) where id = ".$mostrarvencimiento['id']." LIMIT 1"); 
Que puedo hacer? estoy recibiendo de manera incorrecta en la query?
  #6 (permalink)  
Antiguo 14/03/2016, 05:09
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 9 meses
Puntos: 263
Respuesta: Problema en array

esto????? LIMIT 1

estas enviado un ; en el formulario entonce la id que por ejemplo deberia de ser 12 esta llegando a tu consulta como 12; por alli podría haber problemas, lo otro es que no veo porque hacews un while en la consulta de actualización si solo vas a actualizar un registro, no deberias.

Simplifica la consulta y el formulario con ajax, te coloco este ejemplo y adaptalo a tu necesidad, de esa maner:

Código PHP:
Ver original
  1. <tr>
  2. <td>Id: '.$mostrarvencimiento['id'].' / IdE: '.$mostrarvencimiento['idestado'].'</td>
  3. <td>'.$mostrarvencimiento['nombreempresa'].'</td>
  4. <td>'.$mostrarvencimiento['fechavencimiento'].'</td>
  5. <td>
  6. '.$mostrarvencimiento['telefonoadmin'].'</td>
  7.  
  8. <td>
  9. <select name="periodo" id="periodo'.$mostrarvencimiento['id'].'">
  10.     <option value="3 month">3 Meses</option>
  11.     <option value="6 month">6 Meses</option>
  12.     <option value="1 year">1 Año</option>
  13. </select>
  14.  
  15. <button type="button" name="actualizar" id="'.$mostrarvencimiento['id'].'" onClick="actualiza(this.id)">Actualizar</button>
  16. </td>
  17. </tr>

el ajax sería:

Código Javascript:
Ver original
  1. function actualiza(X){
  2.  
  3. var periodo = document.getElementById('periodo'+X).value;
  4.  
  5.         $.ajax({
  6.             url: 'recibir.php?id='+X+'&periodo='+periodo,
  7.             type: 'get',
  8.             success: function (response) {
  9.  
  10.                 alert("El registro "+X+" fue actualizado con éxito");
  11.  
  12.             }
  13.         });
  14.  
  15.     }

y la consulta php que actualiza :

Código PHP:
Ver original
  1. if(isset($_POST['id'])){
  2.       $id = mysql_real_escape_string($_GET['id']);//recibimos la id de la empresa
  3.       $vencimiento = date_add($id,"interval ".$_GET['periodo']);//llamamos la funcion y pasamos el periodo seleccionado
  4.      
  5.       $query= mysql_query("UPDATE empresas SET fechavencimiento = $vencimiento where id = '$id'");
  6. }
__________________
[email protected]
HITCEL

Última edición por xfxstudios; 14/03/2016 a las 05:27
  #7 (permalink)  
Antiguo 14/03/2016, 13:26
 
Fecha de Ingreso: enero-2016
Ubicación: Venezuela
Mensajes: 139
Antigüedad: 8 años, 3 meses
Puntos: 3
Respuesta: Problema en array

Cita:
Iniciado por xfxstudios Ver Mensaje
Código PHP:
Ver original
  1. if(isset($_POST['id'])){
  2.       $id = mysql_real_escape_string($_GET['id']);//recibimos la id de la empresa
  3.       $vencimiento = date_add($id,"interval ".$_GET['periodo']);//llamamos la funcion y pasamos el periodo seleccionado
  4.      
  5.       $query= mysql_query("UPDATE empresas SET fechavencimiento = $vencimiento where id = '$id'");
  6. }
Gracias por responder bro, hice lo que dijiste y todo perfecto, pero cuando le doy 3 meses y actualizar me manda 6 meses a la base de datos, si le doy a 1 año me actualiza dos y así..

Estuve moviendo y en la consulta que tengo para que solo me muestre las que le faltan 30 Días y creo que eso tenga algo que ver, acá la dejo, es la primera y eso es lo que tengo en recibir.php:

Código PHP:
  $SQL mysql_real_escape_string("select * from empresas where fechavencimiento between curdate() and date_add(curdate(), interval 30 day) ORDER by fechavencimiento");
  
$mostrarfecha mysql_query($SQL);
  
$sentence $conexion -> prepare($SQL);
  
$sentence -> execute();

   
  
$results $sentence -> fetchAll();{
         while(
$mostrarvencimiento mysql_fetch_assoc($mostrarfecha)
         {
          if(isset(
$_GET['id'])){ 
      
$id mysql_real_escape_string($_GET['id']);//recibimos la id de la empresa
      
$vencimiento "date_add(fechavencimiento,interval ".$_GET['periodo'].")";//llamamos la funcion y pasamos el periodo seleccionado
      
      
$querymysql_query("UPDATE empresas SET fechavencimiento = $vencimiento where id = '$id'"); 

  #8 (permalink)  
Antiguo 14/03/2016, 14:12
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 5 meses
Puntos: 175
Respuesta: Problema en array

Porque no comentas la linea donde hace la inserción, para que no haga nada, e imprimes las variables a ver que te van trayendo... de otra es dificil saber como depurar tu código... hazlo por partes como Jack el Destripador...
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #9 (permalink)  
Antiguo 14/03/2016, 14:34
 
Fecha de Ingreso: enero-2016
Ubicación: Venezuela
Mensajes: 139
Antigüedad: 8 años, 3 meses
Puntos: 3
Respuesta: Problema en array

Cita:
Iniciado por loncho_rojas Ver Mensaje
Porque no comentas la linea donde hace la inserción, para que no haga nada, e imprimes las variables a ver que te van trayendo... de otra es dificil saber como depurar tu código... hazlo por partes como Jack el Destripador...
Lo que comento xfx lo hice, y pues mi problema era que al enviar se actualizaban todas las empresas y no solo la que le daba click, y ahora el problema es que al darle click por ejemplo a 3 meses en la base de datos se registran 6 meses, deje el código completo de lo que se recibe porque no se que pueda ser...
  #10 (permalink)  
Antiguo 15/03/2016, 00:13
 
Fecha de Ingreso: enero-2016
Ubicación: Venezuela
Mensajes: 139
Antigüedad: 8 años, 3 meses
Puntos: 3
Respuesta: Problema en array

Epa ayudenme :(

Etiquetas: fecha, mysql
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 12:12.