IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Condition avec foreach


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club Avatar de SkaalZealot
    Homme Profil pro
    autre
    Inscrit en
    octobre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : octobre 2017
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Condition avec foreach
    Bonsoir,

    J'ai un soucis que je ne comprend pas, je le fait peut être mal mais je dois vérifié si mes tags existe avant d’envoyer le formulaire en BDD

    mon form se présente donc comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php foreach($tag as $tags): ?>
     
    <input id="<?= $tags->id ?>" type="checkbox" name="tags[]" value="<?= $tags->id ?>">
     
    <?php endif; ?>
    Le but est qu'un utilisateur peut choisir jusqu’à 4 tags pas plus mais peut en choisir moins.

    Voici la condition ça serait un truc comme ça mon name étant un tableau (je ne suis pas alaise avec les tableaux) je dois le foreach n'est ce pas.
    donc le truc est que ici je n'ai pas d'erreur pourtant la condition ne vas pas jusqu'au else if et évidement je souhaite que si je n'ai aucune erreur et bien l'enregistrement ce fasse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    if(!empty($tags)){
     
            var_dump($_POST['tags']);
     
            foreach($tags as $v){
     
                $select = $db->prepare('SELECT id FROM f_tags WHERE id = ?');
     
                $select->execute([$v]);
     
                $checktag = $select->fetchAll();
     
                if(!preg_match('/^[0-9]+$/', $v)){
                    echo 'no ok 1';   
                    $error .= errors(['Les tags ne doivent être que des chiffres']);
                }
                if(!empty($checktag[0]->id) != $v){
                    echo 'no ok 2';      
                    $error .= errors(['Le tags en question est inconnue']);
                }
     
            }
     
    }else if(empty($error)){ die('ok'); }

    J'ai essayer un SELECT EXISTS mais ça ne fonctionne pas non plus !


    En vous remerciant bonne soirée.

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    juin 2003
    Messages
    8 905
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2003
    Messages : 8 905
    Points : 13 729
    Points
    13 729
    Par défaut
    une fois que le code entre dans le if(!empty($tags)){, les autres blocs else seront ignorés.

    donc si j'ai bien compris, votre code devrait plutôt ressembler à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    $error = "";
     
    if (!empty($tags)) {
     
    	var_dump($_POST['tags']);
     
    	foreach ($tags as $v) {
     
    		$select = $db->prepare('SELECT id FROM f_tags WHERE id = ?');
     
    		$select->execute([$v]);
     
    		$checktag = $select->fetchAll();
     
    		if(!preg_match('/^[0-9]+$/', $v)){
    			echo 'no ok 1';   
    			$error .= errors(['Les tags ne doivent être que des chiffres']);
    		}
     
    		if(!empty($checktag[0]->id) != $v){
    			echo 'no ok 2';      
    			$error .= errors(['Le tags en question est inconnue']);
    		}
     
    	}
     
    }
     
     
    if (empty($error)) {
     
    	echo "c'est bon !";
     
     
    }

  3. #3
    Futur Membre du Club Avatar de SkaalZealot
    Homme Profil pro
    autre
    Inscrit en
    octobre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : octobre 2017
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Merci c'était si simple que ça je me sens idiot je vais pouvoir ré-factorisé tout ça.

    Encore merci bonne soirée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. plusieurs conditions avec foreach
    Par decksroy dans le forum Langage
    Réponses: 16
    Dernier message: 06/03/2007, 11h43
  2. [SimpleXML] XML et parcours des noeuds avec foreach
    Par kult dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 15/11/2005, 15h36
  3. condition avec request
    Par nicerico dans le forum ASP
    Réponses: 3
    Dernier message: 28/06/2005, 15h19
  4. Conditions avec liste de tuples
    Par Robert999 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/07/2004, 11h01
  5. [ Struts ] plusieurs conditions avec equal?
    Par njac dans le forum Struts 1
    Réponses: 7
    Dernier message: 04/06/2004, 09h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo