Foro oficial de PHP

Esta es la salida del arreglo:
PHP:
<table width='80%'> <form action="productos.eliminar.php" method="post"> <tr>   <td><input type="checkbox" id="seleccion" name="seleccion[]" value="1"></td>   <td>1</td>   <td>Osito Hugo con globo</td>   <td>20 cm. felpa marron corbata azul toko</td> </tr> <tr>   <td><input type="checkbox" id="seleccion" name="seleccion[]" value="2"></td>   <td>2</td>   <td>Arreglo Princesa</td>   <td>Rosas y claveles jarron vidrio</td> </tr>
Mi funcion eliminar() es:

PHP:
    function eliminar($idProducto){
       $query = "DELETE FROM producto WHERE id_producto in (".$idProducto.")";
       if (!$ret){
         Debug::println("No se pudo ejecutar la eliminación: " . $query);
         return false;
      }
      return true;
    }
Y sale esto :
PHP:
[B]No se pudo ejecutar la eliminación: DELETE FROM producto WHERE id_producto in (Array)[/B]
Es lo mismo si cambio la variable $idProducto por $seleccion.
:muerto:
 
Cuando pones

PHP:
$query = "DELETE FROM producto WHERE id_producto in (".$idProducto.")

$idProducto debe ser un String no un Array. Más o menos así:

PHP:
$idProducto =  "1510, 2324, 1430, 4257";

Es decir, cuando llegues a

PHP:
<?php
require_once "../conf.php";
$dao = new ProductoDAO();
$ret = $dao->eliminar($_POST['seleccion']);
header("Location: principal.php");
?>

$_POST['seleccion'] debes pasarlo a un String primero.
 
De array a string.... entonces quedaría así??

PHP:
<?php
require_once "../conf.php";
$dao = new ProductoDAO();

 
$valor=$_POST['seleccion'];
$valor_busqueda=implode ("-",$valor);
 
$ret = $dao->eliminar($valor_busqueda]);
header("Location: principal.php");
?>
:rolleyes:

 
De array a string.... entonces quedaría así??

PHP:
<?php
require_once "../conf.php";
$dao = new ProductoDAO();

 
$valor=$_POST['seleccion'];
$valor_busqueda=implode ("-",$valor);
 
$ret = $dao->eliminar($valor_busqueda]);
header("Location: principal.php");
?>
:rolleyes:


me autocito, debido a que no tuviste esto en cuenta

estas pasando un array para eliminar

tienes que poner el eliminar, nuevamente, dentro de un ciclo for
que recorra el POST de seleccion

cuando dije esto me referia al codigo en eliminar.php
y segun tu ultimo post estaba en lo correcto :p

No se pudo ejecutar la eliminación: DELETE FROM producto WHERE id_producto in (Array)

aunque tambien puedes hacer lo que dijo Yon covertir el array en cadena PERO con COMAS en lugar de GUION

sino no sirve
 
validar variable

Utilizando el mismo caso anterior, si no selecciono ningún registro y le doy eliminar, la variable pasa vacía, qué me recomiendan para validar esa variable en la función??
Yo lo hice con if (empty()), así. :nervios:

PHP:
    function eliminar($idProducto){
       if (empty($idProducto) {
           return true;}
       else {
       $query = "DELETE FROM producto WHERE id_producto in (".$idProducto.")";
       if (!$ret){
         Debug::println("No se pudo ejecutar la eliminación: " . $query);
         return false;
      }
      return true;
    }
}
Pero un programador en mi trabajo me dijo que mejor utilice un switch case porque es más seguro, y otro me sugirió que utilice un if (!isset()). Pueden aconsejarme??? :rolleyes::rolleyes:
 
1. un switch de dos opciones es lo mismo que un if/else
2. isset() no sirve porque $idProducto siempre va a estar definida (aunque este vacia)

yo verificaría que el $_POST tuviera al menos un valor antes de hacer el implode y pasarlo a la función de eliminación asi se ahorran un par de "microsegundos" y un poco de memoria :p
 
El empty es buena opción (yo la uso generalmente), pero la podrias complementar con trim... por si alguien quieren enviarte la cadena asi: " " o mas grande (que tecnicamente no es vacia)
 
Bueno, estoy validando antes de del implode() pero algo está mal...

PHP:
$ver_variable = $_POST['seleccion'];
if (empty($ver_variable) {
    header("Location: principal.php");}
    else
    {
     $variables=implode(',',$ver_variable);
     $dao = new ProductoDAO();
     $ret = $dao->eliminar($variables);
     header("Location: principal.php");
}

Se queda en blanco.:':):)':):)\
 
