Votre question

PHP - Formulaire problème value

Tags :
  • Logiciels
  • Programmation
Dernière réponse : dans Programmation
23 Mai 2011 14:11:52

Bonjour à tous,

je suis en train de développer une application qui permet, entre autre, à l'utilisateur d'ajouter des informations dans une BDD par le biais de formulaire. Je souhaiterais lui donner la possibilité de modifier une information (précédemment ajoutée dans la BDD).
Pour cela, j'ai une page de formulaire qui permet à l’utilisateur de choisir, à l'aide d'un bouton radio, l'info qu'il souhaite modifier. Je récupère donc le titre de l'info ainsi que les données qui vont avec (logiciel, version et description) et j'affiche alors un formulaire qui contient les données de l'info et on va donc pouvoir les modifier.

C'est là que mon problème apparaît : pour afficher, les anciennes valeur des champs j'utilise par exemple :
  1. echo "<td colspan='5'><input type='text' name='logiciel' size='50' maxlength='50' value=$logiciel></td>";


Le problème est que si le nom du logiciel (donc la valeur de $logiciel) est composé de plusieurs mots il ne garde que le premier.

J'ai essayé en utilisant textarea plutôt que input texte et là je n'ai pas le problème !

Ca ne me dérange pas d'utiliser textarea sauf pour le titre de l'info, en effet, je ne veux pas que l'utilisateur puisse le modifier, j'ai donc également essayé avec input type='hidden' mais j'ai le même problème : je n'ai que le premier mot de pris en compte.


J'espère avoir été à peu près clair, ci-dessous la requête qui permet d'effectuer la mise à jour :
  1. mysql_query("UPDATE infolog SET logiciel='$logiciel', version='$version', link='$link', description='$description' WHERE title='$title'") or die (mysql_error());



Merci d'avance pour votre aide

Autres pages sur : php formulaire probleme value

23 Mai 2011 14:30:45

Alors en fait maintenant ça marche, je n'ai plus le problème d'avoir juste un seul mot, il fait bien la mise à jour des champs sauf des champs 'version' et 'link'.

je comprends pas je ne vois pas de différence, dans mon script, entre ces champs et les champs 'title' et 'description' qui eux se mettent bien à jour.
m
0
l
a c 145 L Programmation
23 Mai 2011 14:55:03

Donc, pour résoudre les deux soucis:
  1. echo '<td colspan="5"><input type="text" name="logiciel" size="50" maxlength="50" value="', $logiciel, '"></td>';


  1. $query = "UPDATE `infolog` SET logiciel='".mysql_real_escape_string($logiciel)."', version='".mysql_real_escape_string($version)."', link='".mysql_real_escape_string($link)."', description='".mysql_real_escape_string($description)."' WHERE title='".mysql_real_escape_string($title)."'";
  2. mysql_query($query) or die (mysql_error());
m
0
l
Contenus similaires
23 Mai 2011 15:04:57

Merci beaucoup ! ça marche très bien !

J'aurai une autre question crazycat (inutile de créer un autre topic, toute façon c'est surement toi qui va répondre à ma question ^^).

J'ai un formulaire avec une liste d'information et on en choisit une à l'aide d'un bouton radio. Et je souhaiterais avoir deux boutons de type"submit" : un pour modifier et l'autre pour supprimer et en fonction du bouton choisi on envoie les données au bon fichier cible. C'est possible ça ?

Encore Merci
m
0
l
a c 145 L Programmation
23 Mai 2011 15:25:18

C'est possible, avec un tout petit peu de javascript.
Considérons que "Modifier" sera l'action par défaut (c'est la moins dangereuse) et que sa cible est "modifier.php", "Supprimer" aura pour action "supprimer.php". Ton formulaire aura pour id "monform"

Je te fais tout le code inline, sans passer par du javascript:
  1. <form name="monform" id="monform" action="modifier.php" method="post">
  2. <!-- Ici c'est tout ton formulaire -->
  3. <input type="submit" name="modifier" id="modifier" value="Modifier" />
  4. <input type="button" name="supprimer" id="supprimer" value="Supprimer" onclick="document.getElementById('monform').action=\"supprimer.php\";document.getElementById('monform').submit();return false;" />
  5. </form>

Le "return false" dans le onclick est juste une sécurité pour éviter un double post.
m
0
l
23 Mai 2011 15:43:26

Je dois avoir un problème dans ma syntaxe puisque rien ne se passe lorsque je clique sur Supprimer

  1. echo '<form name="monform" id="monform" action="validmodif.php" method="post">';
  2. while ($liste=mysql_fetch_array($resultat))
  3. {
  4. print '<div style="width:50%;margin:auto;"><p style="text-align:justify;">'.'<input type="radio" value="'.$liste['title'].'" name="title"><A HREF="'.$liste['link'].'">'.$liste['title'].'</A></p></div>'.'</radio>';
  5. }
  6. echo '<BR>';
  7. echo '<input type="submit" name="modifier" id="modifier" value="Modifier" />';
  8. echo '<input type="button" name="supprimer" id="supprimer" value="Supprimer" onclick="document.getElementById(\'monform\').action="supprinfo.php\";document.getElementById(\'monform\').submit();return false;" />';
  9. echo '<form>';
m
0
l
a c 145 L Programmation
23 Mai 2011 15:53:09

Tu as oublié d'échapper une quote autour de supprinfo.php:
[code]echo '<input type="button" name="supprimer" id="supprimer" value="Supprimer" onclick="document.getElementById(\'monform\').action=\"supprinfo.php\";document.getElementById(\'monform\').submit();return false;" />';[/quote]
m
0
l
23 Mai 2011 15:58:12

ca ne marche pas mieux, et quand j'entoure mon code comme ça :

  1. echo '<script language="javascript" type="text/javascript">';
  2. echo '<input type="button" name="supprimer" id="supprimer" value="Supprimer" onclick="document.getElementById(\'monform\').action=\"supprinfo.php\";document.getElementById(\'monform\').submit();return false;" />';
  3. echo '</script>';


je ne suis pas sur que ça soit correct
m
0
l
a c 145 L Programmation
23 Mai 2011 16:09:29

Ah non, il ne faut surtout pas entourer ça par des balises script.
Après une petite analyse, JS a tendance à faire une erreur sur les \" (au moins avec firefox).
La correction est donc:
  1. echo '<input type="button" name="supprimer" id="supprimer" value="Supprimer" onclick="document.getElementById(\'monform\').action=\'supprinfo.php\';document.getElementById(\'monform\').submit();return false;" />';
m
0
l
23 Mai 2011 16:14:56

SUPER !

c'est exactement ce que je voulais.

Encore merci crazycat !
m
0
l
a c 145 L Programmation
23 Mai 2011 16:33:49

De rien :) 
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS