Visualizzazione risultati 1 fino 6 di 6

Discussione: Opendir e directory con variabile.

  1. #1
    Guest

    Predefinito Opendir e directory con variabile.

    Non riesco a far accettare opendir in questo modo:

    Codice PHP:
    if ($handle = opendir("prove/".$accesso."/contenuti")) {
    Credo sia una semplice questione di apici e doppi apici, ma non riesco a venirne a capo. Suggerimenti?

  2. #2
    Guest

    Predefinito

    Prova così:
    Codice PHP:
    if ($handle = opendir("/membri/bisbiturro/prove/".$accesso."/contenuti/")) {

  3. #3
    Guest

    Predefinito

    Correzione inesatta:

    nelle condizioni non si usa = che è di assegnazione. ma ==.

    Codice PHP:
    <?php
    $handle
    = opendir('/prove/' . $accesso . '/contenuti/');
    if(
    $handle)
    {
    #Codice
    }
    closedir($handle);
    ?>
    Ultima modifica di dreadnaut : 19-04-2009 alle ore 00.59.03

  4. #4
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    @biccheddu:
    Quella non è una condizione, è una assegnazione! E' corretta così com'è, ed è un ottimo metodo per risparmiare spazio mantenendo leggibilità. Altri esempi utili:
    Codice PHP:
    if ($db = mysql_db_connect(...)) {
    ...

    if (
    $f = fopen($nomefile, "r")) {
    Un if vuole fra parentesi una espressione (booleana, o convertibile a ~), ed una assegnazione è proprio un'espressione, che come risultato ha il valore assegnato alla variabile. In php puoi scrivere:
    Codice PHP:
    $a = $b = 3;
    La maggior parte delle funzioni php restituisce false in caso di errore rendendo questa pratica molto usata - false fa fallire l'if, e si può quindi scrivere codice tipo
    Codice PHP:
    if ($qualcosa = funzione()) {
    // usiamo $qualcosa
    } else {
    // la funzione non ha funzionato
    }
    @bisbiturro:
    La sintassi è corretta - se $accesso contiene il nome di una direcctory esistente, ed il path completo è una sottodirectory della cartella in cui si trova lo script principale.

    Sintassi alternativa:
    Codice PHP:
    if ($handle = opendir("prove/{$accesso}/contenuti/")) {
    Ultima modifica di dreadnaut : 19-04-2009 alle ore 01.10.06

  5. #5
    Guest

    Predefinito

    Grazie per aver fatto un po' di chiarezza.

    Cmq no, niente da fare. Il pezzo fa parte di uno script per leggere files di test da una directory e poi stamparli a video. In altri punti l'accesso alla stessa directory funziona, la variabile passa. Lo so perchè ho provato mettendo subito la directory e poi la variabile, e funzionava. Arrivato al famigerato punto, più nulla.
    Codice PHP:
    $apridati = fopen("prove/".$accesso."/dati.txt", "r"); //QUI SI'
    $leggidati = fgets($apridati, 4096);
    fclose($apridati);
    $divididati=explode("*+", $leggidati);

    function
    getNewsList(){
    $fileList = array();

    if (
    $handle = opendir("prove/{$accesso}/contenuti/")) { //QUI NO
    while ($file = readdir($handle)) {
    if (!
    is_dir($file)) {
    $fileList[] = $file;
    }}}
    rsort($fileList);
    return
    $fileList;
    }
    Codice PHP:
    $list = getNewsList();
    foreach (
    $list as $value) {
    $newsData = file("prove/".$accesso."/contenuti/".$value); //QUI SI'
    $data = $newsData[0];
    $testo = $newsData[1];
    unset (
    $newsData['0']);
    unset (
    $newsData['1']);

    $newsContent = "";
    foreach (
    $newsData as $value) {
    $newsContent .= $value;


    }
    $testonuovo=preg_replace('#\\\"#',"'",$testo);

    echo
    "<table width='900' border='0' cellspacing='0' cellpadding='0'>
    <tr>
    <td width='400' align='center' class='body'>
    <p><img src='prove/"
    .$accesso."/immagini/".$data.".jpg'></p>
    </td>
    <td width='500' valign='top' class='body'>
    $testonuovo
    </td>
    </tr>
    </table>"
    ;
    }

    EDIT:
    Ho risolto, mi concentravo sul problema sbagliato: la sintassi era giusta (mi pareva assurdo, infatti) ma era all'interno di una funzione e avevo dimenticato che bisogna far passare le variabili anche lì. :D

    Per cui, semplicemente ho messo

    Codice:
    function getNewsList($accesso){
       $fileList = array();
    e al richiamo

    Codice:
    $list = getNewsList($accesso);
    E va che è una meraviglia. :D
    Ultima modifica di seneca : 19-04-2009 alle ore 18.31.06

  6. #6
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    $accesso è una variabile top-level, che non è visibile dentro una funzione. Passala come parametro, o se vuoi metti un global $accesso; all'inizio di getNewList, per "risucchiarla" fra le variabili disponibili nella funzione.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •