Simplifier une ligne de code

WRInaute impliqué
Bonjour,

Je cherche à simplifier ce bout de code php :
Code:
		if ($itemrow['currency'] == 1){
		
		if (($_POST['currency'] == 1) AND ($_POST['buycost'] > $itemrow['buycost']*125/100)) { $errors++; $errorlist .= "- Le prix de départ ne doit pas dépasser 125% du prix présent en boutique.<br>"; }
		if (($_POST['currency'] == 2) AND ($_POST['buycost'] > floor($itemrow['buycost']/10000))) { $errors++; $errorlist .= "- Le prix de départ ne doit pas etre supérieur à ".floor($itemrow['buycost']/10000).".<br>"; }

		}else{
		
		if (($_POST['currency'] == 1) AND ($_POST['buycost'] > $itemrow['buycost']*125/100)) { $errors++; $errorlist .= "- Le prix de départ ne doit pas dépasser 125% du prix présent en boutique.<br>"; }
		if (($_POST['currency'] == 2) AND ($_POST['buycost'] > floor($itemrow['buycost']/10000))) { $errors++; $errorlist .= "- Le prix de départ ne doit pas etre supérieur à ".floor($itemrow['buycost']/10000)." ctx.<br>"; }
		
		}

Il y a 2 fois les 2 même ligne. Merci à ceux qui pourront m'aider.
 
WRInaute impliqué
heu

Code:
if (($_POST['currency'] == 1) AND ($_POST['buycost'] > $itemrow['buycost']*125/100)) { $errors++; $errorlist .= "- Le prix de départ ne doit pas dépasser 125% du prix présent en boutique.<br>"; }
      if (($_POST['currency'] == 2) AND ($_POST['buycost'] > floor($itemrow['buycost']/10000))) { $errors++; $errorlist .= "- Le prix de départ ne doit pas etre supérieur à ".floor($itemrow['buycost']/10000).".<br>"; }

suffit largement
 
WRInaute accro
C'est clair que la simplification ne doit pas se faire au détriment d'une structuration claire du code.

L'indentation est l'ami du développeur (et de ses collègues qui reprennent régulièrement le bébé) :mrgreen:
 
WRInaute impliqué
:evil: Dites ça vous fait plaisir ce genre de commentaires déplacés, je n'ai fait qu'un copier/coller de son code et juste enlevé le if / else en trop, je n'ai pas touché à la mise en forme d'origine.

Maintenant, si c'est mal d'aider, c'est clair, je ne le ferais plus, du moins ici...
 
WRInaute accro
Il semble que certains ne savent pas quoi trop foutre de leur dimanche.

Désolé pour eux.

A méditer: la critique est aisée mais l'art est difficile

Bref au lieu de le cartoucher à vide pourquoi ne pas avoir présenté le code autrement. C'est ce qui s'appelle être constructif.

Un vieux!
 
WRInaute accro
Code:
if (($_POST['currency'] == 1) AND ($_POST['buycost'] > $itemrow['buycost']*125/100))
    $errors++; $errorlist .= "- Le prix de départ ne doit pas dépasser 125% du prix présent en boutique.<br>";

if (($_POST['currency'] == 2) AND ($_POST['buycost'] > floor($itemrow['buycost']/10000)))
    $errors++; $errorlist .= "- Le prix de départ ne doit pas etre supérieur à ".floor($itemrow['buycost']/10000).".<br>";

Après j'aurais probablement plutôt fait cela :

Code:
if (($_POST['currency'] == 1) AND ($_POST['buycost'] > $itemrow['buycost']*125/100))
    $errors[] = "- Le prix de départ ne doit pas dépasser 125% du prix présent en boutique.";

if (($_POST['currency'] == 2) AND ($_POST['buycost'] > floor($itemrow['buycost']/10000)))
    $errors[] = "- Le prix de départ ne doit pas etre supérieur à ".floor($itemrow['buycost']/10000);

Et pour afficher toutes les erreurs :

Code:
echo 'Il y a ' . count($errors) . ' erreurs';

echo '<ul>';
for($i=0;$i<count($errors);$i++) {
    echo '<li>' . $errors[$i] . '</li>;
}
echo '</ul>';
 
