Visualizzazione risultati 1 fino 9 di 9

Discussione: Convertire il nome di un file in una stringa in php

  1. #1
    ImpresaVisentin non è connesso Neofita
    Data registrazione
    23-04-2012
    Messaggi
    16

    Talking Convertire il nome di un file in una stringa in php

    Ciao volevo salutare tutti per prima cosa e ringraziare tutti quelli che risponderanno al mio messaggio.
    Il mio problema è questo:
    avendo inserito un file in una variabile con con fopen() è possibile ottenere unicamente il nome del file da utilizzare come fosse una stringa in Javascript?
    questo è il codice:
    Codice PHP:
    <?php
    echo "<html>";
    echo
    "<head>
    <title>Esplora risorse in php</title>
    <script language='Javascript'>
    function redirect(nome) {
    var nome='\Dettagli/' + nome;
    alert(nome);
    location.href=nome;
    }
    </script>
    </head>"
    ;
    echo
    "<body>";
    $cartella=opendir('Dettagli');

    #Creo un ciclo che legge il contenuto della cartella e lo mette
    #in un array

    while ($file=readdir($cartella)) {

    $file_array[]=$file;

    }

    #Con un ciclo foreach prendo gli elementi, li metto in una tabella

    echo "<table>";

    foreach (
    $file_array as $file) {

    #tutti tranne quelli che iniziano per "." o per ".."
    if ( $file == ".." || $file == ".") {
    continue;
    }

    echo
    "<tr>
    <td>
    $file
    </td>
    <script> var nome=
    $file; alert(nome);</script>
    <td><button onclick='redirect(nome)'>Apri</button></td>
    <td><button>Modifica</button></td>
    <td><button>Elimina</button></td>
    </tr>"
    ;
    }
    Potreste dire che se conosco il nome del file posso anche inserirlo in una variabile, ma non è così perchè lo script legge tutto il contenuto della cartella e poi lo trasforma in una lista. Ora come faccio ad ottenere da $file il nome del file in una stringa? Se io tento con nome=$file e poi lo passo alla funzione redirect di Javascript per inserirlo nell'URL diventa "undefined" Aiuto!!
    Ultima modifica di ImpresaVisentin : 09-09-2012 alle ore 16.01.03

  2. #2
    Guest

    Predefinito

    Ci sono due problemi nel listato.

    1° PROBLEMA: Selezione file

    Tu dici di selezionare tutti i file tranne quelli che iniziano per "." o per ".."
    Ma la riga di codice che pensi si occupi di ciò, fa tutt'altra cosa!

    Dire:

    Codice:
    if ( $file == ".." || $file == ".") {
    significa: se il nome del file è ".." oppure "."

    Invece per dire: se inizia per ".." o per "." devi fare:
    Codice:
    if( $file[0]=="." || ($file[0]=="." && $file[1]==".") ){
    2° PROBLEMA: Uso degli apici

    Quando usi l'echo, e devi includere una variabile php, devi spezzare gli apici!
    Invece di scrivere:
    Codice:
    echo "<tr><td>$file</td";
    devi scrivere:
    Codice:
    echo "<tr><td>".$file."</td>";
    In questo modo fai un'opera di concatenamento. Cioè dici: concatena il testo <tr><td> + la variabile $file + il testo </td>

    In più, devi inserire anche gli apici che serviranno a javascript.
    Cioè, appreso quello che ti ho appena spiegato il tuo script diventerebbe:

    Codice:
    echo "<tr>
      <td>
      ".$file."
      </td>
      <script> var nome=".$file."; alert(nome);</script>
      <td><button onclick='redirect(nome)'>Apri</button></td>
      <td><button>Modifica</button></td>
      <td><button>Elimina</button></td>
      </tr>";
    Però sai che in js per inserire ua variabile devi fare:
    Codice:
    var nome_variabile = 'testo';
    Perciò devi inserire gli apici singoli prima e dopo la variabile $file.
    E cioè:

    Codice:
    echo "<tr>
      <td>
      ".$file."
      </td>
      <script> var nome='".$file."'; alert(nome);</script>
      <td><button onclick='redirect(nome)'>Apri</button></td>
      <td><button>Modifica</button></td>
      <td><button>Elimina</button></td>
      </tr>";
    Spero tu abbia capito tutto.
    Il listato completo non te lo ho postato appositamente per obbligarti a leggere tutto, farti capire, e far sì che sia tu a sistemarlo, non io. Solo così si impara.

    Ciao

  3. #3
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    @ImpresaVisentin :

    Quando hai una stringa javascript, se fai:
    Codice:
    var stringa = ciao;
    Quel ciao, lo vede come variabile, che nel tuo caso non esiste.
    Quindi, devi usare i doppi (o singoli) apici:
    Codice:
    var stringa= 'ciao';
    Quindi il codice diventerebbe:
    Codice PHP:
    <?php
    echo "<html>";
    echo
    "<head>
    <title>Esplora risorse in php</title>
    <script language='Javascript'>
    function redirect(nome) {
    var nome='\Dettagli/' + nome;
    alert(nome);
    location.href=nome;
    }
    </script>
    </head>"
    ;
    echo
    "<body>";
    $cartella=opendir('Dettagli');

    #Creo un ciclo che legge il contenuto della cartella e lo mette
    #in un array

    while ($file=readdir($cartella)) {

    $file_array[]=$file;

    }

    #Con un ciclo foreach prendo gli elementi, li metto in una tabella

    echo "<table>";

    foreach (
    $file_array as $file) {

    #tutti tranne quelli che iniziano per "." o per ".."
    if ( $file == ".." || $file == ".") {
    continue;
    }

    echo
    "<tr>
    <td>
    $file
    </td>
    <script> var nome='
    $file'; alert(nome);</script>
    <td><button onclick='redirect(nome)'>Apri</button></td>
    <td><button>Modifica</button></td>
    <td><button>Elimina</button></td>
    </tr>"
    ;
    }
    @projectFede:
    Il problema 1: lui vuole eiminare le directory "." e "..", che sono le cartelle (simboli di linux) per rappresentare la directory corrente e superiore.

    Per il problema 2, vedi qui.

    Ciao!

    EDIT: ah, il problema degli apici js non avevo visto che l'aveva scritto anche projectFede.. vabbè, l'abbiamo spiegato 2 volte .
    Ultima modifica di alemoppo : 09-09-2012 alle ore 17.31.35

  4. #4
    Guest

    Exclamation

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    @projectFede:
    Il problema 1: lui vuole eiminare le directory "." e "..", che sono le cartelle (simboli di linux) per rappresentare la directory corrente e superiore.
    Non per contraddirti, ma lui nel commento del listato ha scritto:
    #tutti tranne quelli che iniziano per "." o per ".."
    Ma ha usato un simbolo di equivalenza: " == "
    Per questo motivo l'ho segnalato come errore.

  5. #5
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    ah ho capito cosa dici. In effetti non avevo letto quel commento.
    In ogni caso, i caratteri dalle stringhe si estraggono con la graffa, e non con le quadre (come in C).
    anche se io, sinceramente, avrei usato la strpos('..') == 0

    Ciao!

  6. #6
    Guest

    Predefinito

    Non per sembrare petulante ahaha sto scherzano per carità, ma se fai:

    Codice:
    $a="ciao";
    echo $a[0];
    ti stampa proprio "c".

    Prova con http://writecodeonline.com/php/.

    E' giusto così per confrontarci ;)

    :::EDIT:::

    Giusto così per chiacchierare, ho provato e funziona anche come dici tu.
    Codice:
    $a="ciao"; echo $a{0};
    Non sapevo si potesse fare anche così
    Ultima modifica di projectFede : 09-09-2012 alle ore 18.24.41

  7. #7
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    Ah, io non sapevo che andava bene anche con le quadre.
    C'é sempre da imparare: io ho migrato da C a PHP e ho dovuto sopportare quelle graffe -.-
    Meglio così, che si possono usare le quadre, anche se ormai ho imparato con le graffe

    Citazione Originalmente inviato da projectFede Visualizza messaggio
    E' giusto così per confrontarci ;)
    altrimenti non saremmo qui.

    Ciao!
    Ultima modifica di alemoppo : 09-09-2012 alle ore 18.33.48

  8. #8
    ImpresaVisentin non è connesso Neofita
    Data registrazione
    23-04-2012
    Messaggi
    16

    Predefinito

    Vi ringrazio entrambi,e io che cercavo pure una funzione giusta per trasformare il file in una stringa, invece era solo un discorso di apici e concatenamenti.
    E a proposito del primo problema, quello del punto e dei 2 punti in verità non avevo sbagliato a scrivere il codice ma il commento

  9. #9
    Guest

    Predefinito

    Perfetto, sono contento che sia andato tutto bene! :D

Tags for this Thread

Regole di scrittura

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