Foros del Web » Programando para Internet » PHP »

no me crea un elemento con la api DOM de php

Estas en el tema de no me crea un elemento con la api DOM de php en el foro de PHP en Foros del Web. No se que hago mal, pero no me crea el archivo xml con un array de php tengo algo asin: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver ...
  #1 (permalink)  
Antiguo 23/09/2011, 10:05
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 4 meses
Puntos: 10
no me crea un elemento con la api DOM de php

No se que hago mal, pero no me crea el archivo xml con un array de php tengo algo asin:

Código PHP:
Ver original
  1. $productos[]=array();
  2. while($row=mysql_fetch_assoc($reg)){
  3.     $productos[]=$row['portatil'];
  4. }
  5.  
  6. $doc = new DomDocument("1.0");
  7. $datos = $doc->createElement("datos");
  8. $datos = $doc->appendChild($datos);
  9. $productos= $doc->createElement("productos");
  10. $productos = $datos->appendChild($productos);
  11.  
  12. foreach ($productos as $producto) {
  13. $portatil= $doc->createElement('portatil',$producto);
  14. $portatil= $productos->appendChild($portatil);
  15. }
  16. $doc->save("archivo.xml");

me da este error:

Warning: DOMDocument::createElement() expects parameter 2 to be string, array given in C:\wamp\www\tienda_online\datos.php on line 35
  #2 (permalink)  
Antiguo 23/09/2011, 10:09
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: no me crea un elemento con la api DOM de php

fijate que tiene tienda_online\datos.php on line 35
parace que espera otros parametros
  #3 (permalink)  
Antiguo 23/09/2011, 10:15
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 4 meses
Puntos: 10
Respuesta: no me crea un elemento con la api DOM de php

Hola Patriarka, esta es la linea que me da el error pero no tengo ni idea que es:

Código PHP:
Ver original
  1. $portatil= $doc->createElement('portatil',$producto);

creo que no estoy creando bien el array $productos, alguna idea de como hacerlo?

Saludos.
  #4 (permalink)  
Antiguo 23/09/2011, 10:25
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: no me crea un elemento con la api DOM de php

¿Que tipo de dato es $producto?
  #5 (permalink)  
Antiguo 23/09/2011, 10:35
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 4 meses
Puntos: 10
Respuesta: no me crea un elemento con la api DOM de php

Hola GatorV, $producto es un nombre tipo varchar, yo en el bucle paso de $productos a valor $producto.

saludos
  #6 (permalink)  
Antiguo 23/09/2011, 10:41
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: no me crea un elemento con la api DOM de php

Si te das cuenta el array de productos tiene el mismo nombre (variable) del nodo productos y por eso te da ese error:

Un ejemplo:

Código PHP:
Ver original
  1. <?php
  2. $productos = array('producto1', 'producto2', 'producto3');
  3.  
  4. $doc = new DOMDocument("1.0", 'utf-8');
  5.  
  6. $datos = $doc->createElement("datos");
  7. $productosNode = $doc->createElement("productos");
  8.  
  9. $doc->appendChild($datos);
  10. $datos->appendChild($productosNode);
  11.  
  12. foreach ($productos as $producto) {
  13.     $portatil = $doc->createElement('portatil', $producto);
  14.     $productosNode->appendChild($portatil);
  15. }
  16.  
  17. $doc->save('prueba.xml');
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #7 (permalink)  
Antiguo 23/09/2011, 12:28
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 4 meses
Puntos: 10
Respuesta: no me crea un elemento con la api DOM de php

andresdzphp, era eso ahora funciona bien, otra cosa una vez tengo creado el archivo xml, como tendria que hacer para crear un array con javascript con los valores que tengo en las etiquetas <portatil></portatil>

ya se que este foro es de php pero si me podeis pasar un pequeño ejemplo, saludos.
  #8 (permalink)  
Antiguo 23/09/2011, 13:00
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: no me crea un elemento con la api DOM de php

Igual puedes usar xml.getElementsByTagName al igual que lo harías en PHP.

Saludos.
  #9 (permalink)  
Antiguo 23/09/2011, 13:23
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 4 meses
Puntos: 10
Respuesta: no me crea un elemento con la api DOM de php

Gracias gato aunque sigo teniendo dudas, no tengo que crear ningun bucle verdad?ya que los valores los recoje con un array, no estoy muy seguro, si me pudieras poner un pequello ejemplo para recojer por ejemplo estos valores.

Código XML:
Ver original
  1. -<datos>
  2. -<productos>
  3. <portatil>hp</portatil>
  4. <portatil>acer</portatil>
  5. <portatil>fujitsu</portatil>
  6. </productos>
  7. </datos>

Saludos.
  #10 (permalink)  
Antiguo 23/09/2011, 13:55
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: no me crea un elemento con la api DOM de php

Deberías de hacer la pregunta en el foro de JS, pero como te digo debes de usar getElementsByTagName() para eso es, y ese te regresa un array.

En el foro de Javascript te pueden orientar más al respecto.
  #11 (permalink)  
Antiguo 23/09/2011, 17:55
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 4 meses
Puntos: 10
Respuesta: no me crea un elemento con la api DOM de php

GatorV gracias por tu respuesta, saludos.
  #12 (permalink)  
Antiguo 23/09/2011, 19:25
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 4 meses
Puntos: 10
Respuesta: no me crea un elemento con la api DOM de php

me sigue dando error cuando intento crear el xml con el dom de php, el error que me da es este:

Código PHP:
Ver original
  1. $mis_productos[]=array();
  2.     while($row=mysql_fetch_assoc($reg)){
  3.         $mis_productos[]=$row['portatil'];
  4.     }
  5.      
  6.     $doc = new DomDocument("1.0");
  7.     $datos = $doc->createElement("datos");
  8.     $datos = $doc->appendChild($datos);
  9.     $productos= $doc->createElement("productos");
  10.     $productos = $datos->appendChild($productos);
  11.      
  12.     foreach ($mis_productos as $producto) {
  13.     $portatil= $doc->createElement('portatil',$producto);
  14.     $portatil= $productos->appendChild($portatil);
  15.     }
  16.     $doc->save("archivo.xml");


Warning: DOMDocument::createElement() expects parameter 2 to be string, array given in C:\wamp\www\tienda_online.php on line 20
  #13 (permalink)  
Antiguo 23/09/2011, 19:30
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: no me crea un elemento con la api DOM de php

Cambia esta línea

Código PHP:
Ver original
  1. $mis_productos[]=array();

por esta otra:

Código PHP:
Ver original
  1. $mis_productos = array();
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #14 (permalink)  
Antiguo 24/09/2011, 04:02
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 4 meses
Puntos: 10
Respuesta: no me crea un elemento con la api DOM de php

Hola, ahora si funciona, gracias por tu colaboracion andresdzphp.

Saludos.

Etiquetas: api, crea, dom, mysql
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 10:24.