Warning: Illegal string offset 'name' in

Résolu/Fermé
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 - 20 mars 2019 à 20:09
jordane45 Messages postés 38142 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 - 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;
}
A voir également:

3 réponses

jordane45 Messages postés 38142 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
20 mars 2019 à 20:15
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);
			

0