Foros del Web » Programando para Internet » PHP »

Editar y Eliminar Array

Estas en el tema de Editar y Eliminar Array en el foro de PHP en Foros del Web. Saludos actualmente tengo el siguiente codigo Código PHP: foreach ( $_SESSION [ 'datos' ]  $campos ){   echo  "Campo 1" . $campos [ 'campo1' ]. "<br>" ;    echo  ...
  #1 (permalink)  
Antiguo 04/09/2006, 10:29
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Editar y Eliminar Array

Saludos actualmente tengo el siguiente codigo

Código PHP:
foreach ($_SESSION['datos'$campos){
  echo 
"Campo 1".$campos['campo1']."<br>"
  echo 
"Campo 2".$campos['campo1']."<br><br>";  

El array me lo esta generando de esta forma
Cita:
Array
(
[0] => Array
(
[campo1] => sg
)

[1] => Array
(
[campo2] => sdfg
)

)
Lo que quiero hacer es poder editar y eliminar los datos que fueron capturados con anterioridad y que fueron guardados en el array.. Se que se debe manejar con un identificador para realizar tal proposito

algo asi:
Código PHP:
foreach ($_SESSION['datos'] as $identificador->$campos){
  echo 
"Identificador: ".$identificador."<br>";
  echo 
"Campo 1".$campos['campo1']."<br>"
  echo 
"Campo 2".$campos['campo1']."<br><br>";  

pero no me funciona si alguien tiene alguna idea de como puedo implementarlo o que tengo mal en el codigo se lo agradecere..

Hasta pronto!!
__________________
:.:Nano.:: @nano_hard - Retornando al foro

Última edición por Nano_; 04/09/2006 a las 10:39
  #2 (permalink)  
Antiguo 04/09/2006, 10:43
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Ya encontre el problema por que no me funcionaba el identificador no es -> sino => jejeje.... Pero bueno todavia no e podido hacer la tarea de eliminar y actualizar.. etuve probando con unset ..

unset ($_SESSION['datos'][0]);

pero pues me elimina el regitro en la ubicacion 0.. Como podria volverlo mas "dinamico" que me elimine en "conjunto"...
__________________
:.:Nano.:: @nano_hard - Retornando al foro

Última edición por Nano_; 04/09/2006 a las 11:24
  #3 (permalink)  
Antiguo 05/09/2006, 15:57
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Alguna ideaaaa!!...
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #4 (permalink)  
Antiguo 05/09/2006, 19:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pero que quieres borrar exactamente? .. todo lo que ya bajo "datos" o un "registro" (por decirlo así donde quedan asociados esos "campo1,campo2,X")

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 05/09/2006, 19:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por Nano_ Ver Mensaje
Ya encontre el problema por que no me funcionaba el identificador no es -> sino => jejeje.... Pero bueno todavia no e podido hacer la tarea de eliminar y actualizar.. etuve probando con unset ..

unset ($_SESSION['datos'][0]);

pero pues me elimina el regitro en la ubicacion 0.. Como podria volverlo mas "dinamico" que me elimine en "conjunto"...
Eso fué un "fallo" mio (pido las disculpas del caso xD):
http://www.forosdelweb.com/f18/clonar-table-412968/

(ya lo arreglé allá también)

De hecho para quien quiera ver de donde sale todo este tema (que en realidad al final va a ser una especie de diseño de un "carrito de compras" en el fondo o para que lo asimilemos) . .viene todo de ese mensaje.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 07/09/2006, 07:55
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Saludos..

bueno ya casi veo la luz..jejeje... Actualmente el array se esta generando de esta forma..
Cita:
//numero 2 es el id
[2] => Array
(
[selpar] => 6109100000
[nombre_tecnico] =>
[norma] =>
[criterio] =>
[cantidad] => 0
[unidad0] => 001 VOL
[fob] =>
[fecha0] =>
)
Esto lo hice con el fin de que cuando se valla a editar o eliminar el me tome solo los valores que este dentro del id.

Este es el codigo que utilizo para ello
Código PHP:
if (!empty($_POST['submit'])){
// Genero consecutivo id
echo '<a href="'.$PHP_SELF.'?'.$SID.'">Contador vale: '.++$_SESSION['id']. '</a>';


  
$_SESSION['datos'][$id]['selpar'] = $_POST['selpar'];
  
$_SESSION['datos'][$id]['nombre_tecnico'] = $_POST['nombre_tecnico'];
  
$_SESSION['datos'][$id]['norma'] = $_POST['norma'];
  
$_SESSION['datos'][$id]['criterio'] = $_POST['criterio'];
  
$_SESSION['datos'][$id]['cantidad'] = $_POST['cantidad'];
  
$_SESSION['datos'][$id]['unidad0'] = $_POST['unidad0'];
  
$_SESSION['datos'][$id]['fob'] = $_POST['fob'];
  
$_SESSION['datos'][$id]['fecha0'] = $_POST['fecha0'];
  
// redireccionamos para salvar los datos en la sesión ....
header ("Location: ".$_SERVER['PHP_SELF']);

  exit; 
ahora al momento de elimar o editar no se como puedo programar el unset para que realize esta tarea... cualquier idea se las agradecere..

Hasta Pronto!
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #7 (permalink)  
Antiguo 07/09/2006, 08:00
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
El "unset()" borra elementos de un array o variables en general ..

Si tu tienes un array multidimensional .. realmente no sé que es lo que quieres "eliminar". Pero, supongamos que vas a eliminar el "producto" con ID: X ...

Código PHP:
unset($_SESSION['datos'][n_delIDaBorrar]); 
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 07/09/2006 a las 08:08
  #8 (permalink)  
Antiguo 07/09/2006, 08:16
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Hola Cluster Te Agradezco Asi Lo Habia Hecho Ayer Pero No Se Por Que No Funcionaba Jejeje... Pero Bueno .. Gracias Por Tu Ayuda
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #9 (permalink)  
Antiguo 07/09/2006, 08:22
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 3 meses
Puntos: 3
Talves por que le pasabas el valor en lugar del id... el unset requiere como parametro el id del array el cual se va a eliminar..
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
  #10 (permalink)  
Antiguo 07/09/2006, 08:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por Nano_ Ver Mensaje
si B** depronto era eso.. ...

Qeu funcion me recomendarian utilizar para "editar" o "modificar" el array.
¿? ...

Función? ...

Seguimos hablando de un "array" de tales "dimensiones" y sabes como acceder al "registro" (elemento) que necesitas por esa referencia: "ID" que ya manejas.

Que problema tienes concreto?

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 07/09/2006, 09:34
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
El problema que tengo es el siguiente no se como pasar la variable id para que me modifique un articulo en particular.

lo estaba desarrollando de este modo pero me modifica todos los campos que estan dentro del el ultimo array "id".

Código PHP:
if (!empty($_POST['modificar'])){
// almacenas los datos en la sesión (en forma de array asociativo):
  
$_SESSION['datos'][$id]['selpar'] = $_POST['selpar'];
  
$_SESSION['datos'][$id]['nombre_tecnico'] = $_POST['nombre_tecnico'];
  
$_SESSION['datos'][$id]['norma'] = $_POST['norma'];
  
$_SESSION['datos'][$id]['criterio'] = $_POST['criterio'];
  
$_SESSION['datos'][$id]['cantidad'] = $_POST['cantidad'];
  
$_SESSION['datos'][$id]['unidad0'] = $_POST['unidad0'];
  
$_SESSION['datos'][$id]['fob'] = $_POST['fob'];
  
$_SESSION['datos'][$id]['fecha0'] = $_POST['fecha0'];

__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #12 (permalink)  
Antiguo 07/09/2006, 09:58
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
lo estaba desarrollando de este modo pero me modifica todos los campos que estan dentro del el ultimo array "id".
pero tu como le pasas el $id a ese código? .. de donde lo traes? .. de un link? cual? como? ...


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #13 (permalink)  
Antiguo 07/09/2006, 10:05
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 3 meses
Puntos: 3
Creo que te falta esto:
Código PHP:
$_SESSION[id]+=1;
$id=$_SESSION[id]; 
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
  #14 (permalink)  
Antiguo 07/09/2006, 10:05
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
de esta forma paso el id
Código PHP:
echo '<a href="'.$PHP_SELF.'?'.$SID.'">Contador vale: '.++$_SESSION['id']. '</a>';
$_SESSION['datos'][$id]['selpar'] = $_POST['selpar'];
  
$_SESSION['datos'][$id]['nombre_tecnico'] = $_POST['nombre_tecnico'];
  
$_SESSION['datos'][$id]['norma'] = $_POST['norma'];
  
$_SESSION['datos'][$id]['criterio'] = $_POST['criterio'];
  
$_SESSION['datos'][$id]['cantidad'] = $_POST['cantidad'];
  
$_SESSION['datos'][$id]['unidad0'] = $_POST['unidad0'];
  
$_SESSION['datos'][$id]['fob'] = $_POST['fob'];
  
$_SESSION['datos'][$id]['fecha0'] = $_POST['fecha0']; 
para eliminar el array lo realize de esta forma

Código PHP:
//eliminar array
unset($_SESSION['datos'][$id]); 
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #15 (permalink)  
Antiguo 07/09/2006, 10:07
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 3 meses
Puntos: 3
Entonces quedaria asi:
Código PHP:
if (!empty($_POST['modificar'])){
// almacenas los datos en la sesión (en forma de array asociativo):
$_SESSION[id]+=1;
$id=$_SESSION[id];    
$_SESSION['datos'][$id]['selpar'] = $_POST['selpar'];
  
$_SESSION['datos'][$id]['nombre_tecnico'] = $_POST['nombre_tecnico'];
  
$_SESSION['datos'][$id]['norma'] = $_POST['norma'];
  
$_SESSION['datos'][$id]['criterio'] = $_POST['criterio'];
  
$_SESSION['datos'][$id]['cantidad'] = $_POST['cantidad'];
  
$_SESSION['datos'][$id]['unidad0'] = $_POST['unidad0'];
  
$_SESSION['datos'][$id]['fob'] = $_POST['fob'];
  
$_SESSION['datos'][$id]['fecha0'] = $_POST['fecha0'];

No olvides que para mostrar los datos de la session tienes que recorrerla con un foreach.
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
  #16 (permalink)  
Antiguo 07/09/2006, 10:15
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por Nano_ Ver Mensaje
de esta forma paso el id
Código PHP:
echo '<a href="'.$PHP_SELF.'?'.$SID.'">Contador vale: '.++$_SESSION['id']. '</a>';
$_SESSION['datos'][$id]['selpar'] = $_POST['selpar'];
  
$_SESSION['datos'][$id]['nombre_tecnico'] = $_POST['nombre_tecnico'];
  
$_SESSION['datos'][$id]['norma'] = $_POST['norma'];
  
$_SESSION['datos'][$id]['criterio'] = $_POST['criterio'];
  
$_SESSION['datos'][$id]['cantidad'] = $_POST['cantidad'];
  
$_SESSION['datos'][$id]['unidad0'] = $_POST['unidad0'];
  
$_SESSION['datos'][$id]['fob'] = $_POST['fob'];
  
$_SESSION['datos'][$id]['fecha0'] = $_POST['fecha0']; 
para eliminar el array lo realize de esta forma

Código PHP:
//eliminar array
unset($_SESSION['datos'][$id]); 
Cita:
echo '<a href="'.$PHP_SELF.'?'.$SID.'">Contador vale: '.++$_SESSION['id']. '</a>';
$_SESSION['datos'][$id]['selpar'] = $_POST['selpar'];
No, de esa forma no pasas el ID .. sólo gestinoas el incremento de esa variable por qué esa rutina en cuestión -añade- elementos a tu array.

Donde lees (con que bucle) los items de "datos" que contine tu variable de sesión?. Es ahí donde vas a concer tu "ID" que se va obteniendo para el "registro" a editar y donde puedes componer un link para aputar al mismo directamente e independiente.

Donde presentes tus datos (todo lo que contiene el array "datos") . .ahí es donde tienes que generar tu LINK que va a contener tu "ID" como referencia:

Código PHP:
foreach ($_SESSION['datos'] as $identificador->$campos){
  echo 
$campos['selpar']." "// etc con el resto ...
  
echo "<a href=\"editar.php?id=".$identificador."\">Editar ID: ".$identificador."</a><br>";

En editar.php (o aunque uses un mismo script para este proceso según lo controles) .. tendras en $_GET['id'] el ID de tu "indice" de tu array a editar ...

Ahí tendrás un detallito que te darás cuenta y habrá que solventar ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #17 (permalink)  
Antiguo 07/09/2006, 11:01
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
hola cluster de nuevo gracias ya implemente lo que me dijiste y pues bueno ... lo pense realizar de este modo..
Código PHP:
$id $_GET["id"];
if(empty(
$id)) 
creo que asi seria una parte pero ahora como hago para "traer el array".. pues creo que seria de este modo o estoy equicado..
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #18 (permalink)  
Antiguo 07/09/2006, 11:08
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por Nano_ Ver Mensaje
hola cluster de nuevo gracias ya implemente lo que me dijiste y pues bueno ... lo pense realizar de este modo..
Código PHP:
$id $_GET["id"];
if(empty(
$id)) 
creo que asi seria una parte pero ahora como hago para "traer el array".. pues creo que seria de este modo o estoy equicado..
Primero aclara un punto:

Tu ya generas tu "ID" a editar correctamente? (si es así . .no está de más que indiques el código como te quedó). Confirma esto para poder continuar ...

De todas formas .. "traerte" el array .. ? .. Si ya lo tienes en tu variable de sesión. USA lo mismo que estás haciendo constantemente:

Código PHP:
  $id $_GET["id"];

  
// aquí propagas en tu formulario el ID que estás editando .. 
  
echo "<input type=\"hidden\" name=\"id\" value=\"".$id."\">";
  
// Tus datos .. pre-cargados en los campos del formulario que uses ...
  
echo "<input type=\"text\" name=\"selpar\" value=\"".$_SESSION['datos'][$id]['selpar']."\">";
 
// y así con el resto .. Todo en un formulario HTML (<form> para que lo envies a un script similar al que usas ahora para "crear un nuevo" registro .. pero en este caso con el "ID" que editastes para que quede en el mismo sitio todo. 
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #19 (permalink)  
Antiguo 07/09/2006, 11:11
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 3 meses
Puntos: 3
Pienso que no tienes definido bien a bien tu problema... en si q quieres que obtenga $id? y como quieres los datos en la session?
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
  #20 (permalink)  
Antiguo 07/09/2006, 11:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por B** Ver Mensaje
Pienso que no tienes definido bien a bien tu problema... en si q quieres que obtenga $id? y como quieres los datos en la session?
Los datos en la sesión ya está claros (te lo confirmo yo mismo por qué he "seguido" este mensaje). El dichoso ID lo puede obtener recorriendo el bucle donde representa el array que propaga en su variable de sesión "datos".

De hecho lo "tiene" ya listo por qué en algún punto recorre el array "datos" para mostrar el contenido que tiene este (por arriba salió un foreach() que lo hacía).

Igualmente como no coloca todo el códgio que "le vá quedando" .. y pone sólo "porciones" y extractos de código bien aislado .. así es imposible hacerse una idea de "por donde vamos" y nos lia!.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #21 (permalink)  
Antiguo 07/09/2006, 13:01
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Saludos bueno el codigo lo llevo de la siguiente manera

captura array
Código PHP:
session_start();
// Inicio uso sesiones (asumo que propago el SID en cookies).

if (!empty($_POST['submit'])){
// almacenas los datos en la sesión (en forma de array asociativo):
echo '<a href="'.$PHP_SELF.'?'.$SID.'">Contador vale: '.++$_SESSION['id']. '</a>';
  
$_SESSION['datos'][$id]['selpar'] = $_POST['selpar'];
  
$_SESSION['datos'][$id]['nombre_tecnico'] = $_POST['nombre_tecnico'];
  
$_SESSION['datos'][$id]['norma'] = $_POST['norma'];
  
$_SESSION['datos'][$id]['criterio'] = $_POST['criterio'];
  
$_SESSION['datos'][$id]['cantidad'] = $_POST['cantidad'];
  
$_SESSION['datos'][$id]['unidad0'] = $_POST['unidad0'];
  
$_SESSION['datos'][$id]['fob'] = $_POST['fob'];
  
$_SESSION['datos'][$id]['fecha0'] = $_POST['fecha0'];
  
// redireccionamos para salvar los datos en la sesión ....
header ("Location: ".$_SERVER['PHP_SELF']);
  exit;
} else {
  
// Muestro los datos de la sesión (es un array .. )
  
echo "<pre>";
  
print_r($_SESSION['datos']);
  echo 
"</pre><br><br>";
}
// Presento siempre el formulario HTML .. 
eliminar O Editar Articulo

Código PHP:
session_start();
if (!empty(
$_POST['submit'])){
//eliminar array
unset($_SESSION['datos'][$id]);

//modificar

// redireccionamos para salvar los datos en la sesión ....
header ("Location: ".$_SERVER['PHP_SELF']);
  exit;
}
foreach (
$_SESSION['datos'] as $identificador=>$campos){
echo 
"Identificador: ".$_SESSION['id']."<br>";
if (!empty(
$campos['selpar'])){
print(
"
<form name=\"procesar_articulo\" id=\"procesar_articulo\" method=\"POST\" action=\"procesar_articulo.php\" enctype=\"multipart/form-data\">
...............
if (!empty($campos['nombre_tecnico'])){
print("
     
<td rowspan="3\"><textarea name=\"nombre_tecnico\" id=\"nombre_tecnico\" type=\"text\" cols=\"38\" rows=\"5\" align=\"right\" onChange=\"mays(this)\">".$campos['nombre_tecnico']."</textarea></td>
"
);
}
//y asi para cada campo
..
<
input type="submit\" name=\"submit\" value=\"Eliminar Articulo \" style=\"font-size: 10px\">
 <a href=\"procesar_articulo.php?id="
.$identificador."\">Editar ID: ".$identificador."</a><br> 
__________________
:.:Nano.:: @nano_hard - Retornando al foro
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 22:42.