Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    problema nel passaggio di variabile a fopen()

    Un saluto a tutti sono nuovo di questo forum e devo dire che le vostre pillole sono utilissime, ora però mi trovo di fronte ad un problema con la funzione fopen con la quale vorrei creare un nuovo file.
    Il codice che ho utilizzato è questo:

    Codice PHP:
    $name=$_POST['name'];
    $filename=$name.".xml";
    $dir="./images/".$name;
    $album=$dir."/".$filename;

    function 
    xml_creator($album)
        {            
            if(!
    file_exists($album))
            {    
                
    $new_xml=fopen("$album","w");
                
    $bool=true;
            }
            else
            {
                
    $bool=false;
                
    $answer="The file $album exists";
            }
            
    check($bool);
        } 
    il codice non è del tutto completo perchè c'è qualche altra funzione compresa quella che richiama xml_creator($album), comunque tale funzione non mi genera il file, le ho provate davvero tutte, sapete dirmi dove potrebbe essere l'errore?

    preciso che se scrivo fopen("./images/prova/prova.xml", "w"); la funzione funziona ma non capisco perchè passandogli la variabile $album non dovrebbe funzionare.
    Un grazie a chiunque sappia rispondermi.

  2. #2
    Che cosa restituisce questo codice?

    Codice PHP:
    var_dump($album); 

  3. #3
    Ti ringrazio per la tempestiva risposta e grazie per avermi fatto scoprire questa utile funzione della quale non ero a conoscenza, dunque il risultato è alquanto strano infatti se la utilizzo all'esterno della funzione mi torna:
    Codice PHP:
    string(26"./images/111111/111111.xml" 
    ma se la metto all'interno della funzione mi torna:
    Codice PHP:
    NULL 
    perchè non mi vede la variabile all'interno della funzione se l'ho dichiarata in precendenza?

  4. #4

  5. #5
    Questo è l'intero codice del file in php:


    Codice PHP:
    <?php

        
    //$name=$_POST['name'];
        
    $name="111111";
        
    $filename=$name.".xml";
        
    $dir="./images/".$name;
        
    $filealbum="./images/albums.xml";
        
    $album=$dir."/".$filename;
        
    $bool=false;
        
    $boolo=false;
        
    $answer="";
        
        if(@
    dir($dir))
        {
            
    $boolo=false;
            
    check($bool);
        }
        else
        {
            
    $boolo=true;
            
    $bool=true;
            
    mkdir($dir0777);
            
    f_exists($filealbum);
            
    //check($bool);
        
    }    

        function 
    f_exists($filealbum)
        {
            if(!
    file_exists($filealbum))
            {    
                
    fopen("./images/albums.xml""w+");
                
    chmod("./images/albums.xml"0775);
                
    $bool=true;
            }
            else
            {
                
    $answer="file already exist";
            }
            
            
    xml_creator($album);
        }
        
        function 
    xml_creator($album)
        {
            if(!
    file_exists($album))
            {    
                
    $new_xml=fopen("$album","w");
                
    $bool=true;
            }
            else
            {
                
    $bool=false;
                
    $answer="The file $album exists";
            }
            
    check($bool);
        }
        
        function 
    check($bool)
        {
            if(
    $bool&&$boolo)
            {
                
    $answer="ok";
                echo (
    "answer=".$answer);
            }
            else
            {
                
    $answer="no";
                echo (
    "answer=".$answer);
            }
        }
    ?>

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    613
    E' un problema di scope della variabile.

    Codice PHP:


    function f_exists($filealbum)
        {
            if(!
    file_exists($filealbum))
            {    
                
    fopen("./images/albums.xml""w+");
                
    chmod("./images/albums.xml"0775);
                
    $bool=true;
            }
            else
            {
                
    $answer="file already exist";
            }
            
    // $album non esista dentro f_exists
            
    xml_creator($album);
        } 
    Hai due possibilità

    1) Quando richiami f_exists gli passi come parametro anche $album
    Codice PHP:
    function f_exists($filealbum$album)
        {
            if(!
    file_exists($filealbum))
            {    
                
    fopen("./images/albums.xml""w+");
                
    chmod("./images/albums.xml"0775);
                
    $bool=true;
            }
            else
            {
                
    $answer="file already exist";
            }
            
            
    xml_creator($album);
        } 
    2) Dichiari $album golobal all'interno di f_exists
    Codice PHP:
    function f_exists($filealbum)
        {
            
           global 
    $album;        

            if(!
    file_exists($filealbum))
            {    
                
    fopen("./images/albums.xml""w+");
                
    chmod("./images/albums.xml"0775);
                
    $bool=true;
            }
            else
            {
                
    $answer="file already exist";
            }
            
            
    xml_creator($album);
        } 
    Preferibilmente usa la prima
    Conosci te stesso(?)
    (..e allora perchè scassi a me? )

  7. #7
    Ti ringrazio per la tempestiva risposta ora funziona, pensavo che le variabili dichiarate in precedenza fossero globali e le funzioni riuscissero a vederle, invece da quanto ho capito bisogna per forza passargliele. Spero possa essere di aiuto a qualcun'altro anche come esempio per creare file e cartelle.

    Grazie ancora per il tuo tempo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.