Annonce

Faites la différence entre le service WordPress.com et l'application libre WordPress.

Mettez-vous à jour ! WordPress 3.9 est disponible en français.

Annonce 1 : Le Codex en français a besoin de vous pour avancer !
Annonce 2 : Avant de poster, n'oubliez pas de faire une petite recherche et de lire les règles de ce forum.
Annonce 3 : Lisez notre blog, il regorge de bonnes informations.
Annonce 4 : Rejoignez-nous sur Facebook, Google + et sur Twitter

#1 30-04-2012 14:43:59

Joker69
Connaisseur WP
Date d'inscription: 30-04-2012
Messages: 18

Warning: preg_match() expects parameter 2 to be string, array given

Bonjour,

Ma configuration WP actuelle
-WordPress 3.3.1. :
- PhpMyadmin: 5.3 :
- Greenxi :
- Extensions en place :
- héberger en local pour le moment :


Warning: preg_match() expects parameter 2 to be string, array given :
Bonjour à tout le monde ,
Je débute donc avec wordpress , et j'obtiens l'erreur citez ci-dessus , je vous place dans le contexte tout d'abord j'ai crée une page qui se sert de la base de donnée comme bibliothéque pour les caractéristiques nécessaires à l'utilisation de jquery google charts , ensuite je dois utiliser cette page crée dans un wordpress j'ai donc placer tout se qu'il faut dans le header.php .
Voilà ma première requète :

Code: html

global $wpdb;
$result= $wpdb->get_results("select DISTINCT width,height,type,backgroundColor,title,titleColor,maxValue from indic_archive,indic_ca,indic_dossiers,indic_graph WHERE ID_graph = ID_archive_graph",ARRAY_A);

le résultat obtenu est sous cette forme :

Code: html

 Array
(
    [0] => Array
        (
            [width] => 0
            [height] => 0
            [type] => barVert
            [backgroundColor] => a:2:{i:0;s:6:"000000";i:1;s:6:"6369FF";}
            [title] => bilingues
            [titleColor] => 66FF00
            [maxValue] => 100
        )

    [1] => Array
        (
            [width] => 700
            [height] => 700
            [type] => pie3D
            [backgroundColor] => a:2:{i:0;s:6:"FF0505";i:1;s:6:"030202";}
            [title] => evolution-CA/mois
            [titleColor] => 29FF08
            [maxValue] => 100
        )

    [2] => Array
        (
            [width] => 700
            [height] => 700
            [type] => Line
            [backgroundColor] => a:2:{i:0;s:6:"FFFFFF";i:1;s:6:"FFFFFF";}
            [title] => Lolilol
            [titleColor] => 66FF00
            [maxValue] => 100
        )

)

Le problème est que j'utiliser ceci pour trier mes donnée à la base :

Code: html

