Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/07/2011, 09:33
oscarbt
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años, 8 meses
Puntos: 27
Cannot use string offset as an array para actualizar XML

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
  1. <?php
  2. //Recibo los datos de un formulario:
  3. if (isset ($_POST['codexa']))
  4. {
  5. $titulo=$_POST['titulo'];
  6. //Archivo es el documento xml
  7. $archivo=$_POST['archivo'];
  8. $cantidad=$_POST['cantidad'];
  9. $estado=$_POST['estado'];
  10. $observ=$_POST['obsexa'];  
  11. //la variable $id me identifica el id a modificar del nodo
  12. $id=$_POST['fila'];
  13. //La variable $val identifica el nombre del nodo a actualizar
  14.  if($titulo=='EXAMENES') $val='solexa';
  15.  if($titulo=='PROCEDIMIENTOS QUIRURGICOS') $val='solqx';
  16.  if($titulo=='PROCEDIMIENTOS NO QUIRURGICOS') $val='solnoqx';
  17.  if($titulo=='PATOLOGIA') $val='solpat';
  18. //Con esta funcion hago la modificacion para los 4 titulos:
  19.  modificar_exam($archivo,$val,$estado,$observ,$id,$cantidad);
  20.   }  
  21.  
  22. ?>

Y ahora el codigo de la función:

Código PHP:
Ver original
  1. <?php
  2.  function modificar_exam($archivo,$val,$estado,$observ,$id,$cantidad)
  3. {
  4.   //Cargo el xml              
  5.   $x = new SimpleXMLElement($archivo, null, true);
  6. //Empiezo a modificar
  7.   $x->$val[$id]['can']=$cantidad;
  8.   $x->$val[$id]['est']=$estado;
  9.   $x->$val[$id]->observ=$observ;
  10.   $x->asXML($archivo);
  11.             }
  12. ?>

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......