Je cherche mon erreur unexpected 'AND' (T_LOGICAL_AND)

Résolu
chatvertdusud Messages postés 82 Date d'inscription   Statut Membre Dernière intervention   -  
chatvertdusud Messages postés 82 Date d'inscription   Statut Membre Dernière intervention   -
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

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    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
    1. chatvertdusud Messages postés 82 Date d'inscription   Statut Membre Dernière intervention  
       
      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
  2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    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
    1. chatvertdusud Messages postés 82 Date d'inscription   Statut Membre Dernière intervention  
       
      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
    2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > chatvertdusud Messages postés 82 Date d'inscription   Statut Membre Dernière intervention  
       
      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
    3. chatvertdusud Messages postés 82 Date d'inscription   Statut Membre Dernière intervention  
       
      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
    4. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > chatvertdusud Messages postés 82 Date d'inscription   Statut Membre Dernière intervention  
       
      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
    5. chatvertdusud Messages postés 82 Date d'inscription   Statut Membre Dernière intervention  
       
      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
  3. chatvertdusud Messages postés 82 Date d'inscription   Statut Membre Dernière intervention  
     
    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
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      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
    2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      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
    3. chatvertdusud Messages postés 82 Date d'inscription   Statut Membre Dernière intervention  
       
      malheureusement ça ne change rien, merci quand même ;-)
      0