PHP foreach

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : PHP foreach

Re: PHP foreach

par sirakawa » 05 déc. 2014, 11:40

Je ferais ça en deux fichiers:
index.html
<form method="POST" action="traiter.php">

 <label for="nom">Nom:</label>
 <input type="text" required ="required" name="nom" />

 <label for="prenom">Prénom</label>
 <input type="text" required ="required" name="prenom" />

 <input type="radio" name="sexe" checked ="checked' value="m" />
 <span>M</span>

 <input type="radio" name="sexe" value="f" />
 <span>F</span>

 <p>Votre adresse courriel:</p>
 <input type="text"  required ="required" name="courriel" /></p>
 <p><input type="submit" value="inscrire" name="Submit" /></p>

 </form>
et traiter.php
 <?PHP
$message = "";
$valide = true;
//var_dump($_POST);
//var_dump (isset($_POST['prenom']));
//print "<br>";
//var_dump (is_null($_POST['prenom']));
if (isset ($_POST['prenom']))
{
 	$prenom = $_POST['prenom'];
	if ($prenom == "")
	{
		$valide = FALSE;
		$message .= "sans prénom";
	}
}
else
{
	$valide = FALSE;
	$message .= "accès litigieux";
}
 if (isset ($_POST['sexe']) == False)
{
 	$sexe = "";
	$message .= "asexué";
	$valide = false;
}
else
{
	
}
 /*
idempour $nom = $_POST['nom'];
 $sexe= $_POST['sexe']; 
 $courriel = $_POST['courriel'];
*/

 if ($valide)
{
 include 'bottin.php';
}
else
{
	print "$message";
}
 ?>

Re: PHP foreach

par Nestecha » 05 déc. 2014, 02:45

Hello, essaie avec ce code :
$sError = 0;

$definitionSexe= array( "M"=> array("nom"=>"Masculin","appellation"=>"Monsieur"), "F"=>array("nom"=>"feminin","appellation"=>"Madame") );

$personnes= array();
$personnes["LaporteGabriel"]=array("prenom"=>"Gabriel","nom"=>"Laporte","sexe"=>"M","courriel"=>"[email protected]" );

$personnes["ChenierJoanne"]=array("prenom"=>"Joanne","nom"=>"Chenier","sexe"=>"F","courriel"=>"[email protected]" );

$personnes["LavoieDrapeauRoxanne"]=array("prenom"=>"Roxanne","nom"=>"LavoieDrapeau","sexe"=>"F","courriel"=>"[email protected]");

$personnes["LaporteJacques"]=array("prenom"=>"Jacques","nom"=>"Laporte","sexe"=>"M", "courriel"=>"[email protected]" );

$personnes["LaporteSandrine"]=array("prenom"=>"Sandrine","nom"=>"Laporte","sexe"=>"F", "courriel"=>"[email protected]" );

$personnes["LegrisAntoine"]=array("prenom"=>"Antoine","nom"=>"Legris","sexe"=>"M","courriel"=>"[email protected]" );

$personnes["AlexanderDurand"]=array("prenom"=>"Alexander","nom"=>"Durand","sexe"=>"M","courriel"=>"[email protected]" );

if (isset($_POST['Submit'])) {
    foreach($personnes as $aSubPersonne) {
        if ($_POST['nom'] == $aSubPersonne['nom'] && $_POST['prenom'] == $aSubPersonne['prenom'] && $_POST['sexe'] == $aSubPersonne['sexe'] && $_POST['courriel'] == $aSubPersonne['courriel']) {
            echo 'Bienvenue ' . $aSubPersonne['prenom'] . ' ' . $aSubPersonne['nom'] . '.';
            $sError = 0;
            exit();
        } else {
            $sError++;
        }
    }
}

if ($sError > 0) {
    echo 'Erreur de connexion, utilisateur introuvable.';
}
Ce n'est pas très beau, mais c'est le code du départ qui veut ça.
En fait ce qui est dérangeant, c'est le fait de devoir vérifier chaque personne une à une.
Pour expliquer un peu le code :
1/ On boucle avec le foreach pour passer dans tous les sous-tableaux de $personnes.
2/ On vérifie si les valeurs envoyées en $_POST (tel que $_POST['nom']) sont égales ou non aux valeurs correspondantes dans le sous-tableau dans lequel nous nous trouvons (tel qu'ici : $aSubPersonne['nom']).
3/ Si toutes les valeurs concordent, on remet le compteur d'erreur initialement crée à 0, puis on quitte la boucle avec exit() (l'utilité de ceci, c'est parce qu'en 4, on ajoute 1 au compteur d'erreur si les valeurs ne concordent pas, sauf qu'on a déjà trouvé le bon résultat, donc on aura des erreurs si la boucle continue et voit des valeurs qui ne concordent pas).
4/ Si toutes les valeurs ne concordent pas, on ajoute 1 au compteur d'erreur (et on continue dans la boucle).
5/ Après ce foreach, si la valeur de $sError est égale à 0, on écrit rien. Si elle est supérieure à 0, on écrit une erreur de connexion.

