[RESOLU] empty ou isset ?

Eléphant du PHP | 213 Messages

18 mai 2022, 16:34

Bonjour Spols,
Désolé je n'avais pas vu ton message.
Commence par afficher le contenu de tes 3 variables, et le résultat de empty($variable) et tire tes conclusions
De retour au PHP pour essayer de préserver mon emploi à 59 ans.

Eléphant du PHP | 213 Messages

18 mai 2022, 16:40

voici le code des Trois balises

Code : Tout sélectionner

if(isset($_POST["balise"]) && isset($_POST['new-asset']) && isset($_POST['old-asset'])) {// Set session variables $balise =$_POST['demg'];; $newasset =$_POST['new-asset']; $oldasset= $_POST['old-asset']; $variables = $balise. $newasset.$oldasset.'3// ElseIF old-asset and new-asset'; echo $variables; }
affiche
REN Asset 1 Asset 2 3// ElseIF old-asset and new-asset
Donc c'est OK
De retour au PHP pour essayer de préserver mon emploi à 59 ans.

Eléphant du PHP | 213 Messages

18 mai 2022, 16:50

Ce code n'affiche rien.

Code : Tout sélectionner

if(isset($_POST['balise'])){ // Si les deux variables new-asset et old-asset ne sont pas vides. if(empty($_POST['new-asset']) && empty($_POST['old-asset'])) {// Set session variables $balise =$_POST['demg'];; $newasset =$_POST['new-asset']; $oldasset= $_POST['old-asset']; $variables = $balise. $newasset.$oldasset.'3// ElseIF old-asset and new-asset'; echo $variables; } // Si la variable old-asset est pleine et si la variable new-asset est vide. // elseif(isset($_POST["balise"]) && !empty($_POST['old-asset'])) // {// Set session variables // $oldasset= $_POST['old-asset']; // echo $oldasset.'2 // ElseIF old-asset seul'; // } // Si la variable new-asset n'est pas vide et si la variable old-asset est vide // elseif(isset($_POST["balise"]) && !empty($_POST['new-asset'])) // {// Set session variables // $newasset =$_POST['new-asset']; // echo $newasset. 'Premier IF new-asset seul'; // } }// FIN IF PRINCIPAL
Il passe dans le premier elseif
De retour au PHP pour essayer de préserver mon emploi à 59 ans.

Eléphant du PHP | 213 Messages

18 mai 2022, 17:14

Ce code fonctionne pour les deux "asset" remplis, et pour que le deuxième "asset" de rempli, mais pas pour que le premier "asset" rempli.

Code : Tout sélectionner

<?php // Conditions de traitement des balises reçues if(isset($_POST['balise'])){ $page='5'; $_SESSION["_PDT"]= $_POST['demg']; $_SESSION["Prt"]= $_POST['prt']; $_SESSION["Asset"]= $_POST['new-asset']; $_SESSION["AssetOld"]= $_POST['old-asset']; $_SESSION["Time"]= $_POST['time']; // $_SESSION["Balises1"] = $_SESSION["Balises2"]; // Si les deux variables ASSET sont pleines.. if($_SESSION["_PDT"] && $_SESSION["Asset"] && $_SESSION["AssetOld"]) { $_SESSION["Balises2"] = $_SESSION["_PDT"] ."_" . $_SESSION['Prt'] . " " . "< ASSET_" . $_SESSION["Asset"] . ">" . "< ASSET-OLD_" . $_SESSION["AssetOld"] . ">". " " . "< TPX_" . $_SESSION["Time"] . ">" ."]"; echo $_SESSION["Balises2"].'Tous les asset'; } // Si la variable old-asset est pleine et si la variable new-asset est vide. elseif($_SESSION["_PDT"] && $_SESSION["AssetOld"]) {// Set session variables $oldasset= $_POST['old-asset']; echo $oldasset.'2 // ElseIF old-asset seul'; } // Si la variable new-asset est pleine et old-asset est vide. elseif($_SESSION["_PDT"] && $_SESSION["Asset"]) {// Set session variables $newasset =$_POST['new-asset']; $oldasset= $_POST['old-asset']; echo $newasset.$oldasset.'3// ElseIF old-asset and new-asset'; } }// FIN IF PRINCIPAL // Function suite clique sur le bouton précédent. elseif(isset($_SESSION['Balises2'])){ $page='5'; precedent(); } ?>
Pourquouiiiii tant de haine avec les IF?????? |*()
Pourquoi le deuxième && $_SESSION["AssetOld"] n'est pas lu dans le IF???
if($_SESSION["_PDT"] && $_SESSION["Asset"] && $_SESSION["AssetOld"])
De retour au PHP pour essayer de préserver mon emploi à 59 ans.

Mammouth du PHP | 1967 Messages

18 mai 2022, 19:18

// Si les deux variables new-asset et old-asset ne sont pas vides.
if(empty($_POST['new-asset']) && empty($_POST['old-asset']))

ceci me montre que tu n'a toujours rien compris.

isset et empty fonctionne de façon inversé
isset retournera true si la variable existe
empty retourne true si la variable est vide ou n’existe pas
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Avatar du membre
Mammouth du PHP | 1564 Messages

19 mai 2022, 08:36

"!!!" n'existe pas, maximum "!" pour "n'est pas" et aucun pour "est"

Les bases :
https://www.php.net/manual/fr/language. ... ctures.php
https://www.php.net/manual/fr/language. ... ogical.php
https://www.php.net/manual/fr/language. ... arison.php

J'utilise isset puis je vérifie ce que l'utilisateur m'envoie pour éviter les attaques au maximum (ne jamais faire confiance à ce que l'utilisateur envoi, toujours vérifier que le champs correspond bien au format attendu).

https://www.php.net/manual/fr/function.isset.php

Utiliser empty permet de gagner du temps car elle vérifie si elle existe et si elle est pas vide.

https://www.php.net/manual/fr/function.empty.php

Eléphant du PHP | 213 Messages

19 mai 2022, 09:25

Bonjour two3d,
Je comprends bien, mais ce que je ne comprends pas c'est pourquoi il ne lit pas les deux empty dans le dernier elseif.
Avec ce code je passe bien les deux premières étapes , mais quand les deux asset sont remplis il ne lit que le premier if.

Code : Tout sélectionner

<?php // Conditions de traitement des balises reçues if(isset($_POST['balise'])){ $page='5'; $_SESSION["_PDT"]= $_POST['demg']; $_SESSION["Prt"]= $_POST['prt']; $_SESSION["Asset"]= $_POST['new-asset']; $_SESSION["AssetOld"]= $_POST['old-asset']; $_SESSION["Time"]= $_POST['time']; // $_SESSION["Balises1"] = $_SESSION["Balises2"]; // Si la variable old-asset est vide >>> Donc la variable new-asset est pleine. if(empty($_SESSION["Asset"])==false ) { $_SESSION["Balises2"] = $_SESSION["_PDT"] ."_" . $_SESSION['Prt'] . " " . "< ASSET_" . $_SESSION["Asset"] . ">" . "< TPX_" . $_SESSION["Time"] . ">" ."]"; echo $_SESSION["Balises2"].'1 // asset seul'; } // Si la variable new-assett est vide >>> Donc la variable old-asse est pleine.//OK elseif(empty($_SESSION["AssetOld"])==false) {// Set session variables $oldasset= $_POST['old-asset']; echo $oldasset.'2 // ElseIF old-asset seul'; } // Si les deux variables sont pleines. elseif(empty($_SESSION["AssetOld"])==false && empty($_SESSION["Asset"])==false ) {// Set session variables $newasset =$_POST['new-asset']; $oldasset= $_POST['old-asset']; echo $newasset.$oldasset.'3// ElseIF old-asset and new-asset'; } }// FIN IF PRINCIPAL
Merci
De retour au PHP pour essayer de préserver mon emploi à 59 ans.

Avatar du membre
Mammouth du PHP | 1564 Messages

19 mai 2022, 09:45

On dirait une blague à chaque fois que vous posez des questions, d'où on met "== false" à "empty()" ?

Revoyez simplement le cours des isset et empty, ça vous aidera, on ne va réinventer la roue, prenez seulement deux minute pour lire comment ça fonctionne, ça fait deux fois qu'on vous le dis et à mon avis vous êtes parti pour continuer... Je prendrais plus la peine de répondre avec des liens vers la doc la prochaine fois.

Eléphant du PHP | 213 Messages

19 mai 2022, 10:15

@two3d
On dirait une blague à chaque fois que vous posez des questions, d'où on met "== false" à "empty()" ?

Revoyez simplement le cours des isset et empty, ça vous aidera, on ne va réinventer la roue, prenez seulement deux minute pour lire comment ça fonctionne, ça fait deux fois qu'on vous le dis et à mon avis vous êtes parti pour continuer... Je prendrais plus la peine de répondre avec des liens vers la doc la prochaine fois.
Entièrement d'accord avec vous. Si je me trompe de code à vous envoyer!!! c'était un vieux test, je ne suis pas allé dans le bon dossier. Je vous présente mes excuses.
De retour au PHP pour essayer de préserver mon emploi à 59 ans.

Mammouth du PHP | 2703 Messages

19 mai 2022, 13:47

d'où on met "== false" à "empty()" ?
cela peut être plus lisble de mettre cela, après c'est plus long à écrire, donc celui qui comprend n'en a pas besoin.

Avatar du membre
Mammouth du PHP | 1564 Messages

19 mai 2022, 16:20

Au temps pour moi, je préfère "!true" que "true == false"

D'ailleurs au passage, vaut mieux utiliser ===

Eléphant du PHP | 213 Messages

19 mai 2022, 16:32

Bonjour à tous,
En fait entre temps, avant de démissionner de mon CDD, j'ai voulu tester une autre solution.
Donc à la 51 ième solution. Cela fonctionne.
Je me suis basé sur les valeurs d'une variable.

Code : Tout sélectionner

<?PHP if(isset($_POST['balise'])){ // Set session variables $page='5'; $_SESSION["_PDT"]= $_POST['demg']; $_SESSION["Prt"]= $_POST['prt']; $_SESSION["Asset-New"]= $_POST['new-asset']; $_SESSION["Asset-Old"]= $_POST['old-asset']; $_SESSION["Time"]= $_POST['time']; //$_SESSION["Balises1"] = $_SESSION["Balises2"]; if($_POST['demg'] === 'REN'){ echo'ALL ASSET'; } elseif($_POST['demg'] === 'REP'){ echo'OLD ASSET'; } elseif($_POST['demg'] === 'DEM_PDT'||'PRT'||'NDO') { echo'NEWASSET'; } } ?>
C'est une solution qui fonctionne, mais ce n'est pas la solution à mon problème de base.
Un énorme merci à vous tous, et surtout pour votre franchise et toutes vos aide, et votre patience envers un nul de chez nul comme moi.
De retour au PHP pour essayer de préserver mon emploi à 59 ans.

Mammouth du PHP | 2703 Messages

19 mai 2022, 16:48

Au temps pour moi, je préfère "!true" que "true == false"

D'ailleurs au passage, vaut mieux utiliser ===
là, on compare le résultat de la fonction empty() à true ou false, pas true à false.
la fonction empty retourne true ou false, donc pas besoin de ===

pour strpos, la fonction peut retourner 0 ou null, là il faut comparer le type de la variable d'où === null ou !== null

Eléphant du PHP | 213 Messages

19 mai 2022, 16:52

Que de plaisir que de lire vos échanges.
J'en apprends de plus en plus grâce à vous.
De retour au PHP pour essayer de préserver mon emploi à 59 ans.

Avatar du membre
Mammouth du PHP | 1564 Messages

19 mai 2022, 17:30

Oui j'ai pas lu la doc, désolé :mrgreen: si empty retourne un booléen, == suffit