Foros del Web » Programando para Internet » PHP »

Eliminar un numero de un array_sum?

Estas en el tema de Eliminar un numero de un array_sum? en el foro de PHP en Foros del Web. Hola Buen Dia.... Quisiera que me colaboraran con un inconveniente.... pagina_uno.php....aqui uso unset($_SESSION['valores']); pero elimina todos los numeros.. Código PHP: <?php          include ( 'config/control.php' ); ...
  #1 (permalink)  
Antiguo 11/07/2009, 08:46
 
Fecha de Ingreso: julio-2009
Mensajes: 6
Antigüedad: 14 años, 9 meses
Puntos: 0
Eliminar un numero de un array_sum?

Hola Buen Dia....

Quisiera que me colaboraran con un inconveniente....

pagina_uno.php....aqui uso unset($_SESSION['valores']); pero elimina todos los numeros..


Código PHP:



<?php    
    
include ('config/control.php');
    
$con = new control;             //variable de la clase control.php
    
$conexion $con->conectar();//variable local        
    //$cod_total=$_POST['txt_cod_per'];
    
$total_pro=$_POST['txt_total'];
//    
    
    
    
    //------------------------------------------------------------------------------------------------------------------
    
if($_POST['btn_guardar'])
    {
        if(
$total_pro==''  )
        {            
            echo 
"<script language=javascript>alert('Faltan llenar campos');location.href='registrar_usuario.php';</script>";    
        }
        else         
        {    
            
$sql="INSERT INTO total VALUES('', $total_pro)";
            
//echo  $sql;
            
$con->insertar=mysql_query($sql,$conexion);
            echo 
"<script language=javascript>alert('total guardado');location.href='suma.php';</script>";
            unset(
$_SESSION['valores']);
            
            
            
        }
    }
    
//---------------------------------------------------------------------------------------------------------------------------    
    

    
?> 





<html>
<head>
 <title></title>
</head>

<body>


<form name="form1" method="post" action="pagina_dos.php">
  <p>
    Cantidad:
      <input name="cantidad" type="text" value="">
    <input type=submit name=enviar value=envia>
    <label>    </label>
    <input name=numero type=hidden value=1>
    <select name=codigo>
      <option>seleccionar</option>
      <option value=315>dulce</option>
      <option value=316>cafe</option>
      <option value=317>chocolate</option>
    </select>
</p>
  <p>&nbsp;</p>
  <p>
  <label>
    <div align="center">TOTAL
      <input name="txt_total" type="text" id="txt_total" value="<? echo $total?>" />
    </label>
  <p></p>
  <p align="center">
    <input type="submit" name="btn_guardar" id="btn_guardar" value="Guardar" />
  </p>
</form>


<form name="form2" method="post" action="pagina_dos.php">
  <p>
    Eliminar:
      <input name="elimina" type="text" value="">
    <input type=submit name=enviarr value=enviar_eliminar>
    <label>    </label>
  </p>
  <p>&nbsp;</p>
  <p>
  <label>
    <div align="center">
  </label>
  <p></p>
  <p align="center">&nbsp;</p>
</form>


  <p>
    <label></label>
  </p>

</body>

</html>

pagina_dos.php
Código PHP:

<?php 
session_start
(); 
$_SESSION['valores'][] = $_POST['cantidad'];


$codigo=$_POST['codigo'];
$num=$_POST['elimina']; 

switch(
$_POST['numero']) 

        case 
1
              foreach (
$_SESSION['valores'] as $subtotal
              { 
                 echo 
$subtotal."<br>";
               } 

             
$total=array_sum($_SESSION['valores']); 
             echo 
"---------------------<br>"
             echo 
$total
              
                        
        

         include(
"paginauno.php"); 
         
    
     
    
         
    
     } 
     
     
    
     
?> 




<html>
<head>
 <title></title>
</head>

<body>

<p>&nbsp;</p>
<p>&nbsp;</p>
</body>

</html>

El anterior codigo son dos paginas php...que suman unos valores ingresados en una caja de texto...llamada (cantidad)..y cada vez que si engresa un nuevo valor se va sumando..con el array_sum..


Quisiera saber si se puede eliminar o quitar un valor de la lista para que el total se le reste.....?

Algo mas claro...

tengo estos valor ingresados por caja de texto por un usuario.
1
2
5
-----------
total = 8....



Quisiera saber si se puede quitar cualquier numero ingresado por el usuario en una caja de texto (elimina)......en este caso el usuario digito el numero 2 en caja de texto(elimina) y el total quedaria modificado dando como resultado 6...

