8791 sujets

Développement web côté serveur, CMS

Bonjour,

Pouvez-vous me consacrer un peu de votre temps ?
J'ai besoin d'aide...

Dans ma page, j'ai le message suivant :
a écrit :

Warning: explode() expects parameter 2 to be string, array given in /customers/creaprint.be/creaprint.be/httpd.www/new/boutique10.php on line 46


Voici exactement le code php de début de page :

<?php
	session_start();
	$php="boutique10";
	
	date_default_timezone_set('Europe/Brussels');
	$dd = date("Y").date("m").date("d");
	
	require_once("php/fonctions-panier.inc.php");
	require_once("php/connexionMysql.inc.php");

	if (isset($_GET['suppr']) && !empty($_GET['suppr'])) {
		$id=$_GET['suppr'];
		supprimerArticle($id);
	}
	if (isset($_GET['plus']) && !empty($_GET['plus'])) {
		$id=$_GET['plus'];
		ajouterPiece($id);
	}
	if (isset($_GET['moins']) && !empty($_GET['moins'])) {
		$id=$_GET['moins'];
		retirerPiece($id);
	}
	$maxProduit = compterArticles();
		
	unset($promomots);
	$promo = "";
	$promoval = number_format(0,2,',',' ');
	$promopourcent = number_format(0,2,',',' ');
	$reduction = "";
	if (isset($_SESSION['panier'])) {
		$promo=$_SESSION['panier']['promo'];		
	}
	if (isset($_GET['promo']) && !empty($_GET['promo'])) {
		$promo=$_GET['promo'];
	}
	if ($promo != "") {
		$reqPromo="SELECT * FROM shop_promos ".
			"WHERE code='".$promo."' ";
		$resPromo=mysql_query($reqPromo);
		$back=mysql_fetch_array($resPromo);
		if ($back['activation'] == "O" AND $dd >= $back['periode_de'] AND $dd <= $back['periode_a']) {
			$promo = $back['code'];
			$promofamille = $back['categorie00'];
			$texte = explode(" ",$back['mots_cles']);
			$texte = preg_replace ("/\s+/", " ", $texte);
			$promomots = explode(" ",$texte);
			$promoval = number_format($back['promo_valeur'],2,',',' ');
			$promopourcent = number_format($back['promo_pourcent'],2,',',' ');
		} else {
			$promo = "";
		}
		$_SESSION['panier']['promo']=$promo;
	}
?>

Modifié par jytest (13 Mar 2012 - 10:33)
Merci pour le doute. Mais c'est bien explode que je souhaite utiliser !
Merci aussi pour les renvois de fonctions php !
Mais mon problème est toujours là !!!

A l'aide svp.
l'erreur est assez explicite.

Le second paramètre (explode('séparateur',$variable_chaine)) $variable_chaine doit être une chaine et non un tableau (array).

Il semblerait que tu donnes un tableau et donc ça ne marche pas.
Hello,


$texte = explode(" ",$back['mots_cles']); //A
$texte = preg_replace ("/\s+/", " ", $texte); //B
$promomots = explode(" ",$texte);//C


La fonction explode retourne un tableau, donc c'est normal que tu aies cette erreur:
- en A, $texte devient array().
- en B, traitement bizarre (pas sûr que preg_replace accepte des tableaux en paramètres)
- en C tu passes $texte en paramètre à explode qui est un tableau : ce type de données n'étant pas pris en compte par la fonction, ça ne marche pas.

Pour t'en sortir et traiter chaque case du $texte (après A), tu dois faire une boucle, et réaliser les traitements sur chaque case...
En gros:


$texte = explode(" ",$back['mots_cles']);
$size = sizeof($texte);
$promomots = array();
for($i = 0 ; $i < $size; $i++){
   $texte[$i] = preg_replace ("/\s+/", " ", $texte[$i]);
   $promomots[] = explode(" ",$texte[$i]);
}
Merci à tous...
J'ai compris !
J'aurai dû mettre


			$texte = $back['mots_cles'];
			$texte = preg_replace ("/\s+/", " ", $texte);
			$promomots = explode(" ",$texte);


Vu que $texte est une variable simple !
J'avais oublié que explode créait un tableau !
Merci
Modifié par jytest (13 Mar 2012 - 10:28)