Buenas a todos, resulta que tengo un problema a la hora de modificar un documento xml desde php, me genera el siguiente error:
Cannot use string offset as an array in C:\AppServ\www\dev\intranet\histoclin\hcclini.php on line 137
Lo hago de la siguiente manera:
Código PHP:
Ver original<?php
//Recibo los datos de un formulario:
if (isset ($_POST['codexa'])) {
$titulo=$_POST['titulo'];
//Archivo es el documento xml
$archivo=$_POST['archivo'];
$cantidad=$_POST['cantidad'];
$estado=$_POST['estado'];
$observ=$_POST['obsexa'];
//la variable $id me identifica el id a modificar del nodo
$id=$_POST['fila'];
//La variable $val identifica el nombre del nodo a actualizar
if($titulo=='EXAMENES') $val='solexa';
if($titulo=='PROCEDIMIENTOS QUIRURGICOS') $val='solqx';
if($titulo=='PROCEDIMIENTOS NO QUIRURGICOS') $val='solnoqx';
if($titulo=='PATOLOGIA') $val='solpat';
//Con esta funcion hago la modificacion para los 4 titulos:
modificar_exam($archivo,$val,$estado,$observ,$id,$cantidad);
}
?>
Y ahora el codigo de la función:
Código PHP:
Ver original<?php
function modificar_exam($archivo,$val,$estado,$observ,$id,$cantidad)
{
//Cargo el xml
$x = new SimpleXMLElement($archivo, null, true);
//Empiezo a modificar
$x->$val[$id]['can']=$cantidad;
$x->$val[$id]['est']=$estado;
$x->$val[$id]->observ=$observ;
$x->asXML($archivo);
}
?>
Cuando hago una modificacion para un solo caso, es decir, sin utilizar una función, se actualiza normalmente, la linea del error es
$x->$val[$id]['can']=$cantidad;
Parce que el valor de $id no lo toma, pero realmente si, ya que con un echo muestra el numero del nodo....Como podria solucionar este problema?...
Lo hago asi para no repetir código....
Agradezco la ayuda......