[PHP/MySQL] Acuatliser une bd via PHP

Résolu/Fermé
Graig - 6 déc. 2008 à 09:34
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 7 déc. 2008 à 11:40
Bonjour,
Je dispose d'une base de donnée MySQL que je souhaiterais acualiser via une page PHP.
J'ai trouvé le moyen de le faire en 3 étapes :
modif1.php : récupération de l'ensemble des données de la base dans un tableau avec lien sur chaque ligne vers modif2.php (en introduisant une id)
modif2.php : formulaire de modification des données pour l'id sélectionnée
modif3.php : envoi des modifications à la bd

Pour gagner du temps j'aimerais pouvoir modifier les champs directement dans le tableau de l'étape 1 pour n'avoir plus que 2 pages :
modif1.php : tableau reprenant l'ensemble des données de la bd intégrant la possibilité de modifier certaines données et un bouton "enregistrer" en fin de ligne (sur chaque ligne donc)
modif2.php : envoi des modification à la bd pour la ligne concernée.

Est-ce possible et comment intégrer une id dans le code ?

Merci par avance
A voir également:

5 réponses

Utilisateur anonyme
6 déc. 2008 à 11:57
Bonjour,

Un peu "tarabiscoté" votre truc !
il est plus simple de faire :

1 -récupérer les modifs à faire
2 mettre à jour la table.

exemeple :
si $nom contient la nouvelle valeur et $prenom la nouvelle valeur du prénom
$id contient l'identifiant de l'éléméent à modifier;
la requête est :

$query = "update nom_de_la_table set nom='".$nom."', prenom='".$prenom."' where id='".$id."';";
0
Merci de votre réponse.
Mon problème se situe dans l'attribution d'un identifiant ($id). J'ai ajouté un champs id en index de ma bd (int en auto_increment) mais lorsque j'appelle la requete $sql = "UPDATE bd SET valeur1='$valeur1', valeur2='$valeur2' WHERE id='$id'" ca ne fonctionne pas...
Pouvez vous me donner un exemple très simple de formulaire de modification de donnée ou me dire où je pourrais en trouver un pour que je comprenne la requete qui permette d'identifier la ligne de ma bd dans laquelle je souhaite modifier des valeurs.
Voici mon code actuel :

