Foros del Web » Programando para Internet » PHP »

Borrar un cierto nodo de xml con php

Estas en el tema de Borrar un cierto nodo de xml con php en el foro de PHP en Foros del Web. Hola a todos, tengo un foro hecho en php,mysql y para los mensajes de cada usuarios los cargo en un xml y los leo desde ...
  #1 (permalink)  
Antiguo 08/07/2009, 08:03
 
Fecha de Ingreso: julio-2009
Ubicación: Paraguay
Mensajes: 36
Antigüedad: 14 años, 9 meses
Puntos: 0
Exclamación Borrar un cierto nodo de xml con php

Hola a todos, tengo un foro hecho en php,mysql y para los mensajes de cada usuarios los cargo en un xml y los leo desde php para mostrarlo en la pagina de cada usuario. el problema esta en que no se como borrarlos.. me ayudan? este es la estructura del xml.

<?xml version="1.0" ?>
- <library>
- <block>
<id>6221</id>
<mensaje>hola marcos.. esta es una prueba !</mensaje>
<tiempo>07-07-2009 22:33:37</tiempo>
</block>
- <block>
<id>7080</id>
<mensaje>hola!</mensaje>
<tiempo>07-07-2009 22:38:21</tiempo>
</block>
</library>

ese seria el archivo de un usuario.. cada mensaje se lee por el <block> ocea q ese usuario tiene dos mensajes.. lo que quiero es que al apretar borrar mensaje (link puesto al final de cada mensaje) se borre el <block> y todo lo que esta dentro quedando asi por ejemplo.

<?xml version="1.0" ?>
- <library>
- <block>
<id>6221</id>
<mensaje>hola marcos.. esta es una prueba !</mensaje>
<tiempo>07-07-2009 22:33:37</tiempo>
</block>
</library>

Agradeceria tanto una respuesta, porque he buscado en toda la web y no he encontrado nada.. gracias de antemano!
  #2 (permalink)  
Antiguo 08/07/2009, 08:07
Avatar de chulifo  
Fecha de Ingreso: abril-2009
Ubicación: perdido en codigos del PHP, pero aprendo rapido!
Mensajes: 524
Antigüedad: 15 años
Puntos: 18
Respuesta: Borrar un cierto nodo de xml con php

quien borrar el archivo prueba con esto
Código PHP:
<?php
unlink
("$dir"); // donde $dir en tu archivo
 
echo 'El archivo fue borrado';
   
?>
  #3 (permalink)  
Antiguo 08/07/2009, 08:17
 
Fecha de Ingreso: julio-2009
Ubicación: Paraguay
Mensajes: 36
Antigüedad: 14 años, 9 meses
Puntos: 0
pero eso me estaria borrando el archivo xml.. no lo que esta dentro.. o si?

no.. ya lo probe.. y no es el codigo que busco.. lo que busco es que me borre el nodo <block> y lo que esta dentro de el.. pero gracias por responder.

Última edición por GatorV; 08/07/2009 a las 09:08
  #4 (permalink)  
Antiguo 08/07/2009, 09:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Borrar un cierto nodo de xml con php

Vas a tener que parsear el XML usando SimpleXML o DomXML, borrar el nodo que quieras y volver a escribir el XML.

Saludos.
  #5 (permalink)  
Antiguo 08/07/2009, 09:47
 
Fecha de Ingreso: julio-2009
Ubicación: Paraguay
Mensajes: 36
Antigüedad: 14 años, 9 meses
Puntos: 0
Busqueda Respuesta: Borrar un cierto nodo de xml con php

si eso estaba pensando.. pero lo que no se... es como hacer eso.. no encuentro la manera, porfa si alguien puede pasar un codigo. muchas gracias!
  #6 (permalink)  
Antiguo 08/07/2009, 11:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Borrar un cierto nodo de xml con php

Pues sí ya estas usandolo para mostrar los comentarios simplemente usa ese mismo código, cuando encuentres el nodo a borrar lo borras usando unset() y vuelves a escribir el arbol DOM de regreso.

Saludos.
  #7 (permalink)  
Antiguo 08/07/2009, 21:03
 
Fecha de Ingreso: julio-2009
Ubicación: Paraguay
Mensajes: 36
Antigüedad: 14 años, 9 meses
Puntos: 0
Información Respuesta: Borrar un cierto nodo de xml con php

