Foros del Web » Programando para Internet » PHP »

Cannot use string offset as an array para actualizar XML

Estas en el tema de Cannot use string offset as an array para actualizar XML en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 08/07/2011, 09:33
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
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......
  #2 (permalink)  
Antiguo 08/07/2011, 09:38
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Cannot use string offset as an array para actualizar XML

Creo que el problema es usar $val para acceder al array, podría ser algo así:
Código PHP:
$x->{$val}[$id// ... 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 08/07/2011, 09:56
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: Cannot use string offset as an array para actualizar XML

Excelente...demasiadas gracias

Etiquetas: offset, string, xml, formulario, variables
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 16:54.