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 :

[PHP/MySQL] Formulaire - Mise à jour BDD par DELETE + INSERT [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 24
    Par défaut [PHP/MySQL] Formulaire - Mise à jour BDD par DELETE + INSERT
    Bonjour,

    Je ne m’en sors pas avec mon formulaire de mise à jour.

    Dans ce formulaire, l’utilisateur aura dans les champs le contenu de la base qu’il pourra modifier. (DELETE des données puis INSERT des nouvelles données saisies)

    Lorsqu’il s’agit que d’une ligne = pas de problème.

    Mais l’utilisateur à la possibilité d’appuyer sur un bouton plus pour ajouter de nouvelles lignes. (générées à l’aide de JAVASCRIPT)

    Je dois mal m’y prendre au niveau des boucles car je n’ai pas le résultat voulu.
    Soit les résultats s’affichent sur plusieurs lignes mais en prenant en compte que la dernière saisie, soit je n’arrive à afficher qu’une ligne.


    Mon 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
    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
    <?
    // FORMULAIRE DE MODIFICATION
    if (isset ($_POST['BtdbEnvoyer']))
    {
    	//Suppression des données
    	$sqlDelAct = " DELETE FROM `action_has_tdb` WHERE `idTdb` = $dernierEnr ";
    	mysql_query($sqlDelAct) or die('Erreur SQL !'.$sqlDelAct.'<br>'.mysql_error());
     
    	//Insertion des données
    	for ($i=0;$i<$_POST['nbreLigneAct'];$i++)
    	{	
    		if(isset($_POST['ActAct'][$i])) $ActAct = $_POST['ActAct'][$i]; else $ActAct = 0;
    		if(isset($_POST['ActObj'][$i])) $ActObj = $_POST['ActObj'][$i]; else $ActObj = 0;
     
    		$sqlAction = "	INSERT INTO indicaperf.action_has_tdb (`idTdb`,`Action`,`Objectif`)
    							VALUES('$dernierEnr','$ActAct','$ActObj')";
    		mysql_query($sqlAction) or die(mysql_error());					
    	}
    ?>
    <!--construction-->
    <html>
    	<head>
    		<link href="styleIndicaPerf.css" rel="stylesheet" type="text/css" />
    		<script language="javascript" src="script.js">						
    		</script>
    	</head>
    	<body class="body">
    		<form name="FormTdb" method="post" action="formTypeUpdate.php#formulaire">
    		<table class="tableAction">
    			<tr>
    				<th class="action"><b>Actions</b></th>
    				<th class="action"><b>Objectifs et Gains</b></th>
    			</tr>
    			<? 	
    			//Affichage des données de la BDD dans les champs 
    			echo $sqlAffichAction = "SELECT * FROM action_has_tdb WHERE idTdb = $dernierEnr";
    			$resultAction = mysql_query($sqlAffichAction) or die ('Erreur : '.mysql_error() );
    			while($rowAction = mysql_fetch_array($resultAction))
    			{
    				for ($i=0;$i<$_POST['nbreLigneAct'];$i++)
    				{	
    					if(isset($_POST['ActAct'][$i])) $ActAct = $_POST['ActAct'][$i]; else $ActAct = 0;
    					if(isset($_POST['ActObj'][$i])) $ActObj = $_POST['ActObj'][$i]; else $ActObj = 0;	?>
     
    				<tr>
    					<td class="action"><textarea rows='5' cols="25" name='ActAct[]'><?
    						if($ActAct!=0) echo $ActAct; else echo $rowAction["Action"];?></textarea></td>
    					<td class="action"><textarea rows='5' cols="15" name='ActObj[]'><?
    						if($ActObj!=0) echo $ActObj; else echo $rowAction["Objectif"];?></textarea></td>
    				</tr>
    			<?	}		
    			}	
    			?>
    		</table>
    		<div id=saisiesAct></div>
    		<div align=center><input type=button value="+" onclick=AjouterAction()></div>
     
    		<input type="hidden" name="nbreLigneAct" value="<?if (isset($_POST['nbreLigneAct'])) echo $_POST['nbreLigneAct'];
    			else echo "1";?>" id="NbreLigneAct">
     
    		<input type="submit" name="BtdbEnvoyer" value="modifier"></br>
    		<a name="formulaire"></a>
     
    	<?	if (isset ($_POST['BtdbEnvoyer'])) echo "<font color=green>Données modifées dans la base</font>"; ?>
     
    		</form>
    	</body>
    </html>
    <?
    }
    ?>


    Merci d’avance à ceux qui s’intéresseront à mon problème.

  2. #2
    Membre actif Avatar de 2h15Crew
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 79
    Par défaut
    Pourquoi faire une suppression/insertion alors que la modification existe (UPDATE) ?

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 24
    Par défaut
    Pourquoi faire une suppression/insertion alors que la modification existe (UPDATE) ?
    J’aurai peut être du préciser ce choix, comme l’utilisateur peut ajouter des lignes en appuyant sur un bouton « + », les $_POST contiennent des array() pour faciliter les insertions.

    Exemple :

    Ligne 1 sera $_POST[‘ActAct’][0]
    Ligne 2 sera $_POST[‘ActAct’][1]
    Ligne 3 sera $_POST[‘ActAct’][2]


    Admettons que Ligne 1 et Ligne 2 sont déjà présente dans le formulaire et sont destiné à être modifié, et bien DELETE puis INSERT.

    De cette manière, si l’utilisateur ajoute Ligne 3, la boucle parcourra la totalité des champs existants et ajoutés.

  4. #4
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Admettons que Ligne 1 et Ligne 2 sont déjà présente dans le formulaire et sont destiné à être modifié, et bien DELETE puis INSERT.
    Tu connais replace into ?

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 24
    Par défaut
    Tu connais replace into ?
    Maintenant oui.
    Cela peut en effet être intéressant dans mon cas.

    Je test ça demain première heure.

    Merci

  6. #6
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 24
    Par défaut
    J'avais donc bien un probleme au niveau de mes boucles, voici ce que j'ai du modifier afin d'avoir le resultat voulu:

    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
    //Boucle pour l'insertion des données
    	for ($i=0;$i<sizeof($_POST['ActAct']);$i++)
    	{	
    		if(isset($_POST['ActAct'][$i])) $ActAct = $_POST['ActAct'][$i]; else $ActAct = 0;
    		if(isset($_POST['ActObj'][$i])) $ActObj = $_POST['ActObj'][$i]; else $ActObj = 0;
     
    		$sqlAction = "	INSERT INTO indicaperf.action_has_tdb (`idTdb`,`Action`,`Objectif`)
    							VALUES('$dernierEnr','$ActAct','$ActObj')";
    		mysql_query($sqlAction) or die(mysql_error());					
    	}
     
    [...]
     
    //Boucle de l'affichage des données
     
    $i = 0;
    			while($rowAction = mysql_fetch_array($resultAction))
    			{	
     
    					if(isset($_POST['ActAct'][$i])) $ActAct = $_POST['ActAct'][$i]; else $ActAct = 0;
    					if(isset($_POST['ActObj'][$i])) $ActObj = $_POST['ActObj'][$i]; else $ActObj = 0;	?>
     
    				<tr>
    					<td class="action"><textarea rows='5' cols="25" name='ActAct[]'><?
    						if($ActAct!=0) echo $ActAct; else echo $rowAction["Action"];?></textarea></td>
    					<td class="action"><textarea rows='5' cols="15" name='ActObj[]'><?
    						if($ActObj!=0) echo $ActObj; else echo $rowAction["Objectif"];?></textarea></td>
    				</tr>
    		<?	$i++;
    			}			
    			?>
    Merci pour votre participation.

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

Discussions similaires

  1. [MySQL 5] Mise à jour de 3 bases les unes par rapport aux autres
    Par Doc.Fusion dans le forum Administration
    Réponses: 1
    Dernier message: 17/07/2009, 20h15
  2. [formulaire] Mise à jour d'un sous formulaire
    Par virginie2 dans le forum IHM
    Réponses: 15
    Dernier message: 22/12/2005, 13h30
  3. Module de Mise à jour BDD access via un site sécurisé
    Par Askarod dans le forum Bases de données
    Réponses: 3
    Dernier message: 08/12/2005, 08h31
  4. PHP -- MYSQL -- Formulaire HTML
    Par waybee dans le forum Requêtes
    Réponses: 2
    Dernier message: 28/11/2005, 09h30

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