Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    57

    funzione count(glob()) che non conta

    Ciao ragazzi, devo contare quanti file ci sono in una cartella e chimera il file che devo uploadere come "conta quante ce ne sono di quella estensione"+1.
    Così evito di avere doppioni quando carico un immagine.
    Codice PHP:
    if ($_FILES["file"]["error"] > 0)  {  echo "Error: " $_FILES["file"]["error"] . "<br>";  }else  {      $image=$_FILES["file"]["name"];      $temp_name=$_FILES["file"]["tmp_name"];      $type=$_FILES["file"]["type"];      if(isset($_FILES['file']['tmp_name']))       {
            
    // Error Handling in case of equal name        if($type=="image/jpeg")   //if the image type is jpeg        {                $fileCount = count (glob ('upload/*.jpeg'));                $newName = 'upload/' . ( $fileCount + 1) . '.jpeg';                move_uploaded_file($_FILES['file']['tmp_name'], $newName);                $image=($fileCount+1).'.jpeg';                // print file name                echo($image);                            echo "<div align='center'>";                echo "Clothe Adedded Successfully";                echo "<a href='index.php'>Click here to come Back to the index page</a><br>";                echo "<a href='indexx.php'>Add new Clothe</a>";                echo "</div>";        } 
    E' sempre andato e oggi non funziona, che mi ricordi non ho toccato niente, ma magari è solo una svista logica.
    Grazie in anticipo!

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    42
    Guarda il colore e noterai subito l'errore!!
    Dopo ogni commento ci va un ritorno a capo!
    Mi dispiace che hai dovuto attendere quasi un mese per ottenere una risposta



    Spero di esserti stato utile

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    42
    Per essere sicuro che lo riscrivi giusto ti metto il codice corretto:

    Codice PHP:
    if ($_FILES["file"]["error"] > 0)  
    {  
    echo 
    "Error: " $_FILES["file"]["error"] . "<br>";  
    }
    else  
    {      
    $image=$_FILES["file"]["name"];      
    $temp_name=$_FILES["file"]["tmp_name"];      
    $type=$_FILES["file"]["type"];      
    if(isset(
    $_FILES['file']['tmp_name']))       
    {        
    // Error Handling in case of equal name       
    if($type=="image/jpeg")   //if the image type is jpeg        
    {                
    $fileCount count (glob ('upload/*.jpeg'));                
    $newName 'upload/' . ( $fileCount 1) . '.jpeg';                
    move_uploaded_file($_FILES['file']['tmp_name'], $newName);                
    $image=($fileCount+1).'.jpeg';                
    // print file name                
    echo($image);                            
    echo 
    "<div align='center'>";               
    echo 
    "Clothe Adedded Successfully";                
    echo 
    "<a href='index.php'>Click here to come Back to the index page</a><br>";                
    echo 
    "<a href='indexx.php'>Add new Clothe</a>";                
    echo 
    "</div>";        


  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    42
    Noto ora che manca anche la graffa di chiusura di
    Codice PHP:
    if(isset($_FILES['file']['tmp_name'])) 

  5. #5
    Ciao,
    occhio che glob() può ritornare anche FALSE in caso di errore [EDIT -> CAVOLATA se non trova nessun elemento ritorna FALSE]. Se fai count(FALSE) hai 1.

    Ti conviene salvare il risultato di glob() in una variabile e fare un controllo tipo
    Codice PHP:
    $files glob('upload/*.jpeg');
    $fileCount $files === FALSE count ($files); 
    http://www.morialberto.it

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    42
    Quote Originariamente inviata da albx87 Visualizza il messaggio
    Ciao,
    occhio che glob() può ritornare anche FALSE in caso di errore [EDIT -> CAVOLATA se non trova nessun elemento ritorna FALSE]. Se fai count(FALSE) hai 1.

    Ti conviene salvare il risultato di glob() in una variabile e fare un controllo tipo
    Codice PHP:
    $files glob('upload/*.jpeg');
    $fileCount $files === FALSE count ($files); 
    Sinceramente trovo un po' complicato l'uso di un if ternario ma se lo trovi più comodo...

    Per vedere se ho capito...

    Non ternario potrebbe andare così vero:

    Codice PHP:
    if (!glob('upload/*.jpeg'))
    {
     echo 
    'Errore nelle eseguire glob()!!';
    }
    else
    {
     
    $files glob('upload/*.jpeg');
     
    $fileCount count($files);

    Giusto???

  7. #7
    Si...corretto. Si, personalmente se posso utilizzo il ternario ma se non ti piace puoi benissimo mettere una if. 2 cose solo:

    1) non vedo l'utilità di chiamare 2 volte la funzione glob. Io l'assegnerei ad una variabile e poi utilizzerei quella
    2) Adesso che rivedo bene la documentazione il codice si potrebbe semplificare ancora in questo modo:
    Codice PHP:
    $files glob('upload/*.jpeg');
    $fileCount 0;

    /*
    glob ritorna FALSE se va in errore o un array vuoto se non trova nessun elemento => controllo se la variabile NON è vuota
    */
    if(!empty($files)){
       
    $fileCount count($files);

    In questo modo non c'è nemmeno necessità di utilizzare un operatore ternario
    http://www.morialberto.it

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    42
    A dire la verità l'avevo pensato quasi uguale:
    Codice PHP:
    $files glob('upload/*.jpeg');

    if(!
    $files){   $fileCount count($files);

    Dovrebbe fungere anche questo?

    Comunque io non uso il ternario perché sono un giovane programmatore (13 anni) e le sole (ma non così poche) cose che so le ho imparate solo da un libro. So che sono ternarie perché so che ci sono in JavaScript e ero quasi sicuro ci fossero anche in PHP. Io preferisco comunque gli if normali specialmente se sono lunghi.

  9. #9
    No...stai facendo il confronto al contrario...facendo if(!$files){....} stai dicendo se la mia variabile $files è falsa allora assegna il count...devi fare il contrario, quindi if($files){.....}. il mio consiglio è quello di usare la funzione empty() che controlla se la variabile è settata e non è vuota (è un controllo più completo del semplice if($variabile) )
    http://www.morialberto.it

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    42
    Sì scusa che sbadato!!! Il problema è che ho copiato il tuo codice e ho tolto empty ma così facendo ho rovesciato tutto... E non avendo controllato...

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.