Erreur Notice: Uninitialized string offset

Résolu
evia93 Messages postés 8 Statut Membre -  
evia93 Messages postés 8 Statut Membre -
Bonjour,

j'ai une erreur : Notice: Uninitialized string offset de la ligne : $a_errors[] = '<div class="artforms-errorwsize">Le fichier est vide<br />( '.$max_size.' KBytes )<br />fichier: '.$_FILES['attfile']['name'][$g].'</div>';

Pourriez-vous me dire pourquoi s'il vous plaît ?

6 réponses

  1. Pitet Messages postés 2845 Statut Membre 530
     
    Que veux tu tester avec la condition suivante ?

    if ($_FILES['attfile']['name'][$g] != '')


    Es-tu sur que la variable $_FILES['attfile']['name'][$g] existe ? Ne serait-il pas plutôt la variable $_FILES['attfile']['name'] ?
    1
  2. Pitet Messages postés 2845 Statut Membre 530
     
    Salut,

    Ton erreur provient surement de ce code :
    $_FILES['attfile']['name'][$g]


    En effet, la variable $_FILES['attfile']['name'] est une chaine de caractères.

    Tu peux accéder aux différents offset d'une chaine avec la notation [], exemple :
    $machaine = 'test';
    echo $machaine[0]; // affiche t
    echo $machaine[1]; // affiche e
    echo $machaine[2]; // affiche s
    echo $machaine[3]; // affiche t
    echo $machaine[4]; // erreur Uninitialized string offset: 4 -> cet offset n'existe pas
    


    Je ne sais pas à quoi correspond ta variable $g, mais sa valeur correspond à un offset non défini de ta chaine $_FILES['attfile']['name'].

    Bonne journée
    0
  3. evia93 Messages postés 8 Statut Membre
     
    Salut, merci pour ta réponse, je vois ce que tu veux dire mais je n'arrive toujours pas à résoudre mon problème.

    Voici mon code depuis le début de la variable $g :

    $attachments = array();
    	for( $g = '0'; $g < $attfilescount; $g++ ) {
    		//echo "error [" . $_FILES['attfile']['error'][$g] . "]";
    	    if ( $_FILES['attfile']['error'][$g] == '4' && $_FILES['attfile']['name'][$g] == '' ){
                // no file
    		}
    		elseif ($_FILES['attfile']['error'][$g] == 1 || $_FILES['attfile']['size'][$g] > ($max_size * 1024)){
    			// UPLOAD_ERR_INI_SIZE
    			$a_errors[] = '<div class="artforms-error">Le fichier dépasse la taille maximum autorisée<br />(max. '.$max_size.' KBytes)<br />fichier : '.$_FILES['attfile']['name'][$g].'</div>';
    		}
    		elseif ($_FILES['attfile']['size'][$g] == 0){
    			$a_errors[] = '<div class="artforms-errorwsize">Le fichier est vide<br />( '.$max_size.' KBytes )<br />fichier: '.$_FILES['attfile']['name'][$g].'</div>';
    		}
    		elseif (!afMimeTypeIsInArray($_FILES['attfile']['type'][$g], $mimetypen_array)){
    			$chktypealert = '<div class="artforms-errorwtype">';
    			$chktypealert .= 'Type de fichier incorrect' .'<br />*.'.afGetFileExt( $_FILES['attfile']['name'][$g] ).' ('.$_FILES['attfile']['type'][$g].')<br /><br />fichier : '.$_FILES['attfile']['name'][$g].'<br />';
    			//$chktypealert .= '<br />'.JText::_( 'ARTF_ONLYFILESALLOWED' ).'<br /><a href="javascript:void(0);" onClick="javascript:if(document.getElementById(\'afallowedfilesspoiler'.$g.'\').style.display != \'\') { document.getElementById(\'afallowedfilesspoiler'.$g.'\').style.display = \'\';this.innerText = \'\'; this.value = \'Hide\'; } else { document.getElementById(\'afallowedfilesspoiler'.$g.'\').style.display = \'none\'; this.innerText = \'\'; this.value = \'Show\'; };">'.JText::_( 'ARTF_CLICKTOSHOW' ).'</a><div><div id="afallowedfilesspoiler'.$g.'" style="display: none;"><ul>';
    			foreach ($mtypes_key_array as $key){
    				$chktypealert .= "\n<li>".$mtypes_allowed[$key]['ext']."</li>";
    			}
    			$a_errors[] = $chktypealert;
    		}
    		else {
    			if ($_FILES['attfile']['name'][$g] != '' ){
    				$attachmentsname = str_replace(' ','-',$_FILES['attfile']['name'][$g]);
    				$attachments[] = $artuplpfad.$attachmentsname;
    				$attachmentstodb[] = $attachmentsname;
    				move_uploaded_file($_FILES['attfile']['tmp_name'][$g],$artuplpfad.$attachmentsname);
    			}
    		}
    	}
    0
    1. evia93 Messages postés 8 Statut Membre
       
      Je suis débutante en programmation..désolée si je n'arrive pas à capter du premier coup..
      0
  4. evia93 Messages postés 8 Statut Membre
     
    dès que j'enlève le [$g] je n'ai plus la même erreur, la page me donne : "you cannot load this page directly."
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Alain_42 Messages postés 5413 Statut Membre 904
     
    je pense que tu as mis dans ton formulaire

    <input type="file" name="attfile[]" ......
    

    donc tu devrait essayer avec
    if ($_FILES['attfile'][$g]['name']


    idem pour tous les autres de ta boucle for($g.....
    0
  7. evia93 Messages postés 8 Statut Membre
     
    Finalement, il fallait supprimer [$g] ! donc c'était
    if ($_FILES['attfile']['name'][$g] != '')


    Merci Pitet !
    0