<?PHP
$db = mysql_connect('_', '_', '_');
mysql_select_db('_',$db);
$sql = "UPDATE _ SET doc1='$doc1', doc2='$doc2' WHERE id='$id'";
mysql_query($sql)
or die('Erreur lors de la connexion à la base de donnée !'.$sql.'
'.mysql_error());

echo("<p align=\"center\">Mise à jour enregistrée</p>");
echo $sql
?>

$doc1 et $doc2 sont des valeurs saisies à l'aide de listes déroulantes dans mon tableau...
0
Utilisateur anonyme
6 déc. 2008 à 13:56
<form name=formulaire action='majbd.php' method='post'>
<input type='text' name='id' value=''>
<input type='text' name='modif1' value='''>
<input type=submit value='mofifier'>
</form>

----------------------------
majbd.php
<?php
$id=$_POST['id'];
$modif1=$_POST['modif1'];

squery="update .....
0
Ok merci pour l'exemple mais pour ce qui concerne ma bd l'id est générée automatiquement et non postée...

Puis-je mettre une autre requete que UPDATE... WHERE id='$id' comme par exemple WHERE nom='$nom' et prenom='$prenom' ?
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
6 déc. 2008 à 19:31
Bonsoir,

qd tu affiche ta page en lisant la BDD tu peux aussi lire l'id, donc il faut t'arranger pour le mettre dans cette page en "face" de chaque ligne

si tu veux un bouton enregistrer par ligne:

<?php
//tu fais connexion et lecture dans la base pour affichage  puis
//$result=mysql_query(....
while ($row=mysql_fetch_array($result)){
?>
<form action="enr_modifs.php" method="post">
<input type="text" name="doc1" value="<?php echo $row['doc1']; ?>">
<input type="text" name="doc2" value="<?php echo $row['doc2']; ?>">
<!-- champ caché pour passer l'id -->
<input type="hidden" name="id" value="<?php echo $row['id']; ?>">
<input type="submit" name="enregistrer" value="Enregistrer modif">
</form><br />

<?php
}

et dans ton fichier enr_modifs.php

<?php
if(isset($_POST['enregistrer'])){
	$id=$_POST['id'];
	$doc1=$_POST['doc1'];
	$doc2=$_POST['doc2'];

// tu fais connexion base ... puis
UPDATE... WHERE id='$id'

}


?>
0
C'est pas faute d'y avoir cru mais malheureusement après essai ça ne fonctionne tjs pas...

Voici les 2 codes au complet :

1. Tableau et saisie

<body class="white">
<form name="update" action="update_conf.php" method="POST" class="white">
<table width="550" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="50" rowspan="2" align="left"><b>ID</b></td>
<td width="105" rowspan="2" align="left"><b>NOM</b></td>
<td width="105" rowspan="2" align="left"><b>PRENOM</b></td>
<td width="100" rowspan="2" align="center"><b>DOC1</b></td>
<td width="100" rowspan="2" align="center"><b>DOC2</b></td>
<td width="90" rowspan="2" align="center"><b>MISE A JOUR</b></td>
</tr>
</table>

<?PHP
$db = mysql_connect('***', '***', '***');
mysql_select_db('***',$db);

$sql = "SELECT * FROM *** ORDER BY nom";
$req = mysql_query($sql) or die('Impossible de se connecter au serveur
'.$sql.'
'.mysql_error());

while($data = mysql_fetch_array($req))
{
?>

<table width="550" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="50" align="left"><?php echo $data['id']; ?><input type="hidden" name="id" value="<?php echo $data['id']; ?>"></td>
<td width="105" align="left"><?php echo $data['nom']; ?></td>
<td width="105" align="left"><?php echo $data['prenom']; ?></td>
<td width="100" align="center"><select name="doc1">
<option selected="selected"><?php echo $data['doc1']; ?></option>
<option value="A">OptionA</option>
<option value="B">OptionB</option>
<option value="C">OptionC</option></select></td>
<td width="100" align="center"><select name="doc2">
<option selected="selected"><?php echo $data['doc2']; ?></option>
<option value="A">OptionA</option>
<option value="B">OptionB</option>
<option value="C">OptionC</option></select></td>
<td width="90" align="center"><input type="submit" value="Enregistrer" name="envoyer"></td>
</tr>
</table>

<?php
}
mysql_close();
?>

</form>
</body>


2. Update_conf.php

<?PHP
if(isset($_POST['envoyer'])){
$id=$_POST['id'];
$reglement=$_POST['doc1'];
$certificat=$_POST['doc2'];

$db = mysql_connect('***', '***', '***');
mysql_select_db('***',$db);
$sql = "UPDATE *** SET doc1='$doc1', doc2='$doc2' WHERE id='$id'";
mysql_query($sql)
or die('Erreur lors de la connexion à la base de donnée !'.$sql.'
'.mysql_error());

echo("<p align=\"center\">Mise à jour enregistrée</p>");
}
?>
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
6 déc. 2008 à 22:38
il faut faire comme ça:

<body class="white">

<table width="550" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="50" rowspan="2" align="left"><b>ID</b></td>
<td width="105" rowspan="2" align="left"><b>NOM</b></td>
<td width="105" rowspan="2" align="left"><b>PRENOM</b></td>
<td width="100" rowspan="2" align="center"><b>DOC1</b></td>
<td width="100" rowspan="2" align="center"><b>DOC2</b></td>
<td width="90" rowspan="2" align="center"><b>MISE A JOUR</b></td>
</tr>
</table>

<?PHP
$db = mysql_connect('***', '***', '***');
mysql_select_db('***',$db);

$sql = "SELECT * FROM *** ORDER BY nom";
$req = mysql_query($sql) or die('Impossible de se connecter au serveur
'.$sql.'
'.mysql_error());

while($data = mysql_fetch_array($req))
{
?>
<!-- ainsi tu auras autant de formulaires que de lignes affichées , donc le bouton submit postera seulement les valeurs comprises entre <form> et </form> de la ligne-->
<form  action="update_conf.php" method="POST" class="white">
<table width="550" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="50" align="left"><?php echo $data['id']; ?><input type="hidden" name="id" value="<?php echo $data['id']; ?>"></td>
<td width="105" align="left"><?php echo $data['nom']; ?></td>
<td width="105" align="left"><?php echo $data['prenom']; ?></td>
<td width="100" align="center"><select name="doc1">
<option selected="selected"><?php echo $data['doc1']; ?></option>
<option value="A">OptionA</option>
<option value="B">OptionB</option>
<option value="C">OptionC</option></select></td>
<td width="100" align="center"><select name="doc2">
<option selected="selected"><?php echo $data['doc2']; ?></option>
<option value="A">OptionA</option>
<option value="B">OptionB</option>
<option value="C">OptionC</option></select></td>
<td width="90" align="center"><input type="submit" value="Enregistrer" name="envoyer"></td>
</tr>
</table>
</form>
<?php
}
mysql_close();
?>


</body>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Alain,
Vous êtes mon sauveur !! Merci INFINIMENT (3 jours que je m'acharne sur ma calvitie quand même...)
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
7 déc. 2008 à 11:40
Aie dur pour le coiffeur !

mets ton post en résolu

Cordialement

@lain
0