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 :

Petit nouveau pas très doué-Checkbox et requete


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Homme Profil pro
    Gérant
    Inscrit en
    Octobre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Petit nouveau pas très doué-Checkbox et requete
    Bonjour à tous,

    je suis un débutant en PHP mais qui compte bien apprendre, parce que ça me passionne.
    J'ai acheter plein de bouquin, je suis a la recherche d'un prof.

    Si je pouvais, j'aurais commencer par les choses hyper basic, j’aurais appris les bases correctement afin d'évoluer peu à peu, mais...

    Pour mon entreprise, j'utilise une un site réaliser en PHP et il m'arrive d'y apporter quelques toutes petites modifications à la hauteur de mes petits moyens...
    mais là, c'est sans doute extrêmement simple mais, je seche...

    Dans mon site, il y a une fonction qui me permet d'aller chercher dans ma base les Nom et adresses de mes clients chez qui nous sommes allés, de tel date a une autres et les sortir ensuite sous format excel.
    J'ai décider de rajouter une colonne, avec les adresse mail de mes clients. mais les adresses se trouvaient sur une autre table dans ma base...J'ai donc fait une jointure...Et ça fonctionne (trois heures pour réussir ce miracle)
    Jusque là, j'étais super fier de moi.

    Bien malheureusement, j'ai beaucoup de client qui n'ont pas d'adresse mail renseignés. je décide donc de mettre une checkbox pour lui dire " n'affiche que les clients avec un mail"

    C'est là que je seche, car je ne sais pas comment dire à la recherche SQL de vérifier sir la checkbox est coché et d'afficher des résultats en fonction de ça.

    Une ame charitable pour m'expliquer? un grand merci d'avance

    Voici la partie du code concerné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
     
    $DB_CX->DbQuery("SELECT COUNT(age_id) as total_page FROM ${PREFIX_TABLE}agenda
    LEFT JOIN ${PREFIX_TABLE}fact_mini_facture ON age_id = mfact_age_id
    WHERE mfact_age_id IS NOT NULL AND age_date BETWEEN '".$rch_periode_debut_US."' AND '".$rch_periode_fin_US."'")or die(mysql_error());
    ?>

    Mais après voici tout le code que je pense incriminé pour que vous ayez une vision plus claire


    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    /Création de la requete globale
    $DB_GLOBAL = new Db($DB_CX->ConnexionID);
    $DB_GLOBAL->DbQuery("SELECT * FROM ${PREFIX_TABLE}agenda LEFT JOIN px_fact_calepin ON cal_id=age_cal_id LEFT JOIN ${PREFIX_TABLE}fact_mini_facture ON age_id = mfact_age_id WHERE mfact_age_id IS NOT NULL AND age_date BETWEEN '".$rch_periode_debut_US."' AND '".$rch_periode_fin_US."' ORDER BY age_id DESC LIMIT ".$debut.", ".$nb_messages )or die(mysql_error());
     
    $result_global = $DB_GLOBAL->DbNextRow();
     
     
    //calcul de suivant et precedent
    $suivant = 	$debut+$nb_messages;
    $precedent = $debut-$nb_messages;
     
    ?>
     
     
    <TABLE cellspacing='0' cellpadding='0' width='930px' border='0'>
    <TR bgcolor="<?php echo $bgColor[++$iColor%2] ?>" height='21'>
        <TD class='bordTLR' align='center' height='21' colspan='1'>Recherche :</TD>
    	<TD class='bordTLR' align='center' height='21' colspan='4' style='width : 350px;'>P&eacute;riode
    		du&nbsp;<INPUT type='text' class='texte' value='<?php echo($rch_periode_debut); ?>' id='rch_periode_debut' size='12' maxlength='12' readonly><INPUT  type="button" id="btrch_periode_debut" value="..." class="Picklist">
    		au&nbsp;<INPUT type='text' class='texte' value='<?php echo($rch_periode_fin); ?>' id='rch_periode_fin' size='12' maxlength='12' readonly><INPUT  type="button" id="btrch_periode_fin" value="..." class="Picklist">
    		<INPUT type='button' style='margin-top : 4px;' class='bouton' value='Filtrer' onclick='javascript:recherche();'>
    		<INPUT type='button' style='text-decoration : none; border : none; background : url(image/facture/imp-fact.gif) center no-repeat; width : 19px; heigth : 17px; cursor : pointer; margin-left : 6px; margin-top : 2px;' id='che_imp_periode'  onclick='javascript:publi_pdf();' title='Imprimer la s&eacute;l&eacute;ction.'>
    		<INPUT type="checkbox" name="ckmail" id="ckmail" value="1" class="Case" >&nbsp;&nbsp;Mail obligatoire.
    	</TD>
     
     
    </TR>
     
    <TR bgcolor="<?php echo $bgColor[++$iColor%2] ?>" height='21'>
        <TD class='bordTLR' align='center' height='21'>Nom</TD>
    	<TD class='bordTLR' align='center' height='21' style='width : 350px;'>Adresse</TD>
    	<TD class='bordTLR' align='center' height='21' style='width : 100px;'>Code postal</TD>
    	<TD class='bordTLR' align='center' height='21' style='width : 150px;'>Ville</TD>
    	<TD class='bordTLR' align='center' height='21' style='width : 250px;'>Email</TD>
    </TR>
     
    <?php
     
    //boucle de renseignement des valeurs
    while($result_global['age_id'])
    {
     
    	echo("
    	<TR bgcolor='".$bgColor[++$iColor%2]."' height='21'>
        <TD class='bordTLR' align='center' height='21'>".$result_global['age_contact_nom']."</TD>
    	<TD class='bordTLR' align='center' height='21' style='width : 350px;'>".$result_global['age_contact_adr']."</TD>
    	<TD class='bordTLR' align='center' height='21' style='width : 100px;'>".$result_global['age_contact_CP']."</TD>
    	<TD class='bordTLR' align='center' height='21' style='width : 150px;'>".$result_global['age_contact_ville']."</TD>
    	<TD class='bordTLR' align='center' height='21' style='width : 250px;'>".$result_global['cal_email']."</TD>
    	
    	</TR>
    	");
     
    $result_global = $DB_GLOBAL->DbNextRow();
    }
    ?>
     
     
    <TR bgcolor="<?php echo $bgColor[++$iColor%2] ?>" height='21'>	
        <TD class='bordTLR' align='center' height='21' colspan='5'>
     
    		<?php if ($numpage > 0){ ?>		
    		<a style='float : left;' href='agenda.php?sid=<?php echo $sid;?>&id=<?php echo $id;?>&tcType=<?php echo _TYPE_PUBLIPOSTAGE;?>&rch_periode_debut=<?php echo $_GET['rch_periode_debut']?>&rch_periode_fin=<?php echo $_GET['rch_periode_fin']?>&debut=<?php echo $precedent; ?>'>Precedent</a>		
    		<?php } ?>
     
    		<?php echo $num_page."/".$nb_max_page; ?>
     
    		<?php if ($numpage < $nb_max_page){ ?>		
    		<a style='float : right;' href='agenda.php?sid=<?php echo $sid;?>&id=<?php echo $id;?>&tcType=<?php echo _TYPE_PUBLIPOSTAGE;?>&rch_periode_debut=<?php echo $_GET['rch_periode_debut']?>&rch_periode_fin=<?php echo $_GET['rch_periode_fin']?>&debut=<?php echo $suivant; ?>'>Suivant</a>	
    		<?php } ?>
     
    	</TD>
    </TR>
     
     
     
     
     
    </TABLE>
     
     
     
    <?php
    }
    else
    {
    ?>
    <TABLE cellspacing='0' cellpadding='0' width='780px' border='0'>
     
    <TR bgcolor="<?php echo $bgColor[++$iColor%2] ?>" height='21'>
        <TD class='bordTLR' align='center' height='21' colspan='1'>Recherche :</TD>
    	<TD class='bordTLR' align='center' height='21' colspan='3' style='width : 200px;'>P&eacute;riode
    		du&nbsp;<INPUT type='text' class='texte' value='<?php echo($rch_periode_debut); ?>' id='rch_periode_debut' size='12' maxlength='12' readonly><INPUT  type="button" id="btrch_periode_debut" value="..." class="Picklist">
    		au&nbsp;<INPUT type='text' class='texte' value='<?php echo($rch_periode_fin); ?>' id='rch_periode_fin' size='12' maxlength='12' readonly><INPUT  type="button" id="btrch_periode_fin" value="..." class="Picklist">
    		<INPUT type='button' style='margin-top : 4px;' class='bouton' value='Filtrer' onclick='javascript:recherche();'>
      	<INPUT type="checkbox" name="ckmail" id="ckmail" value="1" class="Case" >&nbsp;&nbsp;Mail obligatoire.
    		<INPUT type='button' style='text-decoration : none; border : none; background : url(image/facture/imp-fact.gif) center no-repeat; width : 19px; heigth : 17px; cursor : pointer; margin-left : 6px; margin-top : 2px;' id='che_imp_periode' onclick='javascript:publi_pdf();' title='Imprimer la s&eacute;l&eacute;ction.'>
     
    	</TD>	
    </TR>
    <TR bgcolor="<?php echo $bgColor[++$iColor%2] ?>" height='21'>
     <TD class='bordTLR' align='center' height='21' colspan='4'>Aucune période sélectionnée.</TD>
    </TR>

    Une ame charitable qui saura m'apprendre cette fonction?
    Encore merci du temps que vous donnez aux autres.

    Fabrice

  2. #2
    Membre actif
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    311
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 311
    Points : 257
    Points
    257
    Par défaut
    Bonjour Fabrice,

    pour savoir si ta checkbox est checkée en php lors d'une soumission d'un formulaire (clic sur un Bouton 'Rechercher') tu peux utiliser (en fonction de la méthode de post de ton formulaire - dans la balise <form method=xxx> -)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (isset($_GET['Checkbox_ID_du_Formulaire'])) { //si c'est un formulaire GET, $_POST['Checkbox_ID_du_Formulaire'] si en post
     
       // Checkbox est selectionnée
    }
    Dans la requête, tu peux ajouter un bout de code si la checkbox est sélectionnée de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    AND email IS NOT NULL 
     
    -- et eventuellement afficher uniquement des emails non vides
    AND email <> ''
    Il te reste à te dépatouiller avec ces quelques infos pour faire fonctionner ton code :-).
    Bon courage,
    A+

    Remarque : quand tu postes sur le forum SQL essaie de ne poster que du SQL sinon c'est plutôt le forum PHP

  3. #3
    Membre éclairé Avatar de GeekMokona
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2011
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2011
    Messages : 327
    Points : 817
    Points
    817
    Par défaut
    L'astuce est d'utiliser les propriétés du OR

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $ckmail=$_POST['ckmail']; 
     
    $DB_CX->DbQuery("SELECT COUNT(age_id) as total_page FROM ${PREFIX_TABLE}agenda
    LEFT JOIN ${PREFIX_TABLE}fact_mini_facture ON age_id = mfact_age_id
    WHERE mfact_age_id IS NOT NULL AND age_date BETWEEN '".$rch_periode_debut_US."' AND '".$rch_periode_fin_US."' AND (".$ckmail." != 1 OR Mail is not null )  ")OR die(mysql_error());
    ?>
    Si la Check box n'est pas cochée alors ".$ckmail." != 1 est Vrais et donc on ne test pas la valeur des mails , par contre si elle est cochée ".$ckmail." != 1 est faux donc on test la valeur des mails ....
    Séverine Capon - Consultante MS BI
    Rejoignez la communauté du chat et partagez vos connaissances ou vos questions avec nous

    Merci de dés que le commentaire vous a aidé ou de marquer si votre problème est résolu

  4. #4
    Candidat au Club
    Homme Profil pro
    Gérant
    Inscrit en
    Octobre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    je n'ai toujours pas réussi a comprendre comment faire mais j'ai trouvé une astuce pour arriver à un résultat qui me convient.

    Dans la requête SQL j'ai simplement rajouté un WHERE LIKE '%@%' et ça fonctionne. du coup je ne peux pas avait sans cette variable mais ce n'est pas bien grave...je vais attendre de progresser petit a petit et un jours, je saurais mettre une checkbox et que ma requête en tienne compte.

    Un grand merci pour le temps que vous m'avez consacrer.

    A bientôt

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

Discussions similaires

  1. [Agriesean] presentation d'un petit nouveau(ne pas bizutter svp^^)
    Par Agriesean dans le forum Présentations
    Réponses: 6
    Dernier message: 07/07/2011, 16h15
  2. MPI petite question pas trés compliqué
    Par Hurri dans le forum Bibliothèques
    Réponses: 6
    Dernier message: 24/06/2008, 17h10

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