MYSQL + PHP besoin d'aide

Fermé
Edouard73 Messages postés 139 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 2 avril 2013 - 13 août 2008 à 17:21
 oueb - 13 août 2008 à 18:02
Bonjour,

je crée une page administration me permettant de modifier les données de la base mysql directement du site web. Jusque la j'arrive à modifier ligne par ligne. Dont voici le code :

page administration.php

<table>
<tr>
<td>id</td>
<td>Reference</td>
<td>couleurs</td>
<td>type<br/> d'impression </td>
<td>dimensions</td>
<td>poids</td>
<td>Print area</td>
<td>image 400 x 400 </td>
<td>modify</td>
</tr>
<?php
mysql_connect("local host", "root", "");
mysql_select_db("root");
// On récupère les 5 dernières news
$retour = mysql_query("SELECT * FROM gamme");
while ($donnees = mysql_fetch_array($retour))
{
?>
<form name="forumlaire" method="post" action="modify.php" enctype="multipart/form-data">
<tr>
<td><?php echo $donnees['id']; ?></td>
<td><input class="text" type="text" maxlength="7" name="reference" size="10" value="<?php echo stripslashes ($donnees['reference']); ?>"></td>
<td><input class="text" type="text" maxlength="50" name="couleurs" size="10" value="<?php echo stripslashes ($donnees['couleurs']); ?>"></td>
<td><input class="text" type="text" maxlength="50" name="tyimp" size="12" value="<?php echo stripslashes ($donnees['tyimp']); ?>"></td>
<td><input class="text" type="text" maxlength="50" name="dim" size="10" value="<?php echo stripslashes ($donnees['dim']); ?>"></td>
<td><input class="text" type="text" maxlength="50" name="poids" size="10" value="<?php echo stripslashes ($donnees['poids']); ?>"></td>
<td><input class="text" type="text" maxlength="50" name="dimimp" size="10" value="<?php echo stripslashes ($donnees['dimimp']); ?>"></td>
<td><input class="text" type="text" name="image" size="10" value="<?php echo stripslashes ($donnees['image']); ?>"></td>
<td><input class="input1" type="submit" value="MODIFY"/><input type="checkbox" name="idd" value="<?php echo $donnees['id']; ?>"/></td>
</tr>
</form>
<?php
}
mysql_close();
?>
</table>

page modify.php :

