Menu

Warning: Illegal string offset 'name' in [Résolu]

Messages postés
328
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
6 mai 2019
- - Dernière réponse : jordane45
Messages postés
25609
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 mai 2019
- 20 mars 2019 à 23:28
Bonjour, J'ai ce message qui apparait "Warning: Illegal string offset 'name' in" et je ne sais pas à quoi c'est dû. Pouvez-vous m'aider s'ils vous plait. J'ai fait un print_r et tout semble normal, le fichier article est bien présent pourtant l'INSERT ne se fait pas. Je vous remercie.
$action 	= 'new';
$a 			= !empty($_GET['a']) ? $_GET['a'] : NULL;
$submit 	= !empty($_POST['submit']) ? $_POST['submit'] : NULL;
$haction 	= !empty($_POST['haction']) ? $_POST['haction'] : NULL;

$idart 		= !empty($_REQUEST['idart']) ? $_REQUEST['idart'] : NULL;
$article 	= !empty($_POST['article']) ? $_POST['article']['name'] : '';
$lieuart 	= !empty($_POST['lieuart']) ? addslashes($_POST['lieuart']) : '';
$dateart 	= !empty($_POST['dateart']) ? dw2m($_POST['dateart']) : '';
$descart 	= !empty($_POST['descart']) ? $_POST['descart'] : '';

switch($a) {
	case 'new': $action = 'new';  break; 
	case 'ls' : $action = 'list'; break;
	default   : $action = 'new';  break; 
}

if($submit) {

	switch($haction) {
		case 'new':
			$extensions_valides = array( 'pdf' );
			//1. strrchr renvoie l'extension avec le point (« . »).
			//2. substr(chaine,1) ignore le premier caractère de chaine.
			//3. strtolower met l'extension en minuscules.
			$extension_upload = strtolower(  substr(  strrchr($_FILES['article']['name'], '.')  ,1)  );
			if (!in_array($extension_upload,$extensions_valides) ) {
				$erreur = "<span class='erreur'>Vous devez ajouter un fichier de type PDF</span>";
			} else {
				
			$sql = "INSERT INTO cdc_articles (article, lieuart, dateart, descart) VALUES (:article, :lieuart, :dateart, :descart)";
			$datas = array('article' => $article, 'lieuart' => $lieuart, 'dateart' => $dateart, 'descart' => $descart);
			$result = executeQuery($sql,$datas);
			$typenr = "enregistré";
			$reqaj = $requete; 
			$success = "<span class='success'>Le nouvelle article du - ".dFR("$dateart")." - a été $typenr.</span>";
			}
			break;
	}
}

switch($action) {
	case 'new':   
		$title      = "Saisie d'un Article";
		$btsub      = "Enregistrer";
		$idart     	= "";
		$article   	= "";
		$lieuart   	= "";
		$dateart  	= "";
		$descart  	= "";
		break;

	case 'list': 
		$title  	= "Liste des Articles";
		break;
}
Afficher la suite 

Votre réponse

3 réponses

Messages postés
25609
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 mai 2019
1622
0
Merci
Bonjour,

Tu ne nous indiques pas le numéro de ligne qui va avec le message d'erreur...
mais on peut supposer que ça vient de la ligne
$article 	= !empty($_POST['article']) ? $_POST['article']['name'] : '';


Il aurait également été bien de nos fournir le résultat de ton print_r ... histoire qu'on puisse voir les variables qui sont envoyée dans ton $_POST

Mais on peut supposer que, pour ton cas, le "bon" code serait :

$article 	= !empty($_POST['article']) ? $_POST['article'] : '';


Et si vraiment.. ton array article contient un "name" .. dans ce cas il faudra ajouter :
$article_name = !empty($article['name']) ? $article['name'] : '';

et donc modifier ton array lors de l'insertion
$datas = array('article' => $article_name , 'lieuart' => $lieuart, 'dateart' => $dateart, 'descart' => $descart);
			

Commenter la réponse de jordane45
Messages postés
328
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
6 mai 2019
0
Merci
Bonjour, Merci pour ton aide. En effet c'est bien cette ligne qui pose problème N° 7. Voici mon print_r.
Array
(
    [dateart] => 08/03/2019
    [article] => 029.pdf
    [lieuart] => 
    [descart] => Assemblée Générale
    [haction] => new
    [idart] => 
    [submit] => Enregistrer
)

J'ai modifié comme tu me l'a proposé, plus aucune erreur de retourné mais toujours pas d'INSERT et l'erreur "Vous devez ajouter un fichier de type PDF"
jordane45
Messages postés
25609
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 mai 2019
1622 -
Alors... qu'as tu modifié exactement ?

Sachant que :
- Le message que tu nous donnes n'est pas un message d'erreur ... mais le résultat d'un echo qui se trouve dans le if qui signifie donc que ton formulaire ne contient aucun fichier ou que tu n'envoies pas le $_FILES

remplace
$extension_upload = strtolower(  substr(  strrchr($_FILES['article']['name'], '.')  ,1)  );
if (!in_array($extension_upload,$extensions_valides) ) {
  $erreur = "<span class='erreur'>Vous devez ajouter un fichier de type PDF</span>";
} 


par :
//récupération PROPRE des variables AVANT de les utiliser :
$files = !empty($_FILES['article']) ? $_FILES['article'] : NULL;


$fileName = !empty($files['name']) ? $files['name'] : NULL;
if($fileName){
 $extension_upload = strtolower(  substr(  strrchr($fileName, '.')  ,1)  );
 if (!in_array($extension_upload,$extensions_valides) ) {
   $erreur = "<span class='erreur'>Vous devez ajouter un fichier de type PDF</span>";
 } 
}else{
  print_r($_FILES);
}


pense aussi à nous montrer le code de ton formulaire.... (as tu bien mis le enctype à ton form ? )
<form method="post" action="" enctype="multipart/form-data">

Commenter la réponse de LaChaux78
Messages postés
328
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
6 mai 2019
0
Merci
Je suis un gros boulet après ton dernier post tout à merveilleusement fonctionner j'avais complètement oublié le enctype.
Je te remercie.
Cordialement
jordane45
Messages postés
25609
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 mai 2019
1622 -
Pense à mettre le sujet en résolue.
Commenter la réponse de LaChaux78