Je cherche mon erreur unexpected 'AND' (T_LOGICAL_AND)

Résolu/Fermé
chatvertdusud Messages postés 71 Date d'inscription mardi 7 avril 2015 Statut Membre Dernière intervention 14 septembre 2016 - Modifié par jordane45 le 6/07/2015 à 19:17
chatvertdusud Messages postés 71 Date d'inscription mardi 7 avril 2015 Statut Membre Dernière intervention 14 septembre 2016 - 7 juil. 2015 à 01:46
Bonjour,

Qui voit mon erreur ?

<?php if ( get_post_meta( $post->ID, 'price', true ) ) cp_get_price_legacy( $post->ID );
else cp_get_price( $post->ID, 'cp_price' ); ?></p> //je pense qu'elle ce trouve ci-dessous mais où ??
<?php if (empty($price) AND ($price>5 && $price<300000)) AND ( get_post_meta( $post->ID, 'cp_en_change_de_', true ) ) echo substr(get_post_meta($post->ID, 'cp_en_change_de_', true), 0, 13);)  ?>


Merci si vous trouvez, sinon merci quand même ;-)

EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Merci d'y penser dans tes prochains messages.
.

3 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
Modifié par jordane45 le 6/07/2015 à 19:20
Bonjour,

Tu fermes une parenthèse trop top...

et perso je préfère utiliser les && au lieu des AND

<?php 
if ( !empty($price)
        && ($price>5 && $price<300000) 
        && ( get_post_meta( $post->ID, 'cp_en_change_de_', true ) ) {
  echo substr(get_post_meta($post->ID, 'cp_en_change_de_', true), 0, 13);) 
} ?>



Cordialement,
Jordane
0
chatvertdusud Messages postés 71 Date d'inscription mardi 7 avril 2015 Statut Membre Dernière intervention 14 septembre 2016
6 juil. 2015 à 19:28
Merci Jordan,
Décidément tu es toujours là prêt à partager tes connaissances ;-)

j'ai toujours une erreur ..
syntax error, unexpected '{'
et si j'enlève les { j'ai une autre erreur avec echo ??
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
Modifié par jordane45 le 6/07/2015 à 19:43
Il y avait une autre erreur que je n'avais pas vu ...
voici :

<?php 
if ( get_post_meta( $post->ID, 'price', true ) ){
  cp_get_price_legacy( $post->ID );
}else{
  cp_get_price( $post->ID, 'cp_price' ); 
 echo "</p>"; 
}
 if ( !empty($price) 
     && ( $price>5 && $price<300000 )
     && ( get_post_meta( $post->ID, 'cp_en_change_de_', true ) ) ) {
  echo substr(get_post_meta($post->ID, 'cp_en_change_de_', true), 0, 13);)
}

?>


Cordialement,
Jordane
0
chatvertdusud Messages postés 71 Date d'inscription mardi 7 avril 2015 Statut Membre Dernière intervention 14 septembre 2016
6 juil. 2015 à 20:18
merci Jordan pour la correction,
il y avait une parenthèse ' )' en trop à la fin que j'ai enlevé, cependant je n'arrive toujours pas à faire ce que je cherche...

Il m'affiche la variable cp_en_change_de_ uniquement si la variable cp_price est remplie.
Moi je cherche à faire l'inverse: Si le champ cp_price est vide, il affiche cp_en_change_de_
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > chatvertdusud Messages postés 71 Date d'inscription mardi 7 avril 2015 Statut Membre Dernière intervention 14 septembre 2016
6 juil. 2015 à 20:23
Tu veux dire dans cette condition ?
if ( !empty($price) 
     && ( $price>5 && $price<300000 )
     && ( get_post_meta( $post->ID, 'cp_en_change_de_', true ) ) ) {
  echo substr(get_post_meta($post->ID, 'cp_en_change_de_', true), 0, 13);)
}
...

Le truc .. c'est que si $price est vide ... alors il ne peut pas être >5 ou <3000000 .....
A moins que toi tu veuilles que la condition se vérifie si il est vide OU >5 ... et donc .. utiliser des OR à la place des AND...

et donc.. ça donnerait un truc du genre:
if ( empty($price) 
     || ( $price>5 && $price<300000 )
     || ( get_post_meta( $post->ID, 'cp_en_change_de_', true ) ) ) {
  echo substr(get_post_meta($post->ID, 'cp_en_change_de_', true), 0, 13);)
}
0
chatvertdusud Messages postés 71 Date d'inscription mardi 7 avril 2015 Statut Membre Dernière intervention 14 septembre 2016
6 juil. 2015 à 20:52
j'essaie des choses mais toujours pas le résultat escompté

