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

Langage PHP Discussion :

demande de renseignement sur le isset


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 295
    Points : 71
    Points
    71
    Par défaut demande de renseignement sur le isset
    Bonsoir,

    voila j'ai un formulaire avec des checkbox que je voudrais mettre en bdd mais quand je met ceci

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    if(empty($_POST['autoriser'])&&isset($_POST['non_autoriser']) &&isset($_POST['mp'])&&isset($_POST['non_mp']))
     { 
                       $membre_id = $_SESSION['id'];
    		   $autoriser = implode(',', $_POST['autoriser']); 
    		   $non_autoriser = implode(',', $_POST['non_autoriser']);
    		   $mp  = implode(',', $_POST['mp']);
    		   $non_mp  = implode(',', $_POST['non_mp']);


    la requête insert ne se fais pas et le isset me dit que j'ai quand mêmes des indéfini index,je pensais qu'il enlèverait les notices lié au case vide


    merci pour l'aide

  2. #2
    Membre habitué

    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 101
    Points : 141
    Points
    141
    Par défaut
    Bonjour,

    J'ai été confronté à des problèmes comparables sur Ubuntu 10.04, Apache2.2 et PHP 5.3.
    Pour des champs de type "input='text'les champs "null" n'existent pas, ce sont des chaînes de caractères de longueur 0 et donc je teste la longueur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if(strlen($_POST['mon_champ'])>0)
     
    ou 
     
    if(strlen($_POST['mon_champ'])===0)
    (apparemment votre clé est bien un champs texte)

    Pour les checkbox le problème est légèrement différent chez moi; il considère que le champs n'existe pas dans le tableau $_POST retourné au serveur uniquement si la case est cochée. Si elle n'est pas cochée le champs n'est aps dans le tableau $_POST. Je teste via array_key_exists:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if(array_key_exists('mon_champ'), $_POST)
    ...
    Le mieux est sans doute de créer sa propre fonction "custom_http_isset($key, $array)" retournant un booléen pour parer au risque de changement de comportement sur une autre plateforme.


    Attention le traitement des formulaires est complètement différent si vous utilisez des CMS comme Drupal.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Il te faut contrôler tes sessions

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    session_start();
    $id = (isset($_SESSION['id'])) ? $_SESSION['id'] : '';
    if ($id=="") $_SESSION['id']="";
     
    ?>

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 295
    Points : 71
    Points
    71
    Par défaut
    merci pour toute ses réponses,j'aurais voulu savoir s'il était possible de de delete un seul champ par exemple il y a la colonne mp avec la variable mp,est ce que c'est possible de delete pour le laisser vide sans pour autant effacer toute la colonne,par contre je ne vois pas comment utiliser array_key_exits sur mes $_post(pas faute d'avoir cherché)

    j'ai bien essayer ceci

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
     
              $query=$db->prepare('DELETE FROM forum_membres WHERE mp = :mp');
                 $query->bindValue(':mp',$_POST['mp'],PDO::PARAM_STR);
                 $query->execute();
                 $query->CloseCursor();

    mais sois sa efface bien la variable inséré ou bien sa m'efface toute ma ligne
    merci

  5. #5
    Invité
    Invité(e)
    Par défaut
    Ta question me dis qu'il te faut relire nos TOPOS (cherches en haut de cette page tutoriels

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 295
    Points : 71
    Points
    71
    Par défaut
    en faite se que je voudrais c'est que si par exemple le membre a cocher le checkbox 'oui' pouvoir le delete et update par le nouveau checkbox cocher si il a cocher le checkbox non,

    un peu comme sur les forum ou on peut cocher oui ou non si on veut suivre le fil du post

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Tu peux tester ce petit script dans une page séparée pour mieux comprendre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    echo '<pre>';
    print_r($_POST);
    echo '</pre>';
    ?>
    <form action = "#" method="post">
    <input type = "checkbox" name="check1" value="chekbox1" />chekbox 1
    <input type = "checkbox" name="check2" value="chekbox2" />chekbox 2
    <input type = "radio" name="rad" value="radio1" />radio 1
    <input type = "radio" name="rad" value="radio2" />radio 2
    <input type = "text" name="text" value="" />
    <input type = "submit" name="envoi" value = "envoyer" />
     
    </form>
    Les types checkbox et radio ne sont renvoyés que s'ils sont cochés. Les types text sont toujours renvoyés ainsi que le bouton du formulaire de type submit.

    Pour info, à la place de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($toto) && isset($titi) && isset($tata))
    pour le même résultat tu peux écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($toto,$titi,$tata))
    mais ce n'est pas possible avec empty()

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 295
    Points : 71
    Points
    71
    Par défaut
    je n'y comprend plus rien,si je met le if isset il insère rien, et si je l’enlève il me met cette erreur


    Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'non_autoriser' cannot be null in C:\wamp\www\traitement\preferences_1.php on line 44


    je ne vois pas comment faire

  9. #9
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Attention à ne pas confondre isset et empty. Isset vérifie que la variable existe, et empty vérifie qu'il ya quelque chose dedans.
    Par exemple pour les variables suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $tata = "coucou";
    $titi = "";
    on aura les résultats suivants :
    // $toto n'a pas été initialisé et est donc vide
    isset($toto) => false
    empty($toto) => true
    
    // $tata est initialisé et contient une valeur
    isset($tata) => true
    empty($tata) => false
    
    // $titi est initialisé avec une chaine vide
    isset($titi) => true
    empty($titi) => true
    Donc pour être sûr d'avoir une valeur à insérer, il faut combiner isset et empty
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 295
    Points : 71
    Points
    71
    Par défaut
    merci pour les réponses mais si je met soit isset soit empty,le reste du code ne se fais pas car il y a des variables vides,je vois pas comment je peux faire car il y aura toujours des variables vides du au 'case a cocher'.

    car j'ai un formulaire avec quatre radio,deux oui et deux non,un oui et un non pour les mp et un oui et un non pour les messages posté,donc il y aura toujours des variables vide ou bien j'ai mal fais le traitement

  11. #11
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    A priori, il ya un truc qui cloche : soit le champ du formulaire n'est pas obligatoire et dans ce cas, le champ correspondant en base peut être null (et donc c'est ta base qui est mal fichue), soit le champ est obligatoire et c'est ton formulaire qui devrait renvoyer une erreur du type "Vous devez renseigner le champ machin".

    On peut voir ton formulaire ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 295
    Points : 71
    Points
    71
    Par défaut
    pas de soucis

    Code html : 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
     
     
    <fieldset>
           <form method="post" action="../traitement/preferences_1.php">
     
             <p>Toujours m'avertir des réponses :</p> 
     
     
                <label for="autoriser">oui</label><input type="radio" name="autoriser" value="autoriser" id="autoriser"/>
                 <label for="non_autoriser">non</label><input type="radio" name="non_autoriser" value="non_autoriser" id="non_autoriser"/> 
     
    <br/>
     
            <p> M'avertir des nouveaux Messages Privés :</p> 
     
    			 <label for="mp">oui</label><input type="radio" name="mp" value="non_mp" id="mp"/>
    			 <label for="non_mp">non</label><input type="radio" name="non_mp" value="non_mp" id="non_mp"/>
     
     
       </fieldset>
     
    	 <br/>
    		  <br/>
    			 <i><input type="submit" name"envoyer" value="enregistré"/></i> 
    		</form>
     
    	 </body>
    </html>

  13. #13
    Invité
    Invité(e)
    Par défaut
    Ah oui tout est la !!
    Dans les <FORM avec check-box ou radio bouton le name est identique (unique) et les values différent

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 295
    Points : 71
    Points
    71
    Par défaut
    donc je dois mettre autre chose dans le value,par contre je vais paraitre bête mais $_POST récupère quoi,j'ai toujours cru que c’était le id

  15. #15
    Invité
    Invité(e)
    Par défaut
    Non le Name,
    Tu as
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    <label for="autorise">oui</label><input type="radio" name="autorise" value="autoriser" id="autorise"/>
                 <label for="autorise">non</label><input type="radio" name="autorise" value="non_autoriser" id="autorise"/> 
    //============ ainsi tu reçois============
    $autorise = (isset($_POST['autorise'])) ? $_POST['autorise'] : '';
    //==== qui contient le value coche !===========

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 295
    Points : 71
    Points
    71
    Par défaut
    merci,merci,sa marche,pppfff compliqué les radio et checkox,par contre comment je peux laisser le radio cochée et le décoché quand on coche une autre radio

  17. #17
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Le principe des groupes de radios c'est que tous les radios d'un groupe portent le même nom et qu'un seul peut être sélectionné à la fois. Donc dès que tu en coches un, ça décoche automatiquement le précédent.
    Tu as donc "juste" à cocher le bon par défaut. Pour cela, tu récupères la valeur et tu testes si c'est la valeur du radio en cours :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <label for="autorise">oui</label><input type="radio" name="autorise" value="autoriser" id="autorise" <?php if ($valeur == "autoriser") echo 'checked="checked"';?> />
    <label for="autorise">non</label><input type="radio" name="autorise" value="non_autoriser" id="autorise"  <?php if ($valeur == "non_autoriser") echo 'checked="checked"';?> />
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  18. #18
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Citation Envoyé par arckaniann Voir le message
    donc je dois mettre autre chose dans le value,par contre je vais paraitre bête mais $_POST récupère quoi,j'ai toujours cru que c’était le id
    Dis... je t'avais fais un bout de code sur mesure ici pour que tu comprenne. Un petit copié collé pour tester aurait été plus rapide et éloquent que de reposer la question et attendre une réponse

  19. #19
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Citation Envoyé par Celira Voir le message
    Attention à ne pas confondre isset et empty. Isset vérifie que la variable existe, et empty vérifie qu'il ya quelque chose dedans.
    ...
    Comme je sais (par expérience) que certains débutants trop pressés n'iront pas lire tes liens, je me permet de compléter :
    - Isset vérifie que la variable existe et est différente de null.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $a = null,
    isset($a) => false

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 295
    Points : 71
    Points
    71
    Par défaut
    merci pour toute c'est réponse,j'avais regardé le test que tu m'avais donnée mais j'avais pas remarqué,désolé mais sa fonctionne donc merci

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Demande de renseignements sur Interface
    Par MoscoBlade dans le forum C#
    Réponses: 7
    Dernier message: 21/02/2007, 15h38
  2. Réponses: 2
    Dernier message: 04/06/2006, 21h35
  3. Réponses: 6
    Dernier message: 10/05/2006, 15h34
  4. demande de renseignements sur les classes
    Par altadeos dans le forum Langage
    Réponses: 4
    Dernier message: 08/04/2006, 15h59
  5. demande de renseignement sur delfi 7
    Par cybob dans le forum Débuter
    Réponses: 11
    Dernier message: 19/02/2006, 18h32

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