Re: PHP foreach

par Petit problème » 05 déc. 2014, 01:20

Voici ma base de données:

<?php

$definitionSexe= array( "M"=> array("nom"=>"Masculin","appellation"=>"Monsieur"), "F"=>array("nom"=>"feminin","appellation"=>"Madame") );

$personnes= array(); $personnes["LaporteGabriel"]=array("prenom"=>"Gabriel","nom"=>"Laporte","sexe"=>"M","courriel"=>"[email protected]" );

$personnes["ChenierJoanne"]=array("prenom"=>"Joanne","nom"=>"Chenier","sexe"=>"F","courriel"=>"[email protected]" );

$personnes["LavoieDrapeauRoxanne"]=array("prenom"=>"Roxanne","nom"=>"LavoieDrapeau","sexe"=>"F","courriel"=>"[email protected]");

$personnes["LaporteJacques"]=array("prenom"=>"Jacques","nom"=>"Laporte","sexe"=>"M", "courriel"=>"[email protected]" );

$personnes["LaporteSandrine"]=array("prenom"=>"Sandrine","nom"=>"Laporte","sexe"=>"F", "courriel"=>"[email protected]" );

$personnes["LegrisAntoine"]=array("prenom"=>"Antoine","nom"=>"Legris","sexe"=>"M","courriel"=>"[email protected]" );

$personnes["AlexanderDurand"]=array("prenom"=>"Alexander","nom"=>"Durand","sexe"=>"M","courriel"=>"[email protected]" );

?>

Re: PHP foreach

par Petit problème » 05 déc. 2014, 01:17

Je me suis avancer un peu depuis ! merci de ton aide liens_geek !

J'ai demander de l'aide a un amis et il ma repondu de plutot faire cela !

Je suis maintenant capable de faire appairaitre un message disant bienvenue a l'utilisateur qui cest connecter en disant son nom et son nom de famille ! mon problèmes est que je suis incapable d'Afficher le message d'invalidité si l'utilisateur ne fait pas partie de mon tableau ! ( a chaque fois que tu ecrit ton nom sa affiche " bienvenue liens geek" par exemples , meme si lines_geek ne se retrouve pas dans ma base de données


<?php include 'header.php'; ?>

<form method="POST" action="index.php">

<label for="nom">Nom:</label>
<input type="text" name="nom">

<label for="prenom">Prénom</label>
<input type="text" name="prenom">

<input type="radio" name="sexe" value="m"/>
<span>M</span>

<input type="radio" name="sexe" value="f"/>
<span>F</span>

<p>Votre adresse courriel:</p>
<input type="text" name="courriel"></p>
<p><input type="submit" value="S'inscrire" name="Submit"></p>

</form>

<?php
var_dump($personnes);
$prenom = $_POST['prenom'];
$nom = $_POST['nom'];
$sexe= $_POST['sexe'];
$courriel = $_POST['courriel'];


if ($courriel != ''){

echo "<h3>Bienvenue à ".$nom." ".$prenom."</h3>";
}

else {

echo "<h3> Utilisateur invalide.</h3>";
}

include 'bottin.php';
?>


<?php include 'footer.php'; ?>

Re: PHP foreach

par liens_geeks » 04 déc. 2014, 23:25

Hello,
Il contient quoi ton tableau $personnes au niveau de cette ligne là ?
"$prenom = $personnes['prenom'];"

Si tu fais un var_dump($personnes) jute avant le foreach, ça t'affiche quoi?

PHP foreach

par Petit problème » 04 déc. 2014, 22:54

if (isset($_POST['submit']) && $_POST['submit'] == "Envoyer")

$prenom = $personnes['prenom'];
$nom = $personnes['nom'];
$sexe= $personnes['sexe'];
$courriel = $personnes['sexe'];

foreach ($personnes as $key->$value);
$filtre= array ($personne);

{
$maclasse="";
if ($filtre)
{
$maclasse="ClasseEnGras";
}
else
{
$maclasse="";


}

echo $personnes['nom'];

}


Je suis complèetement perdu avec mon code PHP foreach ... j'ai besoin d'un peu d'Aide