je souhaite que si la valeur 'price' est inferieur à 5 ou supérieur à 300000 le champ 'cp_en_change_de_' s'affiche ... je comtinue à chercher, merci ;-)
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > chatvertdusud Messages postés 71 Date d'inscription mardi 7 avril 2015 Statut Membre Dernière intervention 14 septembre 2016
6 juil. 2015 à 21:05
inferieur à 5 ou supérieur à 300000

Ben.. dans ce cas... tu t'es un peu trompé dans le sens de tes signes supérieur/inférieur...
et là encore.. ça sera des OU qu'il faut utiliser et non des ET !!!!

if ( empty($price) 
     || ( $price<5 || $price>300000 )
     || ( get_post_meta( $post->ID, 'cp_en_change_de_', true ) ) ) {
  echo substr(get_post_meta($post->ID, 'cp_en_change_de_', true), 0, 13);)
}
0
chatvertdusud Messages postés 71 Date d'inscription mardi 7 avril 2015 Statut Membre Dernière intervention 14 septembre 2016
6 juil. 2015 à 21:21
oui, j'avais vu cette grossière erreur mais cela ne change malheureusement rien.

La valeur "cp_en_change_de_" s'affiche uniquement si il y a une valeur "price"
0
chatvertdusud Messages postés 71 Date d'inscription mardi 7 avril 2015 Statut Membre Dernière intervention 14 septembre 2016
6 juil. 2015 à 21:42
function cp_remove_loop_price() {
global $post;
if ( $post->post_type == 'page' || $post->post_type == 'post' ) return;
$price = get_post_meta($post->ID, 'cp_price', true);
if (!empty($price) AND ($price>5 && $price<300000)){
?>
<div class="price-wrap">
<span class="tag-head"> </span><p class="post-price">

<?php
if ( get_post_meta( $post->ID, 'price', true ) ){
cp_get_price_legacy( $post->ID );
}else{
cp_get_price( $post->ID, 'cp_price' );
echo "</p>";
}

if ( empty($price)
|| ( $price<5 || $price>300000 )
|| ( get_post_meta( $post->ID, 'cp_en_change_de_', true ) ) ) {
echo substr(get_post_meta($post->ID, 'cp_en_change_de_', true), 0, 13);
}
?>
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
6 juil. 2015 à 21:47
1 - .. merci de mettre le LANGAGE dans les balises de code...
<code php>
<?php // ceci est du code !
</code>

2 - Tu ne nous a pas donné le code complet de ta fonction

3 - Il semble que tu aies un IF qui ne soit pas fermé ... et ce if .. contient :
if (!empty($price) AND ($price>5 && $price<300000)){

.. donc... $prince NON VIDE .... et donc en gros.. tu ne rentres jamais dans ton autre if !
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
6 juil. 2015 à 21:50
A mon avis tu avais simplement oublié de fermer le if

function cp_remove_loop_price() {
	global $post;
	if ( $post->post_type == 'page' || $post->post_type == 'post' ) return;
	
	$price = get_post_meta($post->ID, 'cp_price', true);
	
	if (!empty($price) AND ($price>5 && $price<300000)){
	  echo '<div class="price-wrap">';
	  echo '<span class="tag-head"> </span><p class="post-price">';
    }
	
	if ( get_post_meta( $post->ID, 'price', true ) ){
	  cp_get_price_legacy( $post->ID );
	}else{
	  cp_get_price( $post->ID, 'cp_price' ); 
	 echo "</p>"; 
	}

	if ( empty($price) 
		 || ( $price<5 || $price>300000 )
		 || ( get_post_meta( $post->ID, 'cp_en_change_de_', true ) ) ) {
	  echo substr(get_post_meta($post->ID, 'cp_en_change_de_', true), 0, 13);
	}



PS : Au passage .. je rappel que ceci n'a plus rien à voir avec ta question INITIALE .. et donc que logiquement tu aurais du ouvrir un NOUVELLE discussion (en pensant à mettre en résolu celle là. )
Cela facilite la lecture sur le forum et les recherches par les futurs internautes ....
0
chatvertdusud Messages postés 71 Date d'inscription mardi 7 avril 2015 Statut Membre Dernière intervention 14 septembre 2016
7 juil. 2015 à 01:46
malheureusement ça ne change rien, merci quand même ;-)
0