Foros del Web » Programando para Internet » PHP »

Para corregir el error

Estas en el tema de Para corregir el error en el foro de PHP en Foros del Web. Hola a todos, estoy teniendo un problema con eliminar un producto de un carrito de compras. En verCarrito.php tengo lo siguiente: Código PHP: < a href ...
  #1 (permalink)  
Antiguo 18/07/2010, 11:06
 
Fecha de Ingreso: agosto-2007
Mensajes: 114
Antigüedad: 16 años, 8 meses
Puntos: 1
Exclamación Para corregir el error

Hola a todos, estoy teniendo un problema con eliminar un producto de un carrito de compras.
En verCarrito.php tengo lo siguiente:
Código PHP:
<a href='javascript:eliminar(".$item['id'].");' title='Eliminar producto'><img src='img/delete.gif'></a
y en la barra del menú, donde está el espacio para el carrito tengo lo siguiente:
Código:
<script>
        function eliminar(id)
        {
        // para no eliminar directamente paso por esta funcion
        if(confirm("Estas seguro de eliminar este producto?"))
            {
            window.location="eliminarItem.php?id="+id;
            }
        }
</script>
Ahora, cuando llamo a eliminarItem.php que contiene:
Código PHP:
<?php
session_start
();
extract($_GET);
$carro $_SESSION['carrito'];
unset(
$carro($id));
$_SESSION['carrito'] = $carro;
header("location:index.php");
?>
Me aparece en la url: http://localhost/miSitio/eliminarItem.php?id=6 y en la página Fatal error: Can't use function return value in write context in C:\xampp\htdocs\miSitio\eliminarItem.php on line 5, donde la 5 es el unset.
Alguien me puede decir qué está mal?
Gracias, desde ya.
  #2 (permalink)  
Antiguo 18/07/2010, 11:30
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Para corregir el error

unset no se usa de esa manera..

por favor, lee el manual
http://php.net/unset

Código PHP:
$foo = array(
  
=> 'bar',
  
=> 'candy',
);
unset(
$foo[0]); 
pon atención en que tu usas paréntesis, cuando deben ser corchetes: después de todo es un array...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 19/07/2010, 17:22
 
Fecha de Ingreso: agosto-2007
Mensajes: 114
Antigüedad: 16 años, 8 meses
Puntos: 1
Respuesta: Para corregir el error

estuve viendo el manual, pero al menos mi intención era borrar de una matriz que está en carrito una variable que es el id de un producto.
Puede que esté equivocando la interpretación?
  #4 (permalink)  
Antiguo 19/07/2010, 17:26
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Para corregir el error

Cita:
Iniciado por Lorsui Ver Mensaje
estuve viendo el manual, pero al menos mi intención era borrar de una matriz que está en carrito una variable que es el id de un producto.
Puede que esté equivocando la interpretación?
tu interpretación es correcta: la implementación no

a todo esto... ¿ya te resulto algo o tienes problemas?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 19/07/2010, 17:58
 
Fecha de Ingreso: agosto-2007
Mensajes: 114
Antigüedad: 16 años, 8 meses
Puntos: 1
Respuesta: Para corregir el error

Sigo sin poder solucionarlo, estuve cambiando paréntesis, pero todo sigue igual, con nuevos errores, con lo cuál no sé para dónde ir.
  #6 (permalink)  
Antiguo 19/07/2010, 18:10
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Para corregir el error

Cita:
Iniciado por Lorsui Ver Mensaje
Sigo sin poder solucionarlo, estuve cambiando paréntesis, pero todo sigue igual, con nuevos errores, con lo cuál no sé para dónde ir.
claro, el problema consiste en el uso de unset() con el cual puedes eliminar variables completas, o índices en caso de arreglos...

ahora, volviendo al ejemplo anterior:
Código PHP:
$foo = array(
  
=> 'bar',
  
=> 'candy',
);
unset(
$foo[0]);
print_r($foo); 
te pido que lo ejecutes, y analices... la clave de tu problema esta ahí mismo, aunque un poco mas simplificado...

otra es que nos muestres lo que llevas hecho, como lo haces, lo que planeas... y por supuesto: los mensajes de error completos...

así podremos orientarte mas sanamente... (:
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 20/07/2010, 19:01
 
Fecha de Ingreso: agosto-2007
Mensajes: 114
Antigüedad: 16 años, 8 meses
Puntos: 1
Respuesta: Para corregir el error

Bueno...aunque estuve probando lo imposible, evidentemente hay algo que no estoy llegando a comprender, así que por eso aquí están los archivos!!!
Gracias y espero...sanamente :)

El archivo catalogo.php:
Código PHP:
<script>
function comprarProducto(item) {
    var pars="item="+item;
    var myAjax = new Ajax.Updater("divCarrito", "agregarAlCarro.php",{method: 'get', parameters: pars});    
}