Espero gratas respuestas.......Gracias de antemano....
  #2 (permalink)  
Antiguo 11/07/2009, 14:19
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Eliminar un numero de un array_sum?

Claro, puedes usar unset($_SESSION['valores']['el_index_que_quieras_borrar']); si no sabes que index quieres borrar puedes usar array_search.

Saludos.

Tema trasladado desde PHP Orientado a Objetos
  #3 (permalink)  
Antiguo 12/07/2009, 11:00
 
Fecha de Ingreso: julio-2009
Mensajes: 6
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Eliminar un numero de un array_sum?

Gracias por tu respuesta...



El unset($_SESSION['valores']); que tengo en pagina_uno.php lo necesito tambien para que se active cuando el usuario da click en el boton guardar y limpia todos los numeros...ese esta bien...no nay problema con este...

Lo que quiero es agregarle es la otra parte de eliminar un valor cualquiera ingresado por usuario....
Pero soy nuevo en este tema de php y quisiera saber donde puedo ubicar este codigo en mis paginas...array_search(); y con que parametros ..

Gracias por tu tiempo.....
  #4 (permalink)  
Antiguo 12/07/2009, 12:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Eliminar un numero de un array_sum?

Revisa el Manual de PHP, array_serach() te devuelve la llave de tu arreglo y ese lo puedes usar para saber que borrar usando unset().

Saludos.
  #5 (permalink)  
Antiguo 14/07/2009, 00:45
 
Fecha de Ingreso: julio-2009
Mensajes: 6
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Eliminar un numero de un array_sum?

He probrado este codigo pero no me da. q estoy haciendo mal?

Código PHP:

$cadena
$_POST['elimina']; //elimina nombre de la caja de texto
$array explode (" ",$cadena);
print_r($cadena);
$clave array_search($cadena,$array);
unset(
$_SESSION['valores'][$clave]);
$final=implode(" "$array); 

Gracias por tu ayuda...
  #6 (permalink)  
Antiguo 14/07/2009, 09:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Eliminar un numero de un array_sum?

Mmmm pues la razon es porque estas usando la misma $cadena, la conviertes a un array y luego buscas eliminarla del mismo array (cosa que nunca va a pasar).

Saludos.
  #7 (permalink)  
Antiguo 15/07/2009, 00:08
 
Fecha de Ingreso: julio-2009
Mensajes: 6
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Eliminar un numero de un array_sum?

Muchas gracias por tu ayuda..GatorV

$cadena= $_POST['elimina']; //elimina nombre de la caja de texto
$clave = array_search($cadena,$_SESSION['valores']);
unset($_SESSION['valores'][$clave]);

Man con este codigo logro eliminar el valor deseado, pero cuando presiono una vez el btn_eliminar carga un espacio en blanco en mi lista de valores asi...

4
3
6


--------
13

y dando click una segunda vez en btn_eliminar si elimina el valor.....quisiera saber como hago para que elimine el valor presionando una vez el btn_eliminar y sin que genere espacio en blanco...

  #8 (permalink)  
Antiguo 15/07/2009, 09:35
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Eliminar un numero de un array_sum?

Pues habría que ver como es que muestras los valores ya que el código que pones solo lo borra no agrega un espacio en blanco.

Saludos.
  #9 (permalink)  
Antiguo 15/07/2009, 17:55
 
Fecha de Ingreso: julio-2009
Mensajes: 6
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Eliminar un numero de un array_sum?

Pagina uno

Código PHP:
<?php    
    
include ('config/control.php');
    
$con = new control;             //variable de la clase control.php
    
$conexion $con->conectar();//variable local        
    
    
$total_pro=$_POST['txt_total'];
    
    

        
//------------------------------------------------------------------------------------------------------------------
    
if($_POST['btn_guardar'])
    {
        if(
$total_pro==''  )
        {            
            echo 
"<script language=javascript>alert('Faltan llenar campos');location.href='registrar_usuario.php';</script>";    
        }
        else         
        {    
            
$sql="INSERT INTO total VALUES('', $total_pro)";
            
//echo  $sql;
            
$con->insertar=mysql_query($sql,$conexion);
            echo 
"<script language=javascript>alert('total guardado');location.href='suma.php';</script>";
            unset(
$_SESSION['valores']);
        
//    unset($_SESSION['valores'][array_search()]); 
        
            
            
            
        
}
    }
    
//---------------------------------------------------------------------------------------------------------------------------    
    

    
?> 

<?php

$borra
=$_POST['elimina'];