<?php
$idd = $_POST['idd'];
$reference = addslashes ($_POST['reference']);
$couleurs = addslashes ($_POST['couleurs']);
$tyimp = addslashes ($_POST['tyimp']);
$dim = addslashes ($_POST['dim']);
$poids = addslashes ($_POST['poids']);
$dimimp = addslashes ($_POST['dimimp']);
$image = addslashes ($_POST['image']);
if($idd == TRUE)
{
mysql_connect("local host", "root", "");
mysql_select_db("root");
mysql_query("UPDATE gamme SET
reference='" . $reference . "',
couleurs='" . $couleurs . "',
tyimp='" . $tyimp . "',
dim='" . $dim . "',
poids='" . $poids . "',
dimimp='" . $dimimp . "',
image='" . $image . "'
WHERE id='$idd'");
mysql_close();

echo "<script language='Javascript'>document.location='administration.php'</script>";
}

elseif($idd == FALSE)
{
echo "<script language='Javascript'>document.location='administration.php'</script>";
}
?>

Mais voila. je voudrais comme dans l'exemple suivant faire une sauvgarde complete de la table sans avoir à sauvgarder ligne par ligne comme il est fait :

administration.php

<table>
<tr>
<td>id</td>
<td>Reference</td>
<td>couleurs</td>
<td>type<br/> d'impression </td>
<td>dimensions</td>
<td>poids</td>
<td>Print area</td>
<td>image 400 x 400 </td>
<td>modify</td>
</tr>
<?php
mysql_connect("local host", "root", "");
mysql_select_db("root");
// On récupère les 5 dernières news
$retour = mysql_query("SELECT * FROM gamme");
while ($donnees = mysql_fetch_array($retour))
{
?>
<form name="forumlaire" method="post" action="modify.php" enctype="multipart/form-data">
<tr>
<td><?php echo $donnees['id']; ?></td>
<td><input class="text" type="text" maxlength="7" name="reference" size="10" value="<?php echo stripslashes ($donnees['reference']); ?>"></td>
<td><input class="text" type="text" maxlength="50" name="couleurs" size="10" value="<?php echo stripslashes ($donnees['couleurs']); ?>"></td>
<td><input class="text" type="text" maxlength="50" name="tyimp" size="12" value="<?php echo stripslashes ($donnees['tyimp']); ?>"></td>
<td><input class="text" type="text" maxlength="50" name="dim" size="10" value="<?php echo stripslashes ($donnees['dim']); ?>"></td>
<td><input class="text" type="text" maxlength="50" name="poids" size="10" value="<?php echo stripslashes ($donnees['poids']); ?>"></td>
<td><input class="text" type="text" maxlength="50" name="dimimp" size="10" value="<?php echo stripslashes ($donnees['dimimp']); ?>"></td>
<td><input class="text" type="text" name="image" size="10" value="<?php echo stripslashes ($donnees['image']); ?>"></td>
<td><input class="input1" type="submit" value="MODIFY"/><input type="checkbox" name="idd" value="<?php echo $donnees['id']; ?>"/></td>
</tr>
</form>
<?php
}
mysql_close();
?>
<tr>
<td colspan="9">
<form name="forumlaire" method="post" action="modifyall.php" enctype="multipart/form-data">
<input class="input1" type="submit" value="MODIFY"/><input type="checkbox" name="idd" value="<?php echo $donnees['id']; ?>"/>
</form>
</td>
</tr>
</table>

modifyall :

<?php
$all = $_POST['all'];
$reference = addslashes ($_POST['reference']);
$couleurs = addslashes ($_POST['couleurs']);
$tyimp = addslashes ($_POST['tyimp']);
$dim = addslashes ($_POST['dim']);
$poids = addslashes ($_POST['poids']);
$dimimp = addslashes ($_POST['dimimp']);
$image = addslashes ($_POST['image']);
if($all == TRUE)
{
mysql_connect("local host", "root", "");
mysql_select_db("root");
mysql_query("UPDATE gamme");
mysql_close();

echo "<script language='Javascript'>document.location='administration.php'</script>";
}

elseif($all == FALSE)
{
echo "<script language='Javascript'>document.location='administration.php'</script>";
}
?>

Mais voila le probleme.

Après plusieurs essaie je ne vois pas comment placer et ou cette ligne

<tr>
<td colspan="9">
<form name="forumlaire" method="post" action="modifyall.php" enctype="multipart/form-data">
<input class="input1" type="submit" value="MODIFY"/><input type="checkbox" name="idd" value="<?php echo $donnees['id']; ?>"/>
</form>
</td>
</tr>

en suite je pense avoir fait ce qu'il fallait dans le modifyall.php car je ne veux pas qu'un ID soit modifié, mais que tous les ID de la base le soient.

Si vous avez une solution à mon probleme ça serait supperr sympa :)

merci d'avance
edouard
A voir également:

1 réponse

Bonjour,

Il y a 2 <form>(voire plus) avec le même nom... forcément ça peut pas marcher. Il faut utiliser un seul form et mettre les balises ouvrantes et fermantes hors du while, seuls les input doivent être répétés.
L'action déclenchant l'envoi en POST est répétée pour chaque ligne donc il n'en prend qu'une en compte.

Par contre les <input> doivent avoir un nom (attribut name="")différent pour chaque valeur, en fonction de l'ID'(la clé primaire qu'il ne sert à rien de modifier).
comme ceci par exemple

<input name="ma_colonne<?php echo $donnees[clef]; ?>" value="<?php $donnes['ma_colonne']; ?>" />

et pareillement il faut récupérer les données avec un while pour les différencier lors de la modification.
0