for($i=0;$i<$nbrboucles;$i++)
{

		while($req2 = $wpdb->get_results($result));
		{

au niveau du while j'ai donc l'erreur suivante : Warning: preg_match() expects parameter 2 to be string, array given in.

Cela fait un bon moment que j'essai de régler se problème mais cette fois je dois avouez que je sèche
peut être certains d'entre vous pourrez me débloquer merci d'avoir pris le temps de lire mon post

Dernière modification par Joker69 (30-04-2012 14:46:16)

Hors ligne

 

#2 30-04-2012 15:04:42

Joker69
Connaisseur WP
Date d'inscription: 30-04-2012
Messages: 18

Re: Warning: preg_match() expects parameter 2 to be string, array given

Modification de mon code :

Code: html

for($i=0;$i<3;$i++)
{
			for($i=0;$i<3;$i++)
{	
						
				$type=$result[$i]["type"];
				$backgroundColor=$result[$i]["backgroundColor"]; //backgroundColor: $.gchart.gradient('horizontal', 'ccffff', 'ccffff00'), 
				$background = unserialize($backgroundColor);
				$val1bg = $background[0];
				$val2bg = $background[1];
				$title=$result[$i]["title"];
				$titleColor=$result[$i]["titleColor"];
				$max=$result[$i]["maxValue"];
				$date_en_cour=$result[$i]["date_en_cour"];
				$anne_desirer=$result[$i]["anne_desire"];
				$nom_donnee=$result[$i]["nom_donnee"];
				$nom=$result[$i]["nom"];
				$width=$result[$i]["width"];
				$height=$result[$i]["height"];

			//Boucle qui va vérifier quel donnee nous avons a traiter pour donner la valeur a montant_cour et montant_ca
				
				
			if($nom_donnee = 'indic_ca')
			{
				echo"olo";
				//Trouver les valeurs de CA
							$montant_cour = array();
							$montant = array();
							 $result2 = $wpdb->query("select montant_ca,annee_ca,mois_ca from indic_ca WHERE annee_ca IN (".$date_en_cour.")");
							while ($val = $wpdb->get_results($result2)) 

							{
								
								array_push($montant_cour , $val->montant_ca);
								
								
							}

							$montant_cour = implode(",", $montant_cour);

							// Fin des valeurs de CA


							//Trouver les valeurs de CA de l'annee en cour
							 $result3 = $wpdb->query("select montant_ca,annee_ca,mois_ca from indic_ca WHERE annee_ca IN (".$anne_desirer.")");
							while ($val1 = $wpdb->get_results($result3)) 

							{
								
								
								array_push($montant , $val1->montant_ca);
								
							}

							$montant_ca = implode(",", $montant);

							// Fin des valeurs de CA
			}
			else
			{
							$montant_cour = array();
							$montant = array();
							 $result4 = $wpdb->query("select nbr_dossiers,annee_ca,mois_ca from indic_ca WHERE annee_ca IN (".$date_en_cour.")");
							while ($val2 = $wpdb->get_results($result4)) 

							{

								array_push($montant_cour , $val2->nbr_dossiers);

								
								
							}

							$montant_cour = implode(",", $montant_cour);

							
							 $result5 = $wpdb->query("select montant_ca,annee_ca,mois_ca from indic_ca WHERE annee_ca IN (".$anne_desirer.")");
							while ($val3 = $wpdb->get_results($result5)) 

							{

								array_push($montant, $val3->nbr_dossiers);
								
							}

							$montant_ca = implode(",", $montant);

							
		}

Voilà j'ai régler le premier problème du while mais les suivants je n'y arrive pas merci pour tout indice pouvant mettre donné

Dernière modification par Joker69 (30-04-2012 15:09:31)

Hors ligne

 

#3 30-04-2012 15:31:52

Guy
Blogueur
Date d'inscription: 07-04-2011
Messages: 15029

Re: Warning: preg_match() expects parameter 2 to be string, array given

tes requêtes retournant toujours des array, pourquoi n'utilises tu pas un foreach pour parcourir les résultats?

Hors ligne

 

#4 30-04-2012 15:47:30

Joker69
Connaisseur WP
Date d'inscription: 30-04-2012
Messages: 18

Re: Warning: preg_match() expects parameter 2 to be string, array given

je vais voir sa. Cela me permettra t-il de traiter les 3 tableaux retournés par $result ?
si c'est le cas effectivement je remplacerai mes while par des foreach ( qui sont quand même plus adapter je dois avouer à ma demande.
Je ferai suivre dès que cela aura pu être fait.

Dernière modification par Joker69 (30-04-2012 15:47:46)

Hors ligne

 

#5 30-04-2012 16:25:38

Joker69
Connaisseur WP
Date d'inscription: 30-04-2012
Messages: 18

Re: Warning: preg_match() expects parameter 2 to be string, array given

Code: html

 $result2 = $wpdb->query("select montant_ca,annee_ca,mois_ca from indic_ca WHERE annee_ca IN (".$date_en_cour.")");
							foreach($wpdb->get_results($result2) as $val) 

							{
								//array push permet d'empile un ou plusieurs éléments à la fin d'un tableau
								array_push($montant_cour , $val->montant_ca);
								
								
							}

J'ai essayer quelque choses comme sa cela ne fonctionne pas je dois avoir un soucis avec l'utilisation du foreach
cela me retourne ceci : Warning: Invalid argument supplied for foreach()
Pourtant j'ai bien utiliser le foreach de cette manière : foreach (array_expression as $value)

Dernière modification par Joker69 (30-04-2012 16:27:13)

Hors ligne

 

#6 30-04-2012 16:43:34

Guy
Blogueur
Date d'inscription: 07-04-2011
Messages: 15029

Re: Warning: preg_match() expects parameter 2 to be string, array given

je le coderai plutôt ainsi

Code: html

$result2 = $wpdb->get_results("select montant_ca,annee_ca,mois_ca from indic_ca WHERE annee_ca IN (".$date_en_cour.")");
foreach($result2 as $val) {
    //array push permet d'empile un ou plusieurs éléments à la fin d'un tableau
    array_push($montant_cour , $val->montant_ca);
}

Hors ligne

 

#7 30-04-2012 16:47:00

Joker69
Connaisseur WP
Date d'inscription: 30-04-2012
Messages: 18

Re: Warning: preg_match() expects parameter 2 to be string, array given

Eh bien effectivement cela ne me retourne plus l'erreur me reste plus cas adapter ceci à tout mon code en tout cas merci beaucoup pour votre aide Guy.

Hors ligne

 

#8 30-04-2012 17:07:52

Guy
Blogueur
Date d'inscription: 07-04-2011
Messages: 15029

Re: Warning: preg_match() expects parameter 2 to be string, array given

parfait, il me semble aussi que tu devrais optimiser tes requêtes sql, tu fais à chaque fois 4 ou 5 requêtes que tu boucles 9 fois (3 fois 3), on peut donc prévoir 40 ou 50 requêtes uniquement pour ce petit bout de code, ça me semble exagéré d'autant plus que chaque requête augmentera le temps d’accès à la page.

Hors ligne

 

#9 02-05-2012 09:44:46

Joker69
Connaisseur WP
Date d'inscription: 30-04-2012
Messages: 18

Re: Warning: preg_match() expects parameter 2 to be string, array given

Rebonjour Guy oui enfin son utilisation sera très réduite , car c'est une page qui affichera des graphiques donc charger que très rarement mais effectivement cette méthode n'est pas la meilleur j'aviserai une fois la mise en route de cette page pour des amélioration à quelque niveau .

Mais un problème se pose toujours avec les foreach que tu as crée j'ai effectuer quelque test mais on ne rentre pas dans les boucle foreach : voici le code :

Code: html

	
			if($nom_donnee = 'indic_ca')
			{
				
				//Trouver les valeurs de CA
							$montant_cour = array();
							$montant = array();
							$result2 = $wpdb->get_results("select montant_ca,annee_ca,mois_ca from indic_ca WHERE annee_ca IN (".$date_en_cour.")");

							foreach($result2 as $val) 
							{
								//array push permet d'empile un ou plusieurs éléments à la fin d'un tableau
								array_push($montant_cour , $val->montant_ca);
								echo "On ny vien!!";
							}
							

							$montant_cour = implode(",", $montant_cour);

							// Fin des valeurs de CA


							//Trouver les valeurs de CA de l'annee en cour
							 $result3 = $wpdb->get_results("select montant_ca,annee_ca,mois_ca from indic_ca WHERE annee_ca IN (".$anne_desirer.")");
							foreach($result3 as $val1)

							{
								
								
								array_push($montant , $val1->montant_ca);
								echo "On ny vien!!";
							}

							$montant_ca = implode(",", $montant);

							// Fin des valeurs de CA
			}
			else
			{
							$montant_cour = array();
							$montant = array();
							 $result4 = $wpdb->get_results("select nbr_dossiers,annee_ca,mois_ca from indic_ca WHERE annee_ca IN (".$date_en_cour.")");

							foreach($result4 as $val2)

							{

								array_push($montant_cour , $val2->nbr_dossiers);
								echo "On ny vien!!";
								
								
							}

							$montant_cour = implode(",", $montant_cour);

							
							 $result5 = $wpdb->get_results("select montant_ca,annee_ca,mois_ca from indic_ca WHERE annee_ca IN (".$anne_desirer.")");
							foreach($result5 as $val3) 

							{

								array_push($montant, $val3->nbr_dossiers);
								echo "On ny vien!!";
							}

							$montant_ca = implode(",", $montant);

							
		}

pour le moment on ne rentre pas du tout dans le else c'est normal , mais j'ai testé un simple echo dans chacune des boucles mais rien n'y fait . Après c'est la première fois que je touche vraiment au php j'ai donc parfois des erreurs de syntaxe.

Hors ligne

 

#10 02-05-2012 13:25:22

Guy
Blogueur
Date d'inscription: 07-04-2011
Messages: 15029

Re: Warning: preg_match() expects parameter 2 to be string, array given

il y en a déjà une grosse sur le if.  if($nom_donnee = 'indic_ca') le signe = simple est une affectation, non un test d'égalité qui s'écrit ==

Ensuite, je ne peux rien dire sur tes requêtes SQL et du fait qu'elles ne retournent rien, cela dépend de la manière dont sont construites tes tables.

Hors ligne

 

#11 02-05-2012 13:32:50

Joker69
Connaisseur WP
Date d'inscription: 30-04-2012
Messages: 18

Re: Warning: preg_match() expects parameter 2 to be string, array given

Merci bien je vais modifier sa et je repost demain matin mes résultats encore merci

Hors ligne

 

#12 03-05-2012 12:47:10

Joker69
Connaisseur WP
Date d'inscription: 30-04-2012
Messages: 18

Re: Warning: preg_match() expects parameter 2 to be string, array given

Voilà les tests ont portés leurs fruits , J'ai maintenant un affichage correcte j'ai revu mes requêtes pour que cela soit moin lourd et j'ai bien fait car quelque petite erreur de syntaxe s'y été glisser.
En tout cas merci bien Guy tu m'as permis d'avancer, je vais continuer a travailler sur les CMS je passerai donc faire un tour de temps en temps et qui sais je pourrai peut être aider quelques personnes par la suite

Bonne continuation à toi

Hors ligne

 

Pied de page des forums

Propulsé par PunBB 1.2.23
© Copyright 2005-2006 WordPress France

[ Generated in 0.041 seconds, 19 queries executed ]