image
Inicio » Foros » PHP

Foro sobre PHP

Eliminar campos vacíos de un array.

Volver al foro | Responder | Añadir nuevo tema


De: Jose
Fecha: 30/03/2017
Mensaje:

Buenos días!

antes de nada, soy Jose, soy nuevo en el foro y
la verdad es que espero aprender mucho aquí.
Estoy empezando con php y aún hay cosas que no
tengo muy claras para lo que estoy haciendo
ahora mismo, por lo que disculpad mi ignorancia
si veis algún fallo garrafal:

Con php y html estoy haciendo una página que
contiene un formulario, a través del cual se
hace consultas a una base de datos en Firebird.

[u]Tengo dos modelos[/u]:

- [b]El primero[/b], funciona correctamente, ya
que sólo hace consultas de búsqueda y
actualización de UN SÓLO registro cada vez:

[code]<!--Por un lado tengo el formulario en
html (pongo sólo el botón y la cabecera)-->:
<form name="formulario" id="formulario"
method="post">
<tr><td>....</td></tr>
<input type="submit" name="btn1"
value="Actualizar" /></form>

<!-- Y por otro lado (en la misma página) tengo
el .php -->:

if (isset($_POST["btn1"])){
$btn=$_POST["btn1"];

if ($btn=="Actualizar"){
$sqlStr= ' ';

//Saco un nuevo array con los campos
vacíos del formulario eliminados.
if (!empty($POST_){
unset ($_POST['btn1']);
for each ($_POST as $key => $value) {
if (trim($value) != '')
{

$sqlArr[]="$key='$value'";
}}}

//convierto array a string
$sqlStr=implode(", ", $sqlArr);

$sql = "update tabla set $sqlStr";
[/code]

En definitiva, haciendo esto actualizo el
registro sin problemas, ya que aunque los
campos estén vacios, el string último se me
queda tal y como quiero (ID='1',
NOMBRE='2'...).

- [b]El segundo[/b] método es para hacer una
búsqueda y que imprima más de un registro. Cada
fila resultante tendrá al lado un botón
"actualizar", el cual va a hacer un update de
esa fila. El código que tengo es el siguiente:

[b]listar.php:[/b]
//en php:

if (isset($_POST["btn1"])){
$btn=$_POST["btn1"];

if ($btn=="Buscar"){

$sql="consulta sql"

[code]<form name='ejecuta'
action='ejecuta2.php' method='post'>

<tr>
<td>ID_AGENTE</td>
<td>ID_COLABORADOR</td>
<td>ID_PERSONA</td>
</tr>

$i=0;

while ($resul=ibase_fetch_row($cs)){
$var=$resul[0];
$var1='resul[1];
$var2=$resul[2];

echo "<tr>
<td>
<input name='ID_AGENTE[$i]' value='".$var."' />
</td>
<input name='ID_ COLABORADOR[$i]'
value='".$var1."' /></td>
<input name='ID_PERSONA[$i]' value='".$var2."'
/></td>
<td><input type="submit" name='seleccion[$i]'
value='Actualizar'></td>
</tr>";
$i++;
}
echo "</table></form>;
[/code]

Esto me funciona relativamente bien, ya que
muestra bien el formulario y a la hora de hacer
la búsqueda me muestra por pantalla todos los
registros.

El problema viene al usar el submit con el
nombre [i]seleccion[$i][/i] y value
[i]Actualizar[/i].

He intentado basarme en el codigo php del
primer modelo, haciendo esto:

[b]ejecuta2.php:[/b]
[code]
<?php

foreach ($_POST['seleccion'] as $indice =>
$valor){
//verificamos que se ha dado al boton
actualizar.
$opcion=substr ($_POST['seleccion']
[$indice],0,-1); //extraemos la parte de la
cadena que será "Actualizar".

switch ($opcion) {

case: "Actualizar":

if (!empty($_POST)){

if (trim($valor) != ''){
$sqlArr[]="$indice='$valor'";}}

print_r $sqlArr;

sql="$sql = "update tabla set $sqlStr";
break;

?>
[/code]


Seguramente haya algo mal al pasar mi código a
este, pero en conclusión, lo que no sé es de
qué forma eliminar campos vacíos en el array
según el formulario que tengo en el segundo
modelo para que al final tenga un string del
tipo: ID='1', NOMBRE='JOSE'.

He intentado ponerlo de varias formas y siempre
siempre siempre, al hacer el procedimiento de
borrado con el array, siempre obtengo:
0='Actualizar'.

No salgo de ahí. Os agradecería enormemente una
ayuda.

Gracias de antemano! Un saludo.


Volver al foro | Responder | Añadir nuevo tema

Quizás le interese:

WebEstilo.com no se hace responsable de las opiniones que los usuarios puedan verter en cualquiera de los foros existentes.

Si te solucionó el problema pulsa en G+1


Gracias!






Comparte



Última modificación:31 de Agosto de 2017. Spain - Espa�a.
© 1998-2004 por . Todos los derechos reservados.