Regresar a la página www.ComoCrearTuWeb.com
Página 1 de 2 12 ÚltimoÚltimo
Resultados 1 al 15 de 23

Tema: function fopen

  1. #1
    Esto empieza a ser un vicio... Habitante Avatar de gjulian
    Fecha de Ingreso
    29 ene, 09
    Ubicación
    Sevilla
    Mensajes
    558
    Poder de Reputación
    19

    function fopen

    Saludos, tengo un problema. ¿Como hacer para que con la funcion fopen pueda escribir en el archivo antes de una determinada etiqueta?
    Ya que con
    Código PHP:
    $archivo=fopen("feeds.xml","a+")
    echo 
    fgets($archivo550"<br>");
    if (
    $archivo)
    {
    fputs ($archivo"<item>");
    fputs ($archivo"<title>".$nombre[0]."</title>");
    fputs ($archivo"<link>http://localhost/SevillaGuapa/".$imagen['url']."</link>");
    fputs ($archivo"<description>subida por: ".$_SESSION['usuario']."</description>");
    fputs ($archivo"</item><br/>");
    }
    fclose ($archivo);

    solo consigo escribir al final, y ya tengo cerrada la etiqueta </channel></rss>, con lo que no funca el archivo.
    Gracias
    Última edición por gjulian; 03/07/2012 a las 18:33
    Lo mejor de caerse al tropezar, es volverse a levantar.

  2. #2
    Esto empieza a ser un vicio... Habitante Avatar de lantiga
    Fecha de Ingreso
    23 feb, 11
    Mensajes
    903
    Poder de Reputación
    18
    Eso es por el parametro que le das al archivo : a+

    Ahora me pillas con pensamiento python en la cabeza ; pero creo recordar que son similares;Me explico hay varias maneras de manejas archivos a groso modo : escribir , leer y adherir. Osea (w ,r ,a), te paso el link de php que hablo sobre el tema y asi quizás lo entiendas mejor http://php.net/manual/es/function.fopen.php
    Suscribete a Los videotutoriales de Lantiga y podre hacer vídeos más largos y con mejor calidad.

  3. #3
    Esto empieza a ser un vicio... Habitante
    Fecha de Ingreso
    02 may, 11
    Ubicación
    Santiago, Chile
    Mensajes
    2,079
    Poder de Reputación
    25
    Holas:

    Ya que es un archivo XML, utiliza la clase DOM de PHP para manejar archivos de este tipo. Con esto te ahorrarías tiempo en crear una forma de manejarlos :D. Por otro lado podrías buscar en google xml php.

    Saludos.

  4. #4
    Esto empieza a ser un vicio... Habitante Avatar de gjulian
    Fecha de Ingreso
    29 ene, 09
    Ubicación
    Sevilla
    Mensajes
    558
    Poder de Reputación
    19
    Ya quisiera yo, dominar como tu dominas php.
    No se sabes que soy novato y bastante torpe. Es por esto que dirijo aqui mis dudas, porque se supone que se aclara paso a paso.
    Me imagino que esto: (XML_TEXT_NODE (integer) El nodo es un segmento de texto) quiere decir, que si en mi archivo escribo esa constante, me escribirá el segmento que valga la variable integer. Pero no lo sé y no sé como hacerlo.
    Tiempo al tiempo.
    Lo mejor de caerse al tropezar, es volverse a levantar.

  5. #5
    Esto empieza a ser un vicio... Habitante Avatar de victor5atodogas
    Fecha de Ingreso
    19 abr, 10
    Ubicación
    Zaragoza (España)
    Mensajes
    1,657
    Poder de Reputación
    23
    SOLUCION: Tal y como te han comentado en la documentacion esta la respuesta: http://php.net/manual/es/function.fopen.php

    'r+' Apertura para lectura y escritura; coloca el puntero al fichero al principio del fichero.
    'a+' Apertura para lectura y escritura; coloca el puntero al fichero al final del fichero. Si el fichero no existe se intenta crear.

    Con lo que con sustituir r por a lo tendrás solucionado.

    Un saludo.
    Tienda de Productos de mascotas (perros, gatos, roedores, reptiles, pajaros, peces, tarjetas regalo, cestas...) a los mejores precios El Universo del perro Sigue a El Universo del Perro en Facebook

    Si quieres montar tu tienda con Prestashop y necesitas que te ayude puedes preguntarme, tambien ofrezco buenos precios para instalacion, configuracion, etc para tu nueva tienda.

  6. #6
    Esto empieza a ser un vicio... Habitante Avatar de gjulian
    Fecha de Ingreso
    29 ene, 09
    Ubicación
    Sevilla
    Mensajes
    558
    Poder de Reputación
    19
    Pero la cuestion es; como escribir dentro de una parte escrita.
    Si cambio a por r me escribe desde el principio y no puedo tener repe "<?xml version="1.0" encoding="ISO-8859-1"?>
    <rss version="2.0">
    <channel>
    <title>Mi Sevilla Guapa</title>
    <link>http://localhost/SevillaGuapa/principal.php</link>
    <description>Web Fotografica de Sevilla</description>
    " cada vez que haaya una subida.
    Mira este es el archivo feeds.xml
    Código HTML:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <rss version="2.0">
    <channel>
    <title>Mi Sevilla Guapa</title>
    <link>http://localhost/SevillaGuapa/principal.php</link>
    <description>Web Fotografica de Sevilla</description>
    
    </channel>
    </rss>
    Pues con el archivo de subida rss.php:
    Código PHP:
    if(!is_uploaded_file($_FILES["imagen"]["tmp_name"]))
    {
    echo 
    "<b style='color:red'>Error al subir archivo</b>";
    }
    else {
    $tipos = array("image/gif","image/jpeg","image/jpg","image/png");
    $maximo 5000000//4.7 Mb
    if (in_array($_FILES["imagen"]["type"],$tipos) && $_FILES["imagen"]["size"] <= $maximo)

    include(
    "conect.php");
    $nombre = ($_FILES["imagen"]["name"]);
    $nombre str_replace(" ","_",$nombre);
    $nombre explode("/.",$nombre);
    $peticion mysql_query("INSERT INTO imagenes(nombre,url,nick) VALUES('".$nombre[0]."','subidas/".$nombre[0]."','".$_SESSION["usuario"]."')") or die(mysql_error());
    move_uploaded_file(($_FILES["imagen"]["tmp_name"]),"subidas/".$nombre[0]);    
    $verificar mysql_query("SELECT * FROM imagenes ORDER BY imagen_id DESC LIMIT 0,1");
    $numeros mysql_num_rows($verificar);
    if(
    $numeros <= 0)
    {
    echo 
    "<b style='color: red;'>No se han encontrado imagenes</b><br/>";
    }
    else {
    echo 
    "<br/><h2>Esta es tu imagen subida ".$_SESSION['usuario']."</h2>";
    if(
    $imagen mysql_fetch_array($verificar))

    if((
    $_FILES['imagen']['size'])>10000)
    {
    echo 
    "<img width='500' heigh='auto' float='center' src=".$imagen['url'].">";
    }
    else {
    echo 
    "<img float='center' src=".$imagen['url'].">";
    }
    echo 
    "<br/>".$imagen['nombre'];
    echo 
    "<br/><a href='tus_img.php'><h2>Ver tus imagenes.</h2></a>|<a href='mostrar_todas_Img.php'><h2>Ver todas las imagenes</h2></a>";
    }
    }
    //desde aqui es para el rss
    $archivo fopen("feeds.xml" "a+");
    if (
    $archivo)
    {
    fputs ($archivo"<item>");
    fputs ($archivo"<title>".$nombre[0]."</title>");
    fputs ($archivo"<link>http://localhost/SevillaGuapa/".$imagen['url']."</link>");
    fputs ($archivo"<description>subida por: ".$_SESSION['usuario']."</description>");
    fputs ($archivo"</item>");
    }
    fclose ($archivo);

    }
    else {
    echo 
    "<b style='color: red;'>Revisa la extension o el tamaño del archivo</b></style>";
    }

    Lo que pretendo es que esa subida ingrese en el archivo feeds.xml, antes de la etiqueta </channel></rss> de ese archivo. ¿No se si me explico?
    Última edición por gjulian; 04/07/2012 a las 19:27
    Lo mejor de caerse al tropezar, es volverse a levantar.

  7. #7
    Esto empieza a ser un vicio... Habitante
    Fecha de Ingreso
    02 may, 11
    Ubicación
    Santiago, Chile
    Mensajes
    2,079
    Poder de Reputación
    25
    Ok, aquí hay una forma simple de hacerlo:

    prueba.xml
    Código HTML:
    <?xml version="1.0" ?>
    <root>
      <item>
        <value>Valor1</value>
      </item>
      <item>
        <value>Valor2</value>
      </item>
    </root>
    leer.php
    Código PHP:
    <?php
      $archivo 
    file_get_contents'prueba.xml' ); // $archivo es una cadena de texto con el contenido del archivo.
      
    $xml = new SimpleXMLElement$archivo );
      echo 
    $xml->item[0]->value;
    ?>
    En tu caso, la lectura sería así:

    Código PHP:
    <?php
      $archivo 
    file_get_contents'feeds.xml' ); // $archivo es una cadena de texto con el contenido del archivo.
      
    $xml = new SimpleXMLElement$archivo );
      echo 
    $xml->item[0]->title '<br />';
      echo 
    $xml->item[0]->link '<br />';
    ?>
    Eso sería lo más fácil :P. Aquí hay más ejemplos sobre cómo usar SimpleXMLElement.

    Saludos.

  8. #8
    Esto empieza a ser un vicio... Habitante Avatar de gjulian
    Fecha de Ingreso
    29 ene, 09
    Ubicación
    Sevilla
    Mensajes
    558
    Poder de Reputación
    19
    Creo que estas hablando de POO php, y eso para mi es igual que si me hablaces en chino.
    Por que ¿donde debe ir esto?:
    Código PHP:
    <?php
      $archivo 
    file_get_contents'prueba.xml' ); // $archivo es una cadena de texto con el contenido del archivo.
      
    $xml = new SimpleXMLElement$archivo );
      echo 
    $xml->item[0]->title '<br />';
      echo 
    $xml->item[0]->link '<br />';
    ?>
    Ya que he copiao los archivos y solo me dice :Warning: file_get_contents(prueba.xml) [function.file-get-contents]: failed to open stream: No such file or directory in C:\wamp\www\SevillaGuapa\leer.php on line 2

    Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in C:\wamp\www\SevillaGuapa\leer.php:3 Stack trace: #0 C:\wamp\www\SevillaGuapa\leer.php(3): SimpleXMLElement->__construct('') #1 {main} thrown in C:\wamp\www\SevillaGuapa\leer.php on line 3

    y en el archivo .xml no se escribe nada.
    Y esto de copiar y pegar sin entender el code no me gusta, ya que no aprendo nada.
    Lo mejor de caerse al tropezar, es volverse a levantar.

  9. #9
    Esto empieza a ser un vicio... Habitante
    Fecha de Ingreso
    02 may, 11
    Ubicación
    Santiago, Chile
    Mensajes
    2,079
    Poder de Reputación
    25
    A ver... POO no es muy relevante, pues basta con entender que se esta creando un objeto ($xml = new Simple...) y luego se llama a las propiedades ($xml->item[0]) que en este caso serán los nodos del archivo xml.

    En cuanto a los archivos, ambos errores son lo mismo si me dices que en el archivo xml no se escribe nada. Por lo demás debes entender que lo que yo publiqué es SÓLO para leer el archivo, no para guardarlo. Para guardarlo haría esto:

    Código PHP:
    $out "<item>
      <title>
    $nombre[0]</title>
      <link>http://localhost/SevillaGuapa/
    $imagen[url]</link>
      <description>subida por: 
    $_SESSION[usuario]</description>
      </item>"
    // <br /> esta demás.

    $archivo 'feeds.xml';
    if( 
    file_put_contents$archivo$out ) !== FALSE ) {
      echo 
    "El archivo se guardó.";


  10. #10
    Me va gustando esto... Habitante Avatar de SurKaiser
    Fecha de Ingreso
    15 oct, 11
    Mensajes
    256
    Poder de Reputación
    14

    Cool

    No se porque se complican tanto con algo simple y sencillo.

    primero asegurate de darle permisos a los archivo correspondientes y despues intenta esto:

    Código PHP:
    <?php
    //recuerda tus demas variables
    //tambien poner la ruta de tu archivo en donde dice TUARCHIVO
    $contenido file_get_contents("TUARCHIVO.XML");
    $obtener strstr($contenido,"</rss>");
    $quitar str_replace("</channel>","",$obtener);
    $contenido str_replace("</rss>","",$quitar);
    $nuevocontenido"
      <title>
    $nombre[0]</title>
      <link>http://localhost/SevillaGuapa/
    $imagen[url]</link>
      <description>subida por: 
    $_SESSION[usuario]</description>";
    $contenido $contenido $nuevocontenido;
    $fp fopen("TUARCHIVO.XML","w+");
    $fput fwrite($fp,$contenido);
    $fc fclose($fp);

    ?>
    Saludos!
    Mi web en construccion :
    surkaiser . com . es
    "El conocimiento es Poder"

  11. #11
    Esto empieza a ser un vicio... Habitante
    Fecha de Ingreso
    02 may, 11
    Ubicación
    Santiago, Chile
    Mensajes
    2,079
    Poder de Reputación
    25
    No se porque se complican tanto con algo simple y sencillo.
    Porque según entendí de esto:

    Como hacer para que con la funcion fopen pueda escribir en el archivo antes de una determinada etiqueta
    Lo que quiere es insertar contenido en un punto específico, cosa que no se podría hacer (sin complicarse aún más) con las funciones de escritura/lectura de archivos :P.

  12. #12
    Me va gustando esto... Habitante Avatar de SurKaiser
    Fecha de Ingreso
    15 oct, 11
    Mensajes
    256
    Poder de Reputación
    14
    Digo complicarse por el exceso de respuestas en algo tan simple, no aclaro que sea caso particular el tuyo sino en general, porque le hablas de OOP Y DOM cuando apenas esta en fopen >.< , es por eso que mi funcion inserta en un punto especifico sin usar funciones mas avanzadas, y tienes razon en que con fopen tecnicamente no es posible pero tampoco exagerar usando una libreria de php, en la que no siempre viene por defecto con php y/o se tiene que activar en un php.ini o configurar etc.
    Ademas deberia conocer lo que es el arbol de nodos en dom , como lo interpreta un navegador y muchas cosas profundas del tema.


    Saludos.
    Mi web en construccion :
    surkaiser . com . es
    "El conocimiento es Poder"

  13. #13
    Esto empieza a ser un vicio... Habitante Avatar de gjulian
    Fecha de Ingreso
    29 ene, 09
    Ubicación
    Sevilla
    Mensajes
    558
    Poder de Reputación
    19
    Bueno despues de probar vuestros codes os digo el resultado.
    SurKaiser, el tuyo me borra el contenido del archivo y me escribe "0"
    skaparate, el tuyo me borra el contenido, tambien, y me escribe la ultima subida. Lo que estaría medio bien si quisiera que en mi RSS sólo hubiera 1 feeds. Que no es el caso.
    De modo que viendo lo problematico del tema, voy a hacer una consulta mysql de... por ejemp. las 10 ultimas subidas y que se escriban en el archivo segun se vallan subiendo. Tal que asi:
    Código PHP:
    <?
    $verificar 
    mysql_query("SELECT * FROM imagenes  ORDER BY imagen_id ASC LIMIT 10");
    $archivo fopen("feeds.xml" "r+");
    if (
    $archivo)
    {
    fputs ($archivo'<?xml version="1.0" encoding="ISO-8859-1"?>');
    fputs ($archivo'<rss version="2.0">');
    fputs ($archivo"<channel>");
    fputs ($archivo"<title>Mi Sevilla Guapa</title>");
    fputs ($archivo"<link>http://localhost/SevillaGuapa/principal.php</link>");
    fputs ($archivo"<description>Web Fotografica de Sevilla</description>");
    while(
    $imagen mysql_fetch_array($verificar)) {
    fputs ($archivo"<item>");
    fputs ($archivo"<title>".$imagen[0]."</title>");
    fputs ($archivo"<link>http://localhost/SevillaGuapa/".$imagen['url']."</link>");
    fputs ($archivo"<description>subida por: ".$imagen['nick']."</description>");
    fputs ($archivo"</item>");
    }
    fputs ($archivo"</channel>");
    fputs ($archivo"</rss>");
    fclose ($archivo);
    }
    ?>
    ¿Que supongo que está bien?
    Lo he retocao
    Última edición por gjulian; 05/07/2012 a las 13:23
    Lo mejor de caerse al tropezar, es volverse a levantar.

  14. #14
    Esto empieza a ser un vicio... Habitante Avatar de gjulian
    Fecha de Ingreso
    29 ene, 09
    Ubicación
    Sevilla
    Mensajes
    558
    Poder de Reputación
    19
    Gracias Srs. aunque era laborioso el tema, me ha servido de mucho y he aprendido cosas.
    Lo doy por sanjado.
    Lo mejor de caerse al tropezar, es volverse a levantar.

  15. #15
    Esto empieza a ser un vicio... Habitante
    Fecha de Ingreso
    02 may, 11
    Ubicación
    Santiago, Chile
    Mensajes
    2,079
    Poder de Reputación
    25
    Digo complicarse por el exceso de respuestas en algo tan simple, no aclaro que sea caso particular el tuyo sino en general, porque le hablas de OOP Y DOM cuando apenas esta en fopen >.< , es por eso que mi funcion inserta en un punto especifico sin usar funciones mas avanzadas, y tienes razon en que con fopen tecnicamente no es posible pero tampoco exagerar usando una libreria de php, en la que no siempre viene por defecto con php y/o se tiene que activar en un php.ini o configurar etc.
    Ademas deberia conocer lo que es el arbol de nodos en dom , como lo interpreta un navegador y muchas cosas profundas del tema.
    Es verdad, pero como aprender HTML no es muy complicado :)... En cuanto a SimpleXML, sería raro que un servidor moderno no la active por defecto. Entendería que no se habilitara SSL, pero SimpleXML es muy fácil de instalar (puede ser que el administrador del servidor sea algo "flojo" XD).

    skaparate, el tuyo me borra el contenido, tambien, y me escribe la ultima subida. Lo que estaría medio bien si quisiera que en mi RSS sólo hubiera 1 feeds. Que no es el caso.
    Me rindo XD. Como te digo en el otro post: al parecer nunca logro ayudarte XD. Lo único que se me ocurre es que no tengas permisos de escritura en la carpeta donde intentas crear el archivo... pero ya da lo mismo pues lo solucionaste tú :D.

    Saludos.

Página 1 de 2 12 ÚltimoÚltimo

Temas Similares

  1. function fopen para feeds rss
    Por gjulian en el foro Sindicar o compartir contenido en la web con Feed RSS
    Respuestas: 3
    Último Mensaje: 06/07/2012, 10:21
  2. TypeError: this.object.sendEvent is not a function
    Por Foxwan en el foro Foro General
    Respuestas: 5
    Último Mensaje: 06/05/2012, 21:43
  3. function mmLoadMenus no funciona en navegadores
    Por manchego en el foro Otros Elementos
    Respuestas: 1
    Último Mensaje: 26/10/2011, 15:57
  4. Funcion "fopen" de php a traves de HTML-KIT
    Por toti en el foro Php Bases de Datos y MySQL (Nuevo!)
    Respuestas: 9
    Último Mensaje: 03/08/2011, 20:41
  5. Fatal error: Call to undefined function: mysql_connect?¿? ALGUIEN ME AYUDA PLZ
    Por sepiro en el foro Php Bases de Datos y MySQL (Nuevo!)
    Respuestas: 18
    Último Mensaje: 13/03/2011, 23:19

Permisos de Publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •