Se connecter avec
S'enregistrer | Connectez-vous

PHP - Formulaire problème value

Dernière réponse : dans Programmation

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

Lassé par la pub ? Créez un compte

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.
Expert Programmation

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());

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
Expert Programmation

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.

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>';
Expert Programmation

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]

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
Expert Programmation

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;" />';
Lassé par la pub ? Créez un compte
Tom's guide dans le monde