Partage
  • Partager sur Facebook
  • Partager sur Twitter

Update affiché les champ stocké en bdd

Sujet résolu
    1 avril 2020 à 1:00:38

    Salut tout lde monde, je bloque sur mon UPDATE que voici

    J'aimerais affiché les champs du membres puis si il les modifies les faire apparaitres au rechargement de la page

    	<?php
    		$erreurs = array();
    		 if(!empty($_POST)) {	
    			 
    			//Verification du champ email( on vérifie si le champ n'est pas vide )
    			if($_POST['email'] != "" && !preg_match("/^[a-z0-9\-_.]+@[a-z0-9\-_.]+\.[a-z]{2,3}$/i",$_POST['email'])){
    				$erreurs['email'] = "Veuillez verifier la saisie de votre e-mail";
    			}
    			  
    			    if(empty( $erreurs)){
    						
    						
    							$req = $bdd->prepare("UPDATE commercants SET nom_etablissement =:nom_etablissement, description =:description, site_web =:site_web, telephone =:telephone, livraison =:livraison, description =:drive, description =:drive, email =:email, accept_cheque =:accept_cheque, accept_especes =:accept_especes, accept_tickets =:accept_tickets, accept_carte =:accept_carte, type_legumes =:type_legumes, description =:type_viandes, type_fromages =:type_fromages, type_hygiene =:type_hygiene, type_restauration =:type_restauration, type_autres =:type_autres, com_site_internet =:com_site_internet, com_telephone =:com_telephone, com_facebook =:com_facebook, com_email =:com_email, zone_kilometrique =:zone_kilometrique, min_livraison =:min_livraison  WHERE id = :id");
    			     
    								$req->bindParam(':id',$_SESSION['membre']['id'],PDO::PARAM_INT);         
    								$req->bindParam(':nom_etablissement', $_POST['nom_etablissement'], PDO::PARAM_STR);
    					            $req->bindParam(':description', $_POST['description'], PDO::PARAM_STR);
    					            $req->bindParam(':site_web', $_POST['site_web'], PDO::PARAM_STR);
    					            $req->bindParam(':telephone', $_POST['telephone'], PDO::PARAM_STR);
    					            $req->bindValue(':livraison', intval(isset($_POST['telephone'])), PDO::PARAM_INT);
    					            $req->bindValue(':drive', intval(isset($_POST['drive'])), PDO::PARAM_INT);
    					            $req->bindParam(':email', $_POST['email'], PDO::PARAM_STR);
    					            $req->bindValue(':accept_cheque', intval(isset($_POST['accept_cheque'])), PDO::PARAM_INT);
    					            $req->bindValue(':accept_especes', intval(isset($_POST['accept_especes'])), PDO::PARAM_INT);
    					            $req->bindValue(':accept_tickets', intval(isset($_POST['accept_tickets'])), PDO::PARAM_INT);
    					            $req->bindValue(':accept_carte', intval(isset($_POST['accept_carte'])), PDO::PARAM_INT);
    					            $req->bindValue(':type_legumes', intval(isset($_POST['type_legumes'])), PDO::PARAM_INT);
    					            $req->bindValue(':type_viandes', intval(isset($_POST['type_viandes'])), PDO::PARAM_INT);
    					            $req->bindValue(':type_fromages', intval(isset($_POST['type_fromages'])), PDO::PARAM_INT);
    					            $req->bindValue(':type_hygiene', intval(isset($_POST['type_hygiene'])), PDO::PARAM_INT);
    					            $req->bindValue(':type_restauration', intval(isset($_POST['type_restauration'])), PDO::PARAM_INT);
    					            $req->bindValue(':type_autres', intval(isset($_POST['type_autres'])), PDO::PARAM_INT);
    					            $req->bindValue(':com_site_internet', intval(isset($_POST['com_site_internet'])), PDO::PARAM_INT);
    					            $req->bindValue(':com_telephone', intval(isset($_POST['com_telephone'])), PDO::PARAM_INT);
    					            $req->bindValue(':com_facebook', intval(isset($_POST['com_facebook'])), PDO::PARAM_INT);
    					            $req->bindValue(':com_email', intval(isset($_POST['com_email'])), PDO::PARAM_INT);
    					            $req->bindParam(':zone_kilometrique', $_POST['zone_kilometrique'], PDO::PARAM_INT);
    					            $req->bindParam(':min_livraison', $_POST['min_livraison'], PDO::PARAM_INT);
      
    					            $req->execute();  
       							 }else{
    				            echo '<div class="container"><div class="col-md-6 col-md-offset-1 col-sm-8 col-sm-offset-2">
    				            <div class="alert alert-danger okay" role="alert"> <i class="fa fa-frown-o"></i> Cet email est déjà associé à un compte</div></div></div>';
    				        }echo 'Certaines modification peuvent être amené à être vérifié avant leur validation';
    				          
    				}
    
    
    					$reponse = $bdd->query('SELECT * FROM commercants WHERE id = ' .$id);
    					$donnees = $reponse->fetch(PDO::FETCH_ASSOC);
    					var_dump($reponse);
    						
    				?>

    Mon input par exemple, mais rien ne s'affiche dans le champ:

    input class="form-control" name="nom_etablissement" type="text" value="<?php if(isset($donnees['nom_etablissement'])) echo $donnees['nom_etablissement'];?>" />




    • Partager sur Facebook
    • Partager sur Twitter
      1 avril 2020 à 1:07:31

      C'est que ta condition est fausse.

      var_dump($donnees); ?

      $id vient d'où ? (pourquoi la requête n'est pas préparée ?)

      -
      Edité par julp 1 avril 2020 à 1:08:25

      • Partager sur Facebook
      • Partager sur Twitter
        1 avril 2020 à 1:31:25

        Dans mon code plus haut j'ai:

        // Nombre de site VALIDE
        $row = $bdd->prepare("SELECT id FROM commercants WHERE id =:id");
        $row->bindParam(':id', $id, PDO::PARAM_INT);
        $row->execute();
        

        le vardump correspond à la requete j'ai put avancer de mon coté

        Tout sauf un champ qui n'affiche pas la valeur souhaité

        <select class="form-control" name="zone_kilometrique">
                                                <option value="" selected=""><?php if(isset($donnees['zone_kilometrique'])) echo $donnees['zone_kilometrique'];?></option>
                                                <option value="5">5 km</option>
                                                <option value="10">10 km</option>
                                                <option value="20">20 km</option>
                                                <option value="30">30 km</option>
                                            </select>




        • Partager sur Facebook
        • Partager sur Twitter
          1 avril 2020 à 1:47:14

          Je ne comprends pas ce que tu fais :

          • tu fais un SELECT pour récupérer l'id que tu connais déjà ? C'est pour vérifier qu'il existe ?
          • quel est le rapport entre SELECT id FROM commercants WHERE id =:id et 'SELECT * FROM commercants WHERE id = ' .$id ? Parce que sur la seconde, ça sent l'injection SQL ...
          • sur ton select (la balise html), si le but est de resélectionner, ce qui est en base, je pense que tu t'y prends mal :
            1. ton premier option n'a pas de value
            2. normalement, tu compares chaque value de chaque option pour savoir si tu dois mettre ou non le selected

          -
          Edité par julp 1 avril 2020 à 1:48:31

          • Partager sur Facebook
          • Partager sur Twitter
            1 avril 2020 à 1:49:59

            Pour mon<select> j'ai tenté ça:

            Mais il reste vide et si j'ai met 20 en dd par exemple ca affiche 20 maisje ne peut pas voir les autre <option> le but c'est de pouvoir modifier

            <select class="form-control" name="zone_kilometrique">
            	                                 <?php 
            	                                 if (empty($donnees['zone_kilometrique'])) {
            	                                	echo 'option value="">Zone kilométriques</option>';
            	                                }
            	                                elseif (!empty($donnees['zone_kilometrique']) && ($donnees['zone_kilometrique'] == 5)) {
            	                                	echo '<option value="5" selected="">5 km</option>';
            	                                }elseif (!empty($donnees['zone_kilometrique']) && ($donnees['zone_kilometrique'] == 10)) {
            	                                	echo '<option value="10" selected="">10 km</option>';
            	                                 }elseif (!empty($donnees['zone_kilometrique']) && ($donnees['zone_kilometrique'] == 20)) {
            	                                	echo '<option value="20" selected="">20 km</option>';
            	                                 }elseif (!empty($donnees['zone_kilometrique']) && ($donnees['zone_kilometrique'] == 30)) {
            	                                	echo '<option value="30" selected="">30 km</option>';
            	                                 }
             ?>
             </select>


            Pour ma requeteon peut dire que c'est presque un doublon mais sinon ca bug...

            / Id membre
            $id = (int)($_SESSION['membre']['id']);
            if($id <= 0)
            {
            	header('Location: http://www.....com/');
            exit;
            }
            
            // Si pas de Session en cours
            if(empty($_SESSION['membre'])) 
            {
            	header('Location: http://www.....com/');
            exit;
            }
            
            // Nombre de site VALIDE
            $row = $bdd->prepare("SELECT id FROM commercants WHERE id =:id");
            $row->bindParam(':id', $id, PDO::PARAM_INT);
            $row->execute();
            
            	$erreurs = array();
            		 if(!empty($_POST)) {	
            			 
            			//Verification du champ email( on vérifie si le champ n'est pas vide )
            			if($_POST['email'] != "" && !preg_match("/^[a-z0-9\-_.]+@[a-z0-9\-_.]+\.[a-z]{2,3}$/i",$_POST['email'])){
            				$erreurs['email'] = "Veuillez verifier la saisie de votre e-mail";
            			}
            			  
            			    if(empty( $erreurs)){
            						
            						
            							$req = $bdd->prepare("UPDATE commercants SET description =:description, site_web =:site_web, telephone =:telephone, livraison =:livraison, drive =:drive, email =:email, accept_cheque =:accept_cheque, accept_especes =:accept_especes, accept_tickets =:accept_tickets, accept_carte =:accept_carte, type_legumes =:type_legumes, type_viandes =:type_viandes, type_fromages =:type_fromages, type_hygiene =:type_hygiene, type_restauration =:type_restauration, type_autres =:type_autres, com_site_internet =:com_site_internet, com_telephone =:com_telephone, com_facebook =:com_facebook, com_email =:com_email, zone_kilometrique =:zone_kilometrique, min_livraison =:min_livraison  WHERE id = :id");
            			     
            								$req->bindParam(':id',$_SESSION['membre']['id'],PDO::PARAM_INT);         
            					            $req->bindParam(':description', $_POST['description'], PDO::PARAM_STR);
            					            $req->bindParam(':site_web', $_POST['site_web'], PDO::PARAM_STR);
            					            $req->bindParam(':telephone', $_POST['telephone'], PDO::PARAM_STR);
            					            $req->bindValue(':livraison', intval(isset($_POST['livraison'])), PDO::PARAM_INT);
            					            $req->bindValue(':drive', intval(isset($_POST['drive'])), PDO::PARAM_INT);
            					            $req->bindParam(':email', $_POST['email'], PDO::PARAM_STR);
            					            $req->bindValue(':accept_cheque', intval(isset($_POST['accept_cheque'])), PDO::PARAM_INT);
            					            $req->bindValue(':accept_especes', intval(isset($_POST['accept_especes'])), PDO::PARAM_INT);
            					            $req->bindValue(':accept_tickets', intval(isset($_POST['accept_tickets'])), PDO::PARAM_INT);
            					            $req->bindValue(':accept_carte', intval(isset($_POST['accept_carte'])), PDO::PARAM_INT);
            					            $req->bindValue(':type_legumes', intval(isset($_POST['type_legumes'])), PDO::PARAM_INT);
            					            $req->bindValue(':type_viandes', intval(isset($_POST['type_viandes'])), PDO::PARAM_INT);
            					            $req->bindValue(':type_fromages', intval(isset($_POST['type_fromages'])), PDO::PARAM_INT);
            					            $req->bindValue(':type_hygiene', intval(isset($_POST['type_hygiene'])), PDO::PARAM_INT);
            					            $req->bindValue(':type_restauration', intval(isset($_POST['type_restauration'])), PDO::PARAM_INT);
            					            $req->bindValue(':type_autres', intval(isset($_POST['type_autres'])), PDO::PARAM_INT);
            					            $req->bindValue(':com_site_internet', intval(isset($_POST['com_site_internet'])), PDO::PARAM_INT);
            					            $req->bindValue(':com_telephone', intval(isset($_POST['com_telephone'])), PDO::PARAM_INT);
            					            $req->bindValue(':com_facebook', intval(isset($_POST['com_facebook'])), PDO::PARAM_INT);
            					            $req->bindValue(':com_email', intval(isset($_POST['com_email'])), PDO::PARAM_INT);
            					            $req->bindParam(':zone_kilometrique', $_POST['zone_kilometrique'], PDO::PARAM_INT);
            					            $req->bindParam(':min_livraison', $_POST['min_livraison'], PDO::PARAM_INT);
              
            					            $req->execute();  
               							 }else{
            				            echo '<div class="container"><div class="col-md-6 col-md-offset-1 col-sm-8 col-sm-offset-2">
            				            <div class="alert alert-danger okay" role="alert"> <i class="fa fa-frown-o"></i>Oups...</div></div></div>';
            				        }echo '<div class="validation-modification">Modification effectuées</div>';
            				          
            				}
            
            
            					$reponse = $bdd->query('SELECT * FROM commercants WHERE id = ' .$id);
            					$donnees = $reponse->fetch(PDO::FETCH_ASSOC);
            		
            				?>
            
            



            -
            Edité par blinz 1 avril 2020 à 2:05:03

            • Partager sur Facebook
            • Partager sur Twitter
              1 avril 2020 à 2:03:39

              Pour les select/option, il y a l'idée mais c'est uniquement le selected que tu dois echo si ta condition est vraie, pas toute la balise option. Il faudrait aussi que tu apprennes à ne pas te répéter, avec un tableau et une boucle, tu peut tout autant générer tes options sans que ce soit si inutilement répétitif.

              Pour les requêtes SELECT, ok, $id/$_SESSION['membre']['id'] doit être sûr. Ta requête SELECT id FROM commercants WHERE id =:id est inutile, tu ne fais même pas de fetch (le code est incomplet ?). C'est quoi qui buggue sinon au juste ?

              Ton test ligne 10 devrait être avant tous les autres. Et ta "cast" ligne 2 et 3, si vraiment ce code est utile par rapport à cette ligne 10, devrait plutôt être un simple isset.

              -
              Edité par julp 1 avril 2020 à 2:09:28

              • Partager sur Facebook
              • Partager sur Twitter
                1 avril 2020 à 2:11:37

                Je comprends pas pour le <select> mon code dit bien si il y a une donnée et qu'elle vaut 5 alors selected"" le 5 puis pareil pour les autres nan ?
                • Partager sur Facebook
                • Partager sur Twitter
                  1 avril 2020 à 2:19:24

                  Là, si tu regardes ta liste déroulante, tu n'as pas qu'une option disponible ? Sauf si c'est vraiment le but recherché ?

                  <select class="form-control" name="zone_kilometrique">
                      <option value="">Zone kilométriques</option>
                      <?php foreach([5, 10, 20, 30] as $v): ?>
                          <option value="<?= $v ?>" <?= $donnees['zone_kilometrique'] == $v ? 'selected' : '' ?>><?= $v ?>km</option>
                      <?php endforeach ?>
                  </select>

                  Non ?

                  -
                  Edité par julp 1 avril 2020 à 2:44:27

                  • Partager sur Facebook
                  • Partager sur Twitter
                    1 avril 2020 à 2:22:39

                    Si celle stocké en bdd

                    Mais le but est d'affiché la valeur que le membre avait déja renseigné puis lui proposé les autres choix si il veut la modifié

                    J'ai essayé ca quand meme:

                    <select class="form-control" name="zone_kilometrique">
                                                        <?php 
                    	                                  if ($donnees['zone_kilometrique'] == 5){
                    	                                  	$selected = 'selected=""';
                    	                                  }else{
                    	                                  	$selected = NULL;
                    	                                  }
                    	                                 ?>
                    	                                 <?php 
                    	                                  if ($donnees['zone_kilometrique'] == 10){
                    	                                  	$selected = 'selected=""';
                    	                                  }else{
                    	                                  	$selected = NULL;
                    	                                  }
                    	                                 ?>
                    	                                 <?php 
                    	                                  if ($donnees['zone_kilometrique'] == 20){
                    	                                  	$selected = 'selected=""';
                    	                                  }else{
                    	                                  	$selected = NULL;
                    	                                  }
                    	                                 ?>
                    	                                 <?php 
                    	                                  if ($donnees['zone_kilometrique'] == 30){
                    	                                  	$selected = 'selected=""';
                    	                                  }else{
                    	                                  	$selected = NULL;
                    	                                  }
                    	                                 ?>
                                                        	<option value="">Zone kilométriques</option>
                                                        	<option value="5" <?php echo $selected;?> >5 km</option>
                                                        	<option value="10" <?php echo $selected;?> >10 km</option>
                                                        	<option value="20" <?php echo $selected;?> >20 km</option>
                                                        	<option value="30" <?php echo $selected;?> >30 km</option>
                    
                    	                           
                                                        </select>



                    -
                    Edité par blinz 1 avril 2020 à 2:33:31

                    • Partager sur Facebook
                    • Partager sur Twitter
                      1 avril 2020 à 2:37:20

                      T'as vu mon code/edit ?

                      Dis, si tu écrases et affiches toujours la même variable, comment veux-tu que ça fonctionne ? Tu vas tous les afficher selected ou non en fonction de ta dernière valeur (30).

                      Il te faut des variables différentes sinon, pour utiliser la même, gérer le selected d'une option pour l'afficher (la balise option + le selected) et ainsi de suite (une à la fois quoi).

                      -
                      Edité par julp 1 avril 2020 à 2:38:52

                      • Partager sur Facebook
                      • Partager sur Twitter
                        1 avril 2020 à 2:40:56

                        Ton code ne marche pas, j'ai tenter autre chose du coup...

                        J'ai corrigé ta derniere ligne:

                         <?php endforeach ?>

                        C'est bon, merci à toi

                        PS: tu connais AJAX sinon un peu ?

                        -
                        Edité par blinz 1 avril 2020 à 2:44:22

                        • Partager sur Facebook
                        • Partager sur Twitter
                          1 avril 2020 à 10:30:30

                          Re, ton dernier message est flou.

                          Je voudrais savoir mon bug avec le code ci-dessous, il marche très bien sauf 1 truc.

                          Quand tu arrives sur la page tu as tous les résultats ensuite tu filtres avec les chekboxes, ca marche sauf que je me retrouve toujours avec au moins une chekboxes de coché peut importe laquelle.

                          eN BDD j'ai une colonne qui vaut 1 ou 0 pour chaque type

                          Problème de SESSION surement

                          <?php
                              const KEYS_TO_COPY = [
                                  'type_legumes',
                                  'type_viandes',
                                  'type_fromages',
                                  'type_hygiene',
                                  'type_restauration',
                                  'type_autres',
                              ];
                          
                          
                              // Memoire pour passage des Checkboxes avec pagination
                              if (!empty($_POST)) {
                                  $base = array_fill_keys(KEYS_TO_COPY, NULL);
                                  $_SESSION = array_merge(
                                      $_SESSION,
                                      $base,
                                      array_intersect_key(
                                          $_POST,
                                          $base
                                      )
                                  );
                              }
                          
                              // Protection des variables passé en POST => htmlspecialchars		
                              $ville = htmlspecialchars(ucfirst(strtolower($_GET['ville'])));
                              $page = (!empty($_GET['page']) ? (int)$_GET['page'] : 1);
                              $limite = 10; // Nombre d'élément à afficha dans la page
                              $debut = ($page - 1) * $limite;
                          
                          	$sql = 'SELECT * FROM commercants  WHERE ville = :ville'; 
                          
                            
                              if (!empty($_SESSION['type_legumes'])) {
                                  $sql .= ' AND type_legumes = 1';
                              }
                              if (isset($_SESSION['type_viandes'])) {
                                  $sql .= ' AND type_viandes = 1';
                              }
                              if (isset($_SESSION['type_fromages'])) {
                                  $sql .= ' AND type_fromages = 1';
                              }
                              if (isset($_SESSION['type_hygiene'])) {
                                  $sql .= ' AND type_hygiene = 1';
                              }
                              if (isset($_SESSION['type_restauration'])) {
                                  $sql .= ' AND type_restauration = 1';
                              }
                              if (isset($_SESSION['type_autres'])) {
                                  $sql .= ' AND type_autres = 1';
                              }
                          
                          
                          	$sql .= " GROUP BY nom_etablissement " ;
                          	$sql .= ' LIMIT :limite OFFSET :debut'; // Limitation à l'affichage des données
                              $sql = $bdd->prepare($sql);
                              $sql->bindParam(':ville', $ville, PDO::PARAM_STR);
                              $sql->bindValue('debut', $debut, PDO::PARAM_INT);
                              $sql->bindValue('limite', $limite, PDO::PARAM_INT);
                              $sql->execute();
                          
                          	$resultFoundRows = $bdd->query('SELECT found_rows()');
                          	$nombredElementsTotal = $resultFoundRows->fetchColumn();
                          	$nombreDePages = ceil($nombredElementsTotal / $limite);
                              var_dump($sql);
                          
                          ?>
                          <form method="post">
                          						<h6>Type</h6>
                          						<ul>
                          							<li><label><input type="checkbox" class="icheck" name="type_legumes" <?=(isset($_SESSION['type_legumes'])?' checked':'')?>/>Fruits et Légumes</label></li>
                          							<li><label><input type="checkbox" class="icheck" name="type_viandes" <?=(isset($_SESSION['type_viandes'])?' checked':'')?>/>Viandes</label></li>
                          							<li><label><input type="checkbox" class="icheck" name="type_fromages" <?=(isset($_SESSION['type_fromages'])?' checked':'')?>/>Fromages</label></li>
                          							<li><label><input type="checkbox" class="icheck" name="type_hygiene" <?=(isset($_SESSION['type_hygiene'])?' checked':'')?>/>Hygiène</label></li>
                          							<li><label><input type="checkbox" class="icheck" name="type_restauration" <?=(isset($_SESSION['type_restauration'])?' checked':'')?>/>Restauration</label></li>
                          							<li><label><input type="checkbox" class="icheck" name="type_autres" <?=(isset($_SESSION['type_autres'])?' checked':'')?>/>Autres</label></li>
                          						</ul>
                                                  <button class="btn-filtre" type="submit">Filtrer</button>
                                                  </form>




                          -
                          Edité par blinz 1 avril 2020 à 10:36:07

                          • Partager sur Facebook
                          • Partager sur Twitter
                            1 avril 2020 à 11:35:30

                            1 problème = 1 sujet, surtout que tu as déjà fait cette même demande que j'ai vue mais je ne comprends même pas ta demande (s'il reste une case cochée quand il n'est plus censé en avoir aucune - laquelle ? - ou si tu veux justement en garder une au lieu de tout vider - laquelle ? basé sur quoi ?)

                            (bref, ne me réponds pas ici, remonte cet autre sujet si tu as des précisions/peux mieux le décrire parce qu'un modo supprimera peut être ce post et le tien ci-dessus)

                            -
                            Edité par julp 1 avril 2020 à 11:41:18

                            • Partager sur Facebook
                            • Partager sur Twitter
                              1 avril 2020 à 12:12:51

                              Ok, merci je met en résolu
                              • Partager sur Facebook
                              • Partager sur Twitter

                              Update affiché les champ stocké en bdd

                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                              • Editeur
                              • Markdown