8721 sujets

Développement web côté serveur, CMS

Bonjour,
Je dois faire en sorte que
Si une variable est pleine >>Alors on affiche ce texte.
SI c'est une autre >>Alors on affiche un autre texte.
Si ce sont les deux pleines >> Alors on affiche un autre texte.
Ex:
variable $_POST["new-asset"]
variable $_POST["old-asset"]
variable $_POST["new-asset"] et variable $_POST["old-asset"]
J'ai essayé plus de 50 façons de faire, et cela génère toujours le même soucis.
Dès que la variable $_POST["new-asset"] est pleine, ou que les deux soient pleines j'arrive toujours dans le premier IF.

<?php
// 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 (isset($_POST["new-asset"]) && isset($_POST["old-asset"]))// NE PAS TOUCHER
 {
    // Si la variable new-asset est pleine et si la variable old-asset est vide.
    if (!empty($_POST["new-asset"]))
    {// Set session variables
      echo 'IF new-asset seul';
    }
    // Si la variable old-asset est pleine et si la variable new-asset est vide.
    elseif (!empty($_POST['old-asset']))
    {// Set session variables
      echo 'ElseIF old-asset seul';
    }
    // Si les deux variables new-asset et old-asset sont pleines.
    elseif (!empty($_POST["new-asset"]) && !empty($_POST['old-asset']))
    {// Set session variables
      echo 'ElseIF old-asset and new-asset';
    }
}// Fin du IF principal.
?>


Ce simple code aussi ne fonctionne pas

<?php
// 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'];

if (!empty($_POST["new-asset"]) && !empty($_POST["old-asset"])) {
 
} elseif(!empty($_POST['new-asset'])) {
    echo 'elseIF old-asset seul';
} elseif(!empty($_POST['old-asset'])) {
    echo 'elseIF new-asset seul';
}
else{
    echo 'else new-asset et old-asset';
}
?>

Franchement je ne sais plus comment faire.
Merci.
Modifié par wisefun77 (19 May 2022 - 15:30)
Salut,

il te manque des conditions entre ce que tu écris en français et ce que tu écris en code Smiley ohwell
Ici il faut vérifier que old-asset est vide comme tu le dis en français, mais dans ton code :

// Si la variable new-asset est pleine et si la variable old-asset est vide.
    if (!empty($_POST["new-asset"]))
connecté
Modérateur
griller ou pas, comme te le dit Mathieuu tes if sont incomplets

tu veut probablement quelque chose du genre
<?php
// 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 (isset($_POST["new-asset"]) && isset($_POST["old-asset"]))// NE PAS TOUCHER
 {
    // Si la variable new-asset est pleine et si la variable old-asset est vide.
    if (!empty($_POST["new-asset"]) && empty($_POST['old-asset']))
    {// Set session variables
      echo 'IF new-asset seul';
    }
    // Si la variable old-asset est pleine et si la variable new-asset est vide.
    elseif (!empty($_POST['old-asset']) && empty($_POST["new-asset"]))
    {// Set session variables
      echo 'ElseIF old-asset seul';
    }
    // Si les deux variables new-asset et old-asset sont pleines.
    elseif (!empty($_POST["new-asset"]) && !empty($_POST['old-asset']))
    {// Set session variables
      echo 'ElseIF old-asset and new-asset';
    }
    // Si les deux variables new-asset et old-asset sont vides.
    elseif (empty($_POST["new-asset"]) && empty($_POST['old-asset']))
    {// Set session variables
      echo 'ElseIF  all empty';
    }
}// Fin du IF principal.
?>

J'y ai ajouté le cas ou les deux sont vides , ça peut te servir aussi Smiley cligne
Bonjour gcyrillus,
Merci pour ton message.
Je viens de tester et c'est le même soucis .
Si $_POST["new-asset"] est plein il va dans le Elseif de la fin elseif
 (!empty($_POST["new-asset"]) && !empty($_POST['old-asset']))


Si $_POST["new-asset"] est plein et Si $_POST["old-asset"] est plein il va dans le Elseif de la fin elseif
(!empty($_POST["new-asset"]) && !empty($_POST['old-asset']))


Seul si $_POST["old-asset"] est plein va dans le bon elseif
elseif (!empty($_POST['old-asset']) && empty($_POST["new-asset"]))


Je ne sais si cela a une importance, mais je sous dans un IIS php version 7.4.
J'ai l'impression que le && n'est pas lu.
Merci pour ta patience et ton aide.
connecté
Modérateur
alors c'est étrange, peut-etre as tu autre chose qui modifie tes valeurs dans ton script.

En prenant le minimum dans un fichier test :
<form method="post">
<input name="new-asset"placeholder="new">
<input name="old-asset"placeholder="old">
<input type="submit">
</form>

<?php
if(!empty($_POST)){
// 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 (isset($_POST["new-asset"]) && isset($_POST["old-asset"]))// NE PAS TOUCHER
 {
    // Si la variable new-asset est pleine et si la variable old-asset est vide.
    if (!empty($_POST["new-asset"]) && empty($_POST['old-asset']))
    {// Set session variables
      echo 'IF new-asset seul';
    }
    // Si la variable old-asset est pleine et si la variable new-asset est vide.
    elseif (!empty($_POST['old-asset']) && empty($_POST["new-asset"]))
    {// Set session variables
      echo 'ElseIF old-asset seul';
    }
    // Si les deux variables new-asset et old-asset sont pleines.
    elseif (!empty($_POST["new-asset"]) && !empty($_POST['old-asset']))
    {// Set session variables
      echo 'ElseIF old-asset and new-asset';
    }
    // Si les deux variables new-asset et old-asset sont vides.
    else /*if (empty($_POST["new-asset"]) && empty($_POST['old-asset']))*/
    {// Set session variables
      echo 'ElseIF  all empty';
    }
}// Fin du IF principal.
?>

Cela semble fonctionné correctement sous apache 7.2.19, 7.3.2 et 8.1.5
peut tu tester juste cette partie ?

Cdt
Meilleure solution
Ouiiiii ton fichier fonctionne bien.
En fait entre temps, avant de démissionner, j'ai voulu tester une autre solution.
Dans à la 51 ième solution. Cela fonctionne.
Je me suis basé sur les valeurs d'une variable.

<?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';
}
}
?>


Maintenant je vais tester en remplacant les && par des ||.
Merci pour ton aide et tes actions.
Je ne vois pas d'erreur dans son code Smiley ohwell
Est ce que tu as vérifié le contenu de ton $_POST ?

Edit : Nouvelle réponse : pour le coup ton nouveau code m'a l'air incompréhensible par rapport à la question de départ mais bon .. si cela résout ton problème c'est parfait
Modifié par Mathieuu (19 May 2022 - 16:36)
connecté
Modérateur
wisefun77 a écrit :


Maintenant je vais tester en remplacant les &amp;&amp; par des ||.
Merci pour ton aide et tes actions.


Attention avec || / OR , dés qu'une seule condition est bonne c'est validé.

Bonne continuation
Bonjour Mathieuu,
a écrit :
Est ce que tu as vérifié le contenu de ton $_POST ?

Oui j'avais essayé aussi ce cette manière.
Mais comme j'ai tout modifié ma façon de faire, et que cela fonctionne, je ne vais pas vous demander plus.

Merci à tous pour votre aide et vos astuces.
Bonjour gcyrillus,

Oui c'est pour cela que je veux un OR.
Merci pour ton message.

Vous êtes tous(toutes) des pro humains.