Bueno, estoy validando antes de del implode() pero algo está mal...

PHP:
$ver_variable = $_POST['seleccion'];
if (empty($ver_variable) {
    header("Location: principal.php");}
    else
    {
     $variables=implode(',',$ver_variable);
     $dao = new ProductoDAO();
     $ret = $dao->eliminar($variables);
     header("Location: principal.php");
}

Se queda en blanco.:':):)':):)\

Te falta cerrar el paréntesis después del (empty($ver_variable))
 
1. un switch de dos opciones es lo mismo que un if/else
2. isset() no sirve porque $idProducto siempre va a estar definida (aunque este vacia)

yo verificaría que el $_POST tuviera al menos un valor antes de hacer el implode y pasarlo a la función de eliminación asi se ahorran un par de "microsegundos" y un poco de memoria :p

Si se trata de ahorrar microsegundos, no sería mejor deshabilitar el botón Eliminar hasta que haga un check en algún registro de su listado?? (salvo que no le haya seguido la secuencia, pero según vi, Bandolera está utilizando un listado que pide hacer check en el registro a eliminar, cierto).
Pues al hacer click en el botón Eliminar y no tener ningún registro marcado, igual irá a verificar si el $_POST tiene algún valor y como no tiene ningúno ya perdió tiempo.
Por eso creo que mejor con javascript validas si existe algún registro marcado con check o no, así el proceso de Eliminar no se hará en vano.
Y sobre modificar el php.ini, si utiliza su codigo en un host, tal vez no tenga acceso al php.ini, así que tendría que crear un archivo de configuración para poder setear el display_errors. Eso debería indicar Bandolera.
Saludos.
 
para la próxima, coloca la función o modifica el php.ini para que que te reporte los errores (no lo esta haciendo por eso sale en blanco) y asi es mas facil ver donde esta el error :p

y me refiero a:
http://php.net/manual/en/errorfunc.configuration.php (php.ini)
http://php.net/manual/en/function.error-reporting.php (funcion)

Bueno, mi archivo php.ini está configurado correctamente:
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
display_errors = On
Y tengo un archivo de configuracion con ini_set('error_reporting', 'E_ALL');
Igual queda en blanco. :(:(

Para Yeison: Ese es un comentario machista?:enojado::enojado:
Para Piropeator: Gracias por el consejo, haré la prueba cuando esta parte esté concluida.:):)
 
HOLA AMIGOS

les tengo una consultica, tengo el siguiente problema

quiero generar un archivo javascript ".js", donde me cree una variable TRM, que es la trm del día.

el archivo a crear debe crear una variable algo así, o esto es lo que debe crear el archivo con codigo php

var TRM = "1816.28"

pero para sacar la trm debe usar php

esta es la parte dificil, como no se php no se como crear este codigo

aqui esta el codigo que saca la trm del día directamente del banco de la republica
http://comunidad.dragonjar.org/f172/script-para-mostrar-la-trm-del-dia-con-php-7120/

gracias por su ayuda
 
HOLA AMIGOS

les tengo una consultica, tengo el siguiente problema

quiero generar un archivo javascript ".js", donde me cree una variable TRM, que es la trm del día.

el archivo a crear debe crear una variable algo así, o esto es lo que debe crear el archivo con codigo php



pero para sacar la trm debe usar php

esta es la parte dificil, como no se php no se como crear este codigo

aqui esta el codigo que saca la trm del día directamente del banco de la republica
http://comunidad.dragonjar.org/f172/script-para-mostrar-la-trm-del-dia-con-php-7120/

gracias por su ayuda

Antes de ponerte a generar un archivo .js con php, no queda como más fácil hacer una consulta tipo AJAX con JavaScript preguntando al servidor por dicho precio? o tiene que ser un archivo .js obligatoriamente generado con php?

Salu2
 

Los últimos temas