</script>
<?php
  
    
if($_GET["search_query"]!=""){
        
$catalogo getCatalogoConEjemplo($_GET["search_query"]);
    }elseif(
$_GET["orden"]!=""){
        
$catalogo getPrecio($_GET["orden"]);
    }else{
        
$catalogo getCatalogo($_GET["cat"]);
    }
    while(
$registro mysql_fetch_array($catalogo))
    {
        echo
    
'<div class="contenedor">'.
        
'<a href="imgCarrito/'.$registro["foto"].'"  rel="lightbox[roadtrip]" title="my caption"><img width="135" height="80" src="imgCarrito/'.$registro["foto"].'"></a><br><br>'.
        
'<b>'.$registro["nombre"].'</b><br>
    Marca: '
.$registro["marca"].'<br>
        Precio: $<b>'
.$registro["precio"].'</b><br><br>
    <a href="javascript:comprarProducto('
.$registro["id"].');">Comprar</a>
    <a href="producto.php?prod='
.$registro["id"].'">+Info</a>

    </div>'
    
;
    }

?>
    
<? include("sidenav.php");?>
En agregarAlCarro.php:
Código PHP:
<?
include("funciones.php");
if(
$_GET["item"])
{
    
addCarrito($_GET["item"]);
    
}
include(
"verCarrito.php");
?>
En el menu(sidenav) donde se encuentra el carrito sidenav.php:
Código PHP:
<script>

function 
eliminar() {
    var 
myAjax = new Ajax.Updater("divCarrito""eliminarItem.php",{method'get'});    
}

function 
verCarrito() {
    var 
myAjax = new Ajax.Updater("divCarrito""verCarrito.php",{method'get'});    
}

verCarrito();

</script>


<script>
        function eliminar(id)
        {
        if(confirm("Estas seguro de eliminar este producto?"))
            {
        window.location="eliminarItem.php?id="+id;
            }
        }
</script>

<div class="sidenav"> 
    <h2>Mi Carrito  </h2>
    <div id="divCarrito">No hay compras</div>
    Comprar con:<br>
  

</div> 
Y para ver el carrito verCarrito.php:
Código PHP:
<?
session_start
();
if(
$_SESSION["carrito"])
{
    echo 
"<table style='margin-left:20px;'>";
    foreach(
$_SESSION["carrito"] as $item)
    {
        echo 
"<tr>
            <td>"
.$item['nombre']."</td>
            <td align='right'>"
.$item['precio']."</td>
            <td><a href='javascript:eliminar("
.$item['id'].");' title='Eliminar producto'>X</a></td>
            </tr>"
;
            
$total+= $item["precio"];
    }
    echo 
"<tr><td>Total</td><td><b>".number_format($total,2)."</b></td></tr>";
    echo 
"</table>";
}
?>
Y para eliminar tengo el eliminarItem.php:
Código PHP:
<?php
session_start
();
$carro $_SESSION["carrito"];
unset(
$carro("id");
$_SESSION['carrito'] = $carro;
header("location:index.php");
?>
Creo que no me estoy olvidando nada más. Cualquier cosa avisenme.
Gracias!!!
  #8 (permalink)  
Antiguo 20/07/2010, 21:01
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Para corregir el error

@pateketrueke ya te habia dicho que lo estabas haciendo mal, de hecho, en el ultimo código publicado esta peor que el primero, la forma correcta de realizar un unset es como el te comento
Código PHP:
Ver original
  1. $array = array(0=>'hola1',1=>'hola2',2=>'hola2');
  2.  
  3. unset($array[0]); //esta es la forma correcta, ve que el indice esta dentro de corchetes "[ ]" no dentro de paréntesis
  4. print_r($array);
  5. //lo que daria hola2 y hola3
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #9 (permalink)  
Antiguo 21/07/2010, 11:40
 
Fecha de Ingreso: agosto-2007
Mensajes: 114
Antigüedad: 16 años, 8 meses
Puntos: 1
Respuesta: Para corregir el error

Bueno, evidentemente el código empeorado es el resultado de buscar una solución que no encuentro. Y aunque aplico los consejos que me dan, no lo llego a resolver.
Gracias igualmente.
  #10 (permalink)  
Antiguo 21/07/2010, 14:49
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Para corregir el error

Pues no se que problema puede ser, para tu necesidad el código siguiente funciona a la perfección

Código PHP:
Ver original
  1. <?php
  2. $id = $_GET['id'];
  3. $carro = $_SESSION["carrito"];
  4. unset($carro[$id]);
  5. $_SESSION['carrito'] = $carro;
  6. header("location:index.php");
  7. ?>
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #11 (permalink)  
Antiguo 21/07/2010, 16:59
 
Fecha de Ingreso: agosto-2007
Mensajes: 114
Antigüedad: 16 años, 8 meses
Puntos: 1
Respuesta: Para corregir el error

Gracias por tu respuesta Nemutagk, no sé que estaré haciendo mal porque igualmente, con ese cambio me tira el siguiente error:
Fatal error: Can't use function return value in write context in C:\xampp\htdocs\miSitio\eliminarItem.php on line 5
Pero si me decís que así está correcto el código, el problema debe estar en otro lado. Así que voy a investigar, con más seguridad, en los otros php.
Gracias!!!
  #12 (permalink)  
Antiguo 21/07/2010, 17:15
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Para corregir el error

Pues no tengo idea, el error que indicas solo lo eh visto cuando se implementa mal por ejemplo un IF
Código PHP:
Ver original
  1. if (strlen($var) = 4) {    //Esto te mandara el error que has comentado
  2. }

Sin embargo para el código que tienes no tengo idea que puede ser =/
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)

Etiquetas: corregir
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 08:47.