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 :

Gestion Liste SQL en PHP [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Apprenti Ingénieur
    Inscrit en
    Novembre 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti Ingénieur
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2011
    Messages : 104
    Points : 53
    Points
    53
    Par défaut Gestion Liste SQL en PHP
    Bonjour,

    J'ai une table SQL qui contient une liste de personne avec 3 champs :
    nom / zone / @mail

    Cette liste de personnes est récupérée (par exemple) dans une liste déroulante de cette sorte :

    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
    <?php
    	echo '<select name="reponse">';
    		echo '<option value=""></option>';
     
    		echo '<optgroup label="AL">';
    		$reponseAL = mysql_query("SELECT DISTINCT nom,zone FROM ros WHERE zone = 'AL' ORDER BY nom" );
    			while ($donnees = mysql_fetch_array($reponseAL) )
    			{
    				?>
    				<option value="<?php echo $donnees['nom']; ?>"><?php echo $donnees['nom']; ?></option>
    				<?php
    			}
    		echo '</optgroup>';
     
    		echo '<optgroup label="BFC">';
    		$reponseBFC = mysql_query("SELECT DISTINCT nom,zone FROM ros WHERE zone = 'BFC' ORDER BY nom" );
    			while ($donnees = mysql_fetch_array($reponseBFC) )
    			{
    				?>
    				<option value="<?php echo $donnees['nom']; ?>"><?php echo $donnees['nom']; ?></option>
    				<?php
    			}
    		echo '</optgroup>';
     
    		echo '<optgroup label="CA">';
    		$reponseCA = mysql_query("SELECT DISTINCT nom,zone FROM ros WHERE zone = 'CA' ORDER BY nom" );
    			while ($donnees = mysql_fetch_array($reponseCA) )
    			{
    				?>
    				<option value="<?php echo $donnees['nom']; ?>"><?php echo $donnees['nom']; ?></option>
    				<?php
    			}
    		echo '</optgroup>';
     
    		echo '<optgroup label="NPC">';
    		$reponseNPC = mysql_query("SELECT DISTINCT nom,zone FROM ros WHERE zone = 'NPC' ORDER BY nom" );
    			while ($donnees = mysql_fetch_array($reponseNPC) )
    			{
    				?>
    				<option value="<?php echo $donnees['nom']; ?>"><?php echo $donnees['nom']; ?></option>
    				<?php
    			}
    		echo '</optgroup>';
     
    		echo '<optgroup label="PIC">';
    		$reponsePIC = mysql_query("SELECT DISTINCT nom,zone FROM ros WHERE zone = 'PIC' ORDER BY nom" );
    			while ($donnees = mysql_fetch_array($reponsePIC) )
    			{
    				?>
    				<option value="<?php echo $donnees['nom']; ?>"><?php echo $donnees['nom']; ?></option>
    				<?php
    			}
    		echo '</optgroup>';
     
    	echo'</select>';
    ?>
    Mon but serait de créer une page à part en php, qui me permettrai de modifier cette liste de personne dans la BDD (ajouter & supprimer) sans passer par phpmyadmin !

    Quelqu'un a une idée ?

    Merci d'avance

    Steven

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux déja simplifier ton code un peu comme ç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
    <?php
    $currentzone = "";
    $reponseAL = mysql_query("SELECT DISTINCT nom,zone FROM ros ORDER BY zone, nom" );
    echo '<select name="reponse">';
    echo '<option value=""></option>';
    while ($donnees = mysql_fetch_array($reponseAL)) {
    	if ($donnees['zone'] != $currentzone) {
    		echo '<optgroup label="' . $donnees['zone'] . '">';
    	}
    	echo '<option value="' . htmlspecialchars($donnees['nom']) . '">' . htmlspecialchars($donnees['nom']) . '</option>';
     
    	if ($donnees['zone'] != $currentzone) {
    		echo '</optgroup>';
    		$currentzone = $donnees['zone'];
    	}
    echo'</select>';
    ?>
    Pour la mise à jour par exemple ici je fais un formulaire par ligne (je suppose qu'il y un champs id dans ta table)
    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
    <?php
    if (isset($_POST['ros']) && isset($_POST['id'])) {
    	mysql_query("UPDATE ros SET nom = '" . mysql_ real_ escape_ string($_POST['ros']) . "' WHERE id = " int($_POST['id']);
    }
     
    $currentzone = "";
    $reponseAL = mysql_query("SELECT DISTINCT nom,zone FROM ros ORDER BY zone, nom" );
     
    while ($donnees = mysql_fetch_array($reponseAL)) {
    	if ($donnees['zone'] != $currentzone) {
    		echo '<p>' . $donnees['zone'] . '</p>';
    		$currentzone = $donnees['zone'];
    	}
    	echo '<form action="" method="post" >';
    	echo '<input type="hidden" name="id" value="' . $donnees['id'] . '">';
    	echo '<input type="text" name="ros" value="' . htmlspecialchars($donnees['nom']) . '">';
    	echo '<input type="submit">';
    	echo'</form>';
    }
    ?>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Homme Profil pro
    Apprenti Ingénieur
    Inscrit en
    Novembre 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti Ingénieur
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2011
    Messages : 104
    Points : 53
    Points
    53
    Par défaut
    Je ne comprends pas la simplification du code que tu as fait pour la liste déroulante, et en l'essayant elle ne marche pas, ma page est blanche et je n'ai plus rien =/

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    J'ai écris le code à la volée comme exemple, il y peut y avoir des fautes

    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
    <?php
    mysql_connect("localhost","root","");
    mysql_select_db("sm");
     
    $currentzone = "";
    $reponseAL = mysql_query("SELECT DISTINCT nom,zone FROM ros ORDER BY zone, nom" );
    echo '<select name="reponse">';
    echo '<option value=""></option>';
    while ($donnees = mysql_fetch_array($reponseAL)) {
    	if ($donnees['zone'] != $currentzone) {
    		echo '<optgroup label="' . $donnees['zone'] . '">';
    	}
    	echo '<option value="' . htmlspecialchars($donnees['nom']) . '">' . htmlspecialchars($donnees['nom']) . '</option>';
     
    	if ($donnees['zone'] != $currentzone) {
    		echo '</optgroup>';
    		$currentzone = $donnees['zone'];
    	}
    }
    echo'</select>';
    ?>

    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
     
    <?php
    if (isset($_POST['ros'], $_POST['id'])) {
    	mysql_query("UPDATE ros SET nom = '" . mysql_real_escape_string($_POST['ros']) . "' WHERE id = " . intval($_POST['id']));
    }
     
    $currentzone = "";
    $reponseAL = mysql_query("SELECT DISTINCT nom,zone FROM ros ORDER BY zone, nom" );
     
    while ($donnees = mysql_fetch_array($reponseAL)) {
    	if ($donnees['zone'] != $currentzone) {
    		echo '<p>' . $donnees['zone'] . '</p>';
    		$currentzone = $donnees['zone'];
    	}
    	echo '<form action="" method="post" >';
    	echo '<input type="hidden" name="id" value="' . $donnees['id'] . '">';
    	echo '<input type="text" name="ros" value="' . htmlspecialchars($donnees['nom']) . '">';
    	echo '<input type="submit">';
    	echo'</form>';
    }
    ?>
    Active l'affichage des erreurs quand tu developpes.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre du Club
    Homme Profil pro
    Apprenti Ingénieur
    Inscrit en
    Novembre 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti Ingénieur
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2011
    Messages : 104
    Points : 53
    Points
    53
    Par défaut
    C'est bon ça marche !

    J'ai réussis à faire ce que je voulais du coup !

    J'ai créé une page qui affiche la liste des personnes dans ma table, avec un formulaire d'ajout qui renvoi sur elle même.

    quelques bouts de code :

    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
    <?php 
     
    if ( !empty($_POST['nom'])) {
     
    	//récupération des données et les formater un peu
    	$nom = addslashes($_POST["nom"]);
    	$zone = addslashes($_POST["zone"]);
    	$adresse = addslashes($_POST["mail"]);
     
    	$requete="INSERT INTO ros VALUES (NULL,'".$nom."','".$zone."','".$adresse."')";
    	$resultat=@mysql_query($requete);
     
    }
     
    ?>
    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
    <p>
    	<form id="form1" method="post" action="modifros.php" enctype="multipart/form-data">
    		<p class="double">
    			<label for="f1-nom"><em  style="color:red">*</em> UI:</label>
    			<select name="zone" id="zone">
    				<option value=""></option>
    				<option value="AL">AL</option>
    				<option value="BFC">BFC</option>
    				<option value="CA">CA</option>
    				<option value="NPC">NPC</option>
    				<option value="P">P</option>
    				<option value="autre">autre</option>
    			</select>
    		</p>
    		<p class="double">
    			<label for="f1-prenom"><em  style="color:red">*</em> Nom:
    			<span class="info"></span></label>
    			<input type="text" name="nom" />
    		</p>
    		<p class="double">
    			<label for="f1-adresse"><em  style="color:red">*</em> Adresse:
    			<span class="info"></span></label>
    			<input type="text" name="mail" />
    		</p>
    		<p class="simple">
    			<input type="submit" value="Envoyer ces informations">
    			<input type="reset" name="reset" value="Effacer" />
    		</p>
    	</form>
    </p>

    J'ai réussis à récupérer le mail dans mon fichier de traitement d'envoi de mail :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	// Choix du destinataire
    $reponseBFC = mysql_query("SELECT mail FROM ros WHERE nom='$ascaff'" );
    $donnees = mysql_fetch_array($reponseBFC);
    $mail = $donnees['mail'];


    et dans mon fichier de "modification" de ligne j'ai bien réussis a récupérer le nom depuis la base :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // Préparation de la requête
    $sql = "SELECT nom FROM ros";
    $result = mysql_query($sql) or die(mysql_error().$sql);
     
    while($row = mysql_fetch_assoc($result)) {
    	$dataHisto2[] = $row;
    }
    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
    				<p class="double">
    					<label for="f1-telephone">CAFF/ROS:</label>
    					<select name="ascaff" id="ascaff">
    						<option value=""></option>
     
    <?php
     
    $as = $row['ascaff'];
     
    	foreach($dataHisto2 as $row2): 
     
    		if ($as == "".$row2['nom']."") {
    			echo "<option value='".$row2['nom']."' SELECTED>".$row2['nom']."</option>";
    		} else {
    			echo "<option value='".$row2['nom']."'>".$row2['nom']."</option>";
    		}
     
    	endforeach;
     
    ?>
     
    					</select>
    				</p>

    Merci beaucoup pour votre aide

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

Discussions similaires

  1. [MySQL] Liste déroulante sql et php
    Par niou142 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 04/08/2008, 10h25
  2. [SQL] formulaire php/sql (liste déroulante) petit soucis
    Par koolgirl dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 13/03/2007, 21h21
  3. [SQL] Liste déroulante dynamique PHP only
    Par gforce dans le forum PHP & Base de données
    Réponses: 24
    Dernier message: 11/05/2006, 21h30
  4. [SQL] Problème de récupération des valeurs d'une liste multiple en php
    Par BOLARD dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 01/05/2006, 00h29
  5. [MySQL] Liste deroulante et sql en php
    Par Yukhaa dans le forum PHP & Base de données
    Réponses: 35
    Dernier message: 02/02/2006, 17h03

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