Page 1 sur 1

update choix table

Posté : 27 sept. 2011, 11:19
par sem2011
Aperçu: update choix d'une table
Bonjour,

Je souhaite mise à jours selon le choix de table. J'ai crée une variable pour choisir le nom de table, et modifier la table. La modification s'effectue en écrivant le nom de table , mais avec la variable pour choisir une table, il y a un problème. j'ai besoin de votre aide merci.


<form method="post" name="formul" action="">
Nom table : <input type="text" id="texte1" name="texte1" value=" "/>

<input type="submit" id="ok" name="ok" value="Selectionner"/>
</form>

<?php
//error_reporting(0);
$c= mysql_connect('localhost','root','') or die ("connection impossible");
mysql_select_db('test', $c) or die ("connection impossible a la base");

$tab="";
if(isset ($_POST['ok']))
{

if(isset ($_POST['texte1']))
{
$tab = $_POST['texte1'];
$sql="select id, nom, prenom from ".$tab."";
$rs=mysql_query($sql,$c);

?><table align="center">
<tr>
<td>Nom </td>
<td>Prenom </td>
</tr>
<tr><td>Nom Table</td><td><input type="text" id="texte1" name="texte1" value="<?php if(isset($_POST['texte1'])) { echo $_POST['texte1'];} ?> "/></td></tr>
<form action="" method="post" name="formul">
<input type="hidden" name="modife" value="ok" />
<?php
$i=1;
while($data=mysql_fetch_array($rs)){ $nom=$data['nom']; $prenom=$data['prenom']; $id=$data['id']; $array[]=$id; //on peut remplacer $array par $_session...
?>

<tr><td><input type="text" name="<?php echo 'nom'.$id;?>" value="<?php echo $nom;?>" /></td>
<td><input type="text" name="<?php echo 'prenom'.$id;?>" value="<?php echo $prenom; ?>" /></td>

<?php $i=$i+1;
}

//echo $array[3];
?>
</tr>
<tr><td align="center"><input type="submit" name="modif" value="modif" /></td></tr></form>
</table>
<?php
for($t=0;$t<count($array);$t++){
if(isset ($_POST['modif'] )&& $_POST['modif']){

$id=$array[$t];// $_POST['id'.$array[$t]];
$nom=$_POST['nom'.$array[$t]];
$prenom=$_POST['prenom'.$array[$t]];
$update="UPDATE ".$tab." SET nom ='".$nom."',prenom='".$prenom."'WHERE id=".$array[$t];



$result=mysql_query($update,$c) or die( mysql_error() );

if(mysql_query($update)){

header("Location:updatetotal.php");
}else{
echo "pas de modification ";

}
}
}
}}

?>

Re: update choix table

Posté : 27 sept. 2011, 13:52
par Mazarini
Bonjour,

"avec la variable pour choisir une table, il y a un problème"

Quel problème ?

Re: update choix table

Posté : 27 sept. 2011, 14:01
par sem2011
le problème: la mise à jour ne s'effectue pas quand on choisi la nom de table. il y a un problème avec "$tab".

UPDATE ".$tab. //erreur empty

Re: update choix table

Posté : 27 sept. 2011, 17:12
par Mazarini
la variable $tab n'est pas alimenté
donc vérifie la variable $_POST['texte1']

Si cette variable n'est pas renseignée, regardes du coté du formulaire dans le code html pour voir ce qui ne va pas comme par exemple un input hors de la balise form.

Autrement décommente la ligne error_reporting(0) en mettant E_ALL comme paramètre

Re: update choix table

Posté : 27 sept. 2011, 18:20
par sem2011
En effet la variable $tab inconnu,
for($t=0;$t<count($array);$t++){
if(isset ($_POST['modif'] )&& $_POST['modif']){
$tab = $_POST['texte1']; ...

je ne sais pas comment alimenter la variable, je ne trouve pas la solution..

Re: update choix table

Posté : 28 sept. 2011, 00:56
par moogli
salut,

fait un var_dump($_POST); en haut de la page cible du formulaire tu pourra ainsi voir ce qu'il y a de transmis par le formulaire.

après besoin d'utiliser une autre variable pourquoi ne pas utiliser $_POST['texte1'] directement ?

Après coté sécurité c'est un peu la foire ton truc, tu ne peux être certain que l'on n’essaiera pas d'utiliser une table "sensible".

dans ton deuxième formulaire (dans le isset $_POST['texte1'] tumet un champ de formulaire en dehors du formulaire
tr><td>Nom Table</td><td><input type="text" id="texte1" name="texte1" value="<?php if(isset($_POST['texte1'])) { echo $_POST['texte1'];} ?> "/></td></tr>
<form action="" method="post" name="formul">

c'est, bien sur, a proscrire :)

tu peux aussi afficher $update avant utilisation (avec var_dump ;) ).

@+

Re: update choix table

Posté : 28 sept. 2011, 11:35
par sem2011
Merci pour votre réponse,

le changement s'affiche bien
de test à test1 et à test2
array
'nom1' => string 'test1' (length=5)
'prenom1' => string 'test1' (length=5)
'nom2' => string 'test2' (length=5)
'prenom2' => string 'test2' (length=5)
'modif' => string 'modif' (length=5)

et aussi le nom de table s’affiche bien var_dump($tab);
mais pas de changement dans le base de donnée.

Re: update choix table

Posté : 28 sept. 2011, 21:25
par sem2011
merci de m'aider car, toujours pas de solution, je n'arrive pas à effecteur la mise à jours dans la base

Re: update choix table

Posté : 29 sept. 2011, 09:12
par Mazarini
merci de m'aider car, toujours pas de solution, je n'arrive pas à effecteur la mise à jours dans la base
Il faudrait savoir si le code SQL correspond à ce que tu veux faire et s'il est correct.

Dans le code suivant, pourquoi faire 2 mysql_query() ?
Rajouter un blanc devant le WHERE à mon avis.
$update="UPDATE ".$tab." SET nom ='".$nom."',prenom='".$prenom."'WHERE id=".$array[$t];
$result=mysql_query($update,$c) or die( mysql_error() );
if(mysql_query($update)){
header("Location:updatetotal.php");
}else{
echo "pas de modification ";
}

Re: update choix table

Posté : 29 sept. 2011, 20:26
par sem2011
je crois le problème dans la update

for($t=0;$t<count($array);$t++){
if(isset ($_POST['modif'] )&& $_POST['modif']){

......
$update="UPDATE ".$tab." SET nom ='".$nom."',prenom='".$prenom."' WHERE id=".$array[$t]; il faut changer cette ligne mais comment


//$result1=mysql_query($insert);
$result=mysql_query($update,$c) or die( mysql_error() );