Foros del Web » Programando para Internet » PHP »

Problema catalogo + foreach + jqueeery!

Estas en el tema de Problema catalogo + foreach + jqueeery! en el foro de PHP en Foros del Web. Hola gente, estoy con una gran duda. En pocas palabras y concisamente: Hice un catalogo de productos, donde hay una opcion de generar una lista ...
  #1 (permalink)  
Antiguo 10/05/2012, 08:51
Avatar de NnikoO  
Fecha de Ingreso: agosto-2008
Ubicación: Rosario
Mensajes: 245
Antigüedad: 15 años, 8 meses
Puntos: 0
Pregunta Problema catalogo + foreach + jqueeery!

Hola gente, estoy con una gran duda. En pocas palabras y concisamente:
Hice un catalogo de productos, donde hay una opcion de generar una lista de estos para enviar por mail y ser presupuestados.
Esto anda perfecto, las listas se guardan en .txt independientes segun la sesion del usuario y luego se envian por mail.
Antes de enviar aparece la lista de manera vertical, con la opcion de borrar productos de a uno por si hubo algun error en la eleccion.

El problema, es que solo permite borrar el que este situado arriba de todos, y asi sucesivamente a medida que se vayan borrando. No le puedo encontrar la vuelta! La onda es que se pueda borrar el que se quiera, sea cual sea su posicion en la lista!
Dejo los codigos para que puedan ayudarme.

Seccion donde se muestra la lista antes de ser enviada con la opcion de borrarlos:
Código PHP:
<script type="text/javascript">
$(document).ready(function() {
  $('#borrarlistado').click(function() {
         $.ajax({
              type:'GET',
              url:'script/borratxt.php',
              data:'producto=' + $('#nombreproducto').val(),
              cache:false,
              success: function(recarga) {
                   $("#recargaprod").html(recarga);
              }    
         });
  });
});
</script>

<div id="recargaprod">
                        <?php 
                        
                        
if($listado != ''){
                            list(
$ip1$ip2$ip3$ip4) = explode("."$_SESSION["user"]);
                            
$ip $ip1.$ip2.$ip3.$ip4;
                            
                            
$dir "txt/";
                            
$extension ".txt";
                            
$archivo $ip.$extension;
                            
$locacion $dir.$archivo;
                            
                                
$filas file($locacion);  
                                
                                echo 
"<label>Listado de productos:</label> <br /><br />";
                                
                                
                                foreach(
$filas as $v){
                                    
$datos explode("[\t\n\r; ]+",$v);
                                    foreach(
$datos as $dato){
                                        
                                        echo 
"<div class='listadoproductos'><a id='borrarlistado'><img src='images/borrar.gif' width='10' height='10' border='0'/></a> ".$dato."<input type='hidden' value='".$dato."' id='nombreproducto'/></div>";
                                    }
                                }
                                
                        }
                                
                        
?>
                        </div>
Y este es el codigo que se encarga de borrar el respectivo producto cargado en el .txt:

Código PHP:
<?php
include("../control.php");

$nombreproducto $_GET['producto'];

list(
$ip1$ip2$ip3$ip4) = explode("."$_SESSION["user"]);
$ip $ip1.$ip2.$ip3.$ip4;

$dir "../txt/";
$extension ".txt";

$archivo $ip.$extension;
$locacion $dir.$archivo;


$texto '';
$cadena_a_borrar $nombreproducto;
$nombre_archivo $locacion;
$lineas file($nombre_archivo);
 foreach (
$lineas as $linea) {
    if (!
strstr($linea$cadena_a_borrar)) {
        
$texto .= $linea;
    }
}
 
$f fopen($nombre_archivo'w');
fwrite($f$texto);
fclose($f);
?> 

<head>
<script type="text/javascript">
$(document).ready(function() {
  $('#borrarlistado').click(function() {
         $.ajax({
              type:'GET',
              url:'script/borratxt.php',
              data:'producto=' + $('#nombreproducto').val(),
              cache:false,
              success: function(recarga) {
                   $("#recargaprod").html(recarga);
              }    
         });
  });
});
</script>
</head>

<label>Listado de productos:</label> <br /><br />
<?php 
    $filas 
file($locacion);  
    foreach(
$filas as $v){
    
$datos explode("[\t\n\r; ]+",$v);
    foreach(
$datos as $dato){
        echo 
"<div class='listadoproductos'><a id='borrarlistado'><img src='images/borrar.gif' width='10' height='10' border='0'/></a> ".$dato."<input type='hidden' value='".$dato."' id='nombreproducto'/></div>";
                                    }
                                }
?>
Espero q puedan ayudarme porque es lo ultimo que me falta, y me esta trabando demasiado, acercandose ya la fecha de entrega del trabajo final.
Muchas gracias de antemano!

Un abrazo.

<< niko >>
  #2 (permalink)  
Antiguo 10/05/2012, 09:58
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Problema catalogo + foreach + jqueeery!

El error que tienes viene de que hay tantos inputs con id='nombreproducto' como productos.

Una solucion es crear un atributo nomprod dentro del mismo <a> y cargarla con el $dato.
Luego, en jquery, buscas dicho atributo en This.


ahí está lo que te digo.

en php:
Código PHP:

echo "<div class='listadoproductos'><a id='borrarlistado' nomprod='$dato'><img src='images/borrar.gif' width='10' height='10' border='0'/></a> ".$dato."<input type='hidden' value='".$dato."' id='nombreproducto'/></div>"
en el script jquery
Código PHP:
data:'producto=' + $(this).attr('dato'), 

Saludos!

Etiquetas: borrando, catalogo, foreach, productos, recarga
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 18:11.