Vous n'êtes pas identifié.
Annonce
Mettez-vous à jour ! WordPress 3.5.1 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
Pages: 1
- Index
- » Utilisation spécifique de WordPress
- » Warning: preg_match() expects parameter 2 to be string, array given
#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: 14200
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: 14200
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: 14200
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: 14200
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
Pages: 1
- Index
- » Utilisation spécifique de WordPress
- » Warning: preg_match() expects parameter 2 to be string, array given