Page 1 sur 1
if qui ne fonctionne pas
Posté : 21 août 2023, 01:13
par tto99
je voudrai comparer des valeur de variable dans une fonction if() avec ce code
//conte le nombre de zone de text avant insertion dan la bdd
if(count($texte)) {
for($i = 0; $i < count($texte); $i++) {
//put that into your SQL inserts w/e.
$requete = mysqli_query($link, "SELECT Id_poste, Nom_poste FROM poste");
while($data = mysqli_fetch_array($requete)) {
$Id_poste =$data['Id_poste'];
$Nom_poste=$data['Nom_poste'];
//}
$Id_poste=$Id_poste + 1;
$texte[$i] = strtoupper($texte[$i]);
$Nom_poste = strtoupper($Nom_poste);
//echo $Nom_poste."<br>";
//on verifie si les postes ne sont pas deja existant
if ($texte[$i] === $Nom_poste) {
echo "$texte[$i] et $Nom_poste sont deja present<br>";
} else {
//echo $Nom_poste."deja present<br>";
//$texte[$i] = strtoupper($texte[$i]);
$Ins_poste = "INSERT INTO poste VALUES ('$Id_poste', '$texte[$i]', '$Nbr_com[$i]', '$circuit')";
//echo $Ins_poste;
mysqli_query($link, $Ins_poste);
//echo "ajouter".$texte[$i]."<br>";
}
}
}
}
tout fonctionne a par la condition if qui quoi que je rentre dans me champ me passe la requete insert meme si cela me dit que
$texte[$i] et $Nom_poste sont deja present.
alors que je voudrai que ca passe a la suivante sans l inserer dans ma table
une piste?
Re: if qui ne fonctionne pas
Posté : 21 août 2023, 01:45
par or 1
https://www.php.net/manual/fr/function.in-array.php en ayant au préalable mis les postes dans un tableau.
Re: if qui ne fonctionne pas
Posté : 21 août 2023, 04:13
par tto99
bonjour
j ai fait ceci mais ca me donne le meme resultat
//conte le nombre de zone de text avant insertion dan la bdd
if(count($texte)) {
for($i = 0; $i < count($texte); $i++) {
//put that into your SQL inserts w/e.
$requete = mysqli_query($link, "SELECT Id_poste, Nom_poste FROM poste");
while($data = mysqli_fetch_array($requete)) {
$Id_poste =$data['Id_poste'];
$Nom_poste=$data['Nom_poste'];
//}
$Id_poste=$Id_poste + 1;
$texte[$i] = strtoupper($texte[$i]);
$Nom_poste = strtoupper($Nom_poste);
//echo $Nom_poste."<br>";
//on verifie si les postes ne sont pas deja existant
$a = array($texte[$i]);
//if ($texte[$i] === $Nom_poste) {
if (in_array($Nom_poste, $a, true)) {
echo "$a et $Nom_poste sont deja present<br>";
} else {
//echo $Nom_poste."deja present<br>";
//$texte[$i] = strtoupper($texte[$i]);
$Ins_poste = "INSERT INTO poste VALUES ('$Id_poste', '$texte[$i]', '$Nbr_com[$i]', '$circuit')";
//echo $Ins_poste;
mysqli_query($link, $Ins_poste);
//echo "ajouter".$texte[$i]."<br>";
}
}
}
}
ca me dit toujours que c est présent mais ca passe quand même dans la partie else pour l insert dans la base.
Re: if qui ne fonctionne pas
Posté : 21 août 2023, 08:31
par or 1
"en ayant au préalable mis les postes dans un tableau"
ce n'est pas ce qui est fait.
il faut mettre tous les postes dans un tableau, ensuite faire la boucle for
Re: if qui ne fonctionne pas
Posté : 21 août 2023, 11:49
par tto99
j ai tester avec c code
if(count($texte)) {
$requete = mysqli_query($link, "SELECT Id_poste, Nom_poste FROM poste");
while($data = mysqli_fetch_array($requete)) {
$Id_poste =$data['Id_poste'];
$Nom_poste=$data['Nom_poste'];
//}
$a = array($data['Nom_poste']);
}
for($i = 0; $i < count($texte); $i++) {
//put that into your SQL inserts w/e.
$Id_poste=$Id_poste + 1;
$texte[$i] = strtoupper($texte[$i]);
$Nom_poste = strtoupper($Nom_poste);
//echo $Nom_poste."<br>";
//on verifie si les postes ne sont pas deja existant
//if ($texte[$i] === $Nom_poste) {
if (in_array($texte[$i], $a, true)) {
echo "$texte[$i] et $Nom_poste sont deja present<br>";
} else {
//echo $Nom_poste."deja present<br>";
//$texte[$i] = strtoupper($texte[$i]);
$Ins_poste = "INSERT INTO poste VALUES ('$Id_poste', '$texte[$i]', '$Nbr_com[$i]', '$circuit')";
//echo $Ins_poste;
mysqli_query($link, $Ins_poste);
//echo "ajouter".$texte[$i]."<br>";
}
}
// }
}
ca fonctionne a 50% je dirai ca me prend seulement la derniere valeur de mon champ "nom_poste" de ma table
et si je fait un print_r($a);
ca me dit ceci
Array ( [0] => Poste1 ) Array ( [0] => Poste2 ) Array ( [0] => Poste3 ) ....
je pense que mon probleme du coup viendrai du faite que j ai toujours Array[0] non?
je suis complètement perdu la du coup
Re: if qui ne fonctionne pas
Posté : 21 août 2023, 13:40
par Spols
là ce que tu fais c'est récupérer tous les postes et à chaque poste tu crée un tableau du coup chaque poste écrase le précédent.
il faut créer ton tableau vide et le remplir dans ta boucle
Re: if qui ne fonctionne pas
Posté : 21 août 2023, 14:27
par tto99
j ai modifer mon code par celui-ci
if(count($texte)) {
$requete = mysqli_query($link, "SELECT Id_poste, Nom_poste FROM poste WHERE Id_circuit=$circuit");
while($data = mysqli_fetch_array($requete)) {
$Id_poste =$data['Id_poste'];
$Nom_poste=$data['Nom_poste'];
//}
$a = array($data['Nom_poste']);
//print_r($data);
//}
for($i = 0; $i < count($texte); $i++) {
$Id_poste=$Id_poste + 1;
$texte[$i] = strtoupper($texte[$i]);
$Nom_poste = strtoupper($Nom_poste);
//on verifie si les postes ne sont pas deja existant
//if ($texte[$i] == $Nom_poste) {
if (in_array($texte[$i], $a, true)) {
echo "$texte[$i] est deja present<br>";
} else {
$Ins_poste = "INSERT INTO poste VALUES ('$Id_poste', '$texte[$i]', '$Nbr_com[$i]', '$circuit')";
//echo $Ins_poste;
mysqli_query($link, $Ins_poste);
//echo "ajouter".$texte[$i]."<br>";
}
}
}
}
ca m affiche bien le echo des zone déjà présente dans ma table mais ca passe aussi par le } else {
Re: if qui ne fonctionne pas
Posté : 21 août 2023, 16:22
par or 1
il faut commencer par arriver à avoir tous les noms de postes dans une variable de type tableau.
tant que print_r($a); ne retournera pas ce qu'il faut, pas la peine de s'attaquer à la suite.
Re: if qui ne fonctionne pas
Posté : 21 août 2023, 16:49
par tto99
si je fait ceci
$requete = mysqli_query($link, "SELECT Id_poste, Nom_poste FROM poste WHERE Id_circuit=$circuit");
while($data = mysqli_fetch_array($requete)) {
$Id_poste =$data['Id_poste'];
$Nom_poste=$data['Nom_poste'];
//}
$a = array($data['Nom_poste']);
print_r($a);
}
le print_r me donne bien
Array ( [0] => Poste1 ) Array ( [0] => Poste2 ) Array ( [0] => Poste3 )...
donc tout mes Nom_poste mais Array[0] du coup ca ecrase le tout pour garder le dernier
et si je fait ceci
$requete = mysqli_query($link, "SELECT Id_poste, Nom_poste FROM poste WHERE Id_circuit=$circuit");
while($data = mysqli_fetch_array($requete)) {
$Id_poste =$data['Id_poste'];
$Nom_poste=$data['Nom_poste'];
}
$a = array($data['Nom_poste']);
print_r($a);
// }
ca me sort ceci
Array ( [0] => )
c est un peut le bordel je trouve quand meme juste pour lui dire si ca = ca alors tu fait rien sinon tu insert d ou la condition if que j avai mis.
je suis obliger de refaire une requete count() pour mettre ma requete $requete dans une boucle for aussi?
Re: if qui ne fonctionne pas
Posté : 21 août 2023, 16:56
par or 1
déjà, commencer par mettre un seul
print_r($a);
après la boucle.
ensuite, connaitre la base de la manipulation des tableaux en php avant de vouloir faire un vrai projet permet ensuite de perdre beaucoup moins de temps.
Re: if qui ne fonctionne pas
Posté : 21 août 2023, 17:37
par tto99
bon après une bonne prise de tête personnel

je pense avoir résolut mon problème avec votre aide surtout
du coup j ai mis ce code.
if(count($texte)) {
$requete = mysqli_query($link, "SELECT Id_poste, Nom_poste FROM poste WHERE Id_circuit=$circuit");
while($data = mysqli_fetch_array($requete)) {
$Id_poste =$data['Id_poste'];
//$Nom_poste=$data['Nom_poste'];
$a[] = $data['Nom_poste'];
}
for($i = 0; $i < count($texte); $i++) {
$Id_poste = $Id_poste + 1;
$texte[$i] = strtoupper($texte[$i]);
$Nom_poste = strtoupper($data['Nom_poste']);
//on verifie si les postes ne sont pas deja existant
if (in_array($texte[$i], $a, true)) {
//echo "$texte[$i] est deja present<br>";
} else {
$Ins_poste = "INSERT INTO poste VALUES ('$Id_poste', '$texte[$i]', '$Nbr_com[$i]', '$circuit')";
mysqli_query($link, $Ins_poste);
}
}
}
et du coup ca a l air de fonctionné comme ca.
merci a vous or et Spols promit je vai essayer d arrêter de vous embêter

Re: [RESOLU] if qui ne fonctionne pas
Posté : 21 août 2023, 18:24
par Spols
C'est pas mal.
Et pour éviter tout erreur au cas où la requète ne retourne rien, tu devrais déclarer ton tableau $a vide avant la boucle
$a = array();
Re: [RESOLU] if qui ne fonctionne pas
Posté : 21 août 2023, 18:30
par or 1
$Id_poste = $Id_poste + 1;
si $Id_poste n'a pas une valeur avant
if(count($texte)) {
alors c'est mauvais.
l'id de la table poste devrait être en auto-incrément, et le champ id pas présent dans la requête sql insert.
ensuite, des intitulés de poste vont entrainer une erreur, aucune insertion en base de données.
Re: [RESOLU] if qui ne fonctionne pas
Posté : 21 août 2023, 18:54
par tto99
merci de infos Spol
en ce qui concerne l id dans ma table poste il et en auto-incremet mais ca fonctionne pas du coup je lui rajoute +1 a chaque fois.
je verrais ca plus tard du coup