if(
$_POST['btn_eliminar'])
    {
        if(
$borra=='' )
        {            
            echo 
"<script language=javascript>alert('Por Favor ingrese VALOR a borrar ');location.href='suma.php';</script>";    
        }
        else         
        {    
            
           
//$borra= $_POST['elimina'];
           
           
$clave array_search($borra$_SESSION['valores']);
           unset(
$_SESSION['valores'][$clave]);            
            
            
        }
    }




//echo $total;

?>


<html>

<head>
 <title> </title>
</head>

<body>


<form name="form1" method="post" action="suma1.php">
  <p>
    Cantidad:
      <input name="cantidad" type="text" value="">
    <input type=submit name=enviar value=envia>
    <label>    </label>
    <input name=numero type=hidden value=1> 
    <label> 
    <div align="center"><br>
      <br>
      <p>
      <label>
      <div align="center">
      <div align="left">Eliminar Valor:
        <input name="elimina" type="text" value="">
        <input type="submit" name="btn_eliminar" id="btn_eliminar" value="eliminar" />
      </div>
      </label>
      <div align="center">TOTAL
        <input name="txt_total" type="text" id="txt_total" value="<? echo $total?>" />
        <input type="submit" name="btn_guardar" id="btn_guardar" value="Guardar" />
      </div>
    
</form>

</body>
</html>
Pagina dos.

Código PHP:
<?php
 
session_start
(); 
$_SESSION['valores'][] = $_POST['cantidad'];
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
</head>

<body>
<table width="60%" border="0" align="center">
  <tr>
    <td><form id="form1" name="form1" method="post" action="">
      <table width="100%" border="0">
        <tr>
          <td colspan="2">
         <?php





//$codigo=$_POST['codigo'];


switch($_POST['numero']) 

        case 
1
              foreach (
$_SESSION['valores'] as $subtotal
              { 
                 echo 
$subtotal."<br>";
                 
               } 

             
$total=array_sum($_SESSION['valores']); 
             echo 
"---------------------<br>"
             echo 
$total
              
            


         include(
"suma.php"); 
         
            
         
    
     } 
    
     
?> </td>
          </tr>
        <tr>
          <td colspan="2">&nbsp;</td>
          </tr>
        
        <tr>
          <td colspan="2">&nbsp;</td>
          </tr>
        </table>
    </form></td>
  </tr>
  
  <tr>
    <td align="center">&nbsp;</td>
  </tr>
  <tr>
    <td align="center" bgcolor="#003366"><p><br />
    </p></td>
  </tr>
</table>
</body>
</html>
Este es el codigo cuando intento eliminar inserta un espacio en blanco y la segunda vez si lo elimina no se donde tenga el error...Gracias por tu colaboracion....
  #10 (permalink)  
Antiguo 15/07/2009, 21:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Eliminar un numero de un array_sum?

Pues creo el problema es que al inicio de la pagina donde despliegas la informacion tienes:
$_SESSION['valores'][] = $_POST['cantidad']; que siempre se va a ejecutar aunque POST no tenga valores y puede ser el culpable de agregarte el espacio en blanco.

Saludos.
  #11 (permalink)  
Antiguo 16/07/2009, 00:00
 
Fecha de Ingreso: julio-2009
Mensajes: 6
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Eliminar un numero de un array_sum?

Bueno no se si era la la solucion mas apropiada pero ya logre q no me salga el espacio en blanco con un isset()...

Perdona q te moleste tanto, pero tengo otro problema q tambien se me venia presentando, pense que se hiba a solucionar junto con el el problema de espacio en blanco pero no fue asi. Este es el error: Haciendo pruebas de eliminar un numero que no se econtraba en la lista, para ver si funcionaba correctamente me sale un error y es que si el numero no se encuentra en la lista lo que borra es siempre el primer numero de la lista..cosa q no debe pasar..

Y otra cosa tambien que se venia presentando es que para eliminar un numero lo encuentra pero no hace nada cuando le doy por primera vez en btn_eliminar,( no lo elimina); pero cuando le doy click por segunda vez a btn_eliminar. ahi si lo elimina..no se que puede estar pasando....

GatorV. Gracias por tu tiempo, he corregido muchos erroes con tu ayuda, espero me sigas colaborando....te estaria muy agradecido.
  #12 (permalink)  
Antiguo 16/07/2009, 15:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Eliminar un numero de un array_sum?

Intenta simplificar tu lógica, ya que como esta muy enredada y es por eso que te causa los errores, haz un diagrama de flujo de como es que debe de ser el proceso y con eso vas a poder hacer las cosas más sencillas.

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 21:11.