como es eso del unset()
porfa necesito un codigo.. porque me cuesta mucho esto del php con xml. gracias!
  #8 (permalink)  
Antiguo 08/07/2009, 21:14
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Borrar un cierto nodo de xml con php

Unset sirve para borrar una variable, hay muchas formas en las que puedes leer todo el DOM XML, borrar la parte que quieres y re-escribir tu archivo XML.

Todo depende de como es que hagas la lectura de tu archivo

Saludos.
  #9 (permalink)  
Antiguo 08/07/2009, 21:39
 
Fecha de Ingreso: julio-2009
Ubicación: Paraguay
Mensajes: 36
Antigüedad: 14 años, 9 meses
Puntos: 0
// Carga una cadena XML desde un archivo...
$mensajesxml=mysql_query("SELECT rutacar FROM usuarios WHERE id='.$id.'") or die("Problemas en el select:".mysql_error());
if($reg=mysql_fetch_array($mensajesxml)){
$xmlstr = file_get_contents('mensajes/'.$reg['rutacar'].'.xml');
$library = new SimpleXMLElement($xmlstr);
$library = new SimpleXMLElement('mensajes/'.$reg['rutacar'].'.xml', null, true);

$n=0;
foreach($library->block as $block) {
$n=$n+1;
}
}
echo '<div id="info">';

echo 'Tienes '. $n . ' mensaje(s)';

for($i=$n ; $n>-1 ; $n--) { //20

unset($reg);
unset($registros);
$registros=mysql_query("SELECT * FROM usuarios" ) or die("Problemas en el select:".mysql_error());
while ($reg=mysql_fetch_array($registros)){
if($reg['id']==$library->block[$n]->id){
echo '<hr>';
echo '<div id="no'.$n.'" class="mensaje">'."\n";
echo '<a href=perfil.php?id='.$library->block[$n]->id.'>'."\n".'<img src='.$reg['rutaimg'].' width=100><br></a>';
echo '<a href=perfil.php?id='.$library->block[$n]->id.'><strong><font face=Arial size=2 color=white>'.$reg['nombre'].'</strong><br></a>';
echo '<p>'.$library->block[$n]->mensaje.'</p>'."\n"; //30
echo '<strong><p style="{ text-align: right; }" >'.$library->block[$n]->tiempo.'</p></strong>';


if ($idUsuarioL==$id) {


echo '<a href="javascript:void(null)" onclick='."\"".'abrir('. '\'' .'no'.$n. '\'' .",". '\'' .$reg['id']. '\'' .');'."\"".'>Responder<a/>';
echo '<a href="javascript:void(null)" onclick='."\"".'borrar('.'\''.'no'.$n.'\''.')'."\" ".' >Cancelar</a>';
echo '<a href="javascript:void(null)" onclick='."\"".'eliminar('.'\''.'no'.$n.'\''.')'." \"".' >Eliminar</a>';



}

echo '</div>'."\n";
echo '<hr>';
}

}
}
echo '</div>';


?>

este es el codigo en donde leo el xml e incluyo los links.. porfa.. necesito borrar el nodo.. intente de muchas maneras.. pero no lo logro.. te lo agradeceria un monton si me facilitaras el codigo..

Lo pude solucionar.. despues de mucho.. lastimosamente no puedo decir gracias por solucionar.. pero si gracias a los que respondieron el tema! les agradezco y mucho!!


<?php
include('config.php');
@include('login.php');

$id=$_REQUEST['id'];
$idmens=$_REQUEST['idmens'];

$user=mysql_query("SELECT * FROM usuarios WHERE id='".$id."'");
if($user_ok=mysql_fetch_array($user)){

$doc = new DOMDocument ;
$doc -> load ( 'mensajes/'.$user_ok['rutacar'].'.xml');


$book = $doc -> documentElement ;


$block = $book -> getElementsByTagName ( 'block' )-> item ( $idmens );
$oldblock= $book -> removeChild ( $block );



$doc -> save('mensajes/'.$user_ok['rutacar'].'.xml');
header('Location: foro.php?id='.$id);
echo '<br><a href=foro.php?id='.$id.'>Volver</a>'."\n";
}

?>

Última edición por GatorV; 09/07/2009 a las 12:22
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 21:07.