WRInaute impliqué
[Mode : je suis encore de mauvaise humeur]
Pas mal, deux sauts de lignes en plus, tu veux pas que je lui fasse le café aussi, et pourquoi pas 100 balles et un Mars.
[/Mode : je suis encore de mauvaise humeur]


Quand à la gestion des erreurs moi aussi je préfère utiliser les tableaux, biens plus souples, mais comme on a pas le reste du code, on a pas vraiment à y toucher
 
WRInaute accro
Ca s'appelle de la lisibilité du code. C'est peut être deux ligne en plus. Mais ça fait tout.
Franchement j'espère pour toi que tu écris du code plus lisible que ce que tu as fait plus haut. Sinon je pleins les gens qui ont le malheur de travailler avec toi.

Ecrire du code lisible, c'est quelque chose qu'on apprends aux étudiants en développement durant leurs 3 premiers mois d'études quand même.
 
WRInaute impliqué
Bon on va mettre un peu les choses au clair :

Tu es modérateur, tu n'as pas à rabrouer les gens pour un problème de saut de lignes dans leur réponse, j'ai eu la gentillesse de de prendre un peu de mon temps pour venir l'aider et tu viens me casser les bur**s parce que je n'ai pas pris le temps de faire de l'indentation, faut arrêter le délire la.

Concernant mon travail, la différence entre ici et mon travail, c'est que dans mon travail je suis payé pour prendre le temps de le faire, la, j'ai répondu rapidement à la question.

Ce qui me choque n'est pas le problème d'indentation, oui on indente et on commente un code de manière à ce qu'il soit lisible, mais la manière dont cela à été fait remarqué, et cette manière n'est pas normale de la part d'un modérateur.
 
WRInaute accro
J'ignorais qu'être modérateur signifiait ne pas pouvoir exprimer son point de vue.

Ici, sff demande comment améliorer (en simplifiant) sa ligne de code.
Si tu lui propose une solution en rendant son code illisible, autant ne rien proposer du tout.

Apporter son aide c'est super, et pour cela je te remercie.
Mais quand on le fait, on le fait complètement. Pas à moitié.
Sinon on s'abstiens.
 
WRInaute impliqué
C'est bien avec des mentalités comme celle ci que l'on pourris un forum, puisque tu vas rebuter ceux qui avaient envie de participer.

Ma solution était juste de recopier à l'identique son code en enlevant le superflus je ne l'ai pas rendu illisible, il l'était à l'origine :roll: .

Et un modérateur à un devoir de réserve et normalement se doit d'être un minimum diplomate.
 
WRInaute discret
sff a dit:
Bonjour,

Je cherche à simplifier ce bout de code php :
Code:
		if ($itemrow['currency'] == 1){
		
		if (($_POST['currency'] == 1) AND ($_POST['buycost'] > $itemrow['buycost']*125/100)) { $errors++; $errorlist .= "- Le prix de départ ne doit pas dépasser 125% du prix présent en boutique.<br>"; }
		if (($_POST['currency'] == 2) AND ($_POST['buycost'] > floor($itemrow['buycost']/10000))) { $errors++; $errorlist .= "- Le prix de départ ne doit pas etre supérieur à ".floor($itemrow['buycost']/10000).".<br>"; }

		}else{
		
		if (($_POST['currency'] == 1) AND ($_POST['buycost'] > $itemrow['buycost']*125/100)) { $errors++; $errorlist .= "- Le prix de départ ne doit pas dépasser 125% du prix présent en boutique.<br>"; }
		if (($_POST['currency'] == 2) AND ($_POST['buycost'] > floor($itemrow['buycost']/10000))) { $errors++; $errorlist .= "- Le prix de départ ne doit pas etre supérieur à ".floor($itemrow['buycost']/10000)." ctx.<br>"; }
		
		}

Il y a 2 fois les 2 même ligne. Merci à ceux qui pourront m'aider.

Bonjour à tous,
<Hors sujet>
Sans vouloir faire l'éffet inverse, c'est à dire compliquer les lignes de code, ne manque t'il pas les fonctions htmlentities() & mysql_real_escape_string() pour sécuriser les variables ?
</hors sujet>
 
WRInaute accro
Heu à la base il demandait juste de simplifier une ligne de code, pas de rentrer dans une polémique que je qualifierais de stérile.

Désolé!
 
Discussions similaires
Haut