Page 1 sur 2

form : fusion de 2 valeurs

Posté : 16 janv. 2007, 11:11
par Invité
Bonjour,

Est-ce possible de fusionner 2 valeurs dans un form ?

J'ai un :

Code : Tout sélectionner

print "<form action='toto.php' method='post'>"; print "<b>nom: <input size='30%'>"; print "prénom:<input length='15'>"; print "<input type='submit' name='submit' value='Post'></form>";
et je voudrais que la valeur envoyé ne soit pas d'un côté name=nom et de l'autre name=prénom mais name=nom+prénom.

Est-ce possible ? Merci pour toute aide.

Posté : 16 janv. 2007, 11:15
par Ryle
Tu peux le faire en javascript, avec un champ hidden. Il te suffit d'y concaténer tes valeurs avant d'envoyer le formulaire... mais ne serait-il pas plus simple de concaténer les deux champs une fois récupérés dans php ?

Posté : 16 janv. 2007, 11:19
par Invité
avec un
$copain=$_POST[nom]
$copain.=$_POST[prénom]
?

Posté : 16 janv. 2007, 11:23
par Ajoloca
Bonjour,
avec un
$copain=$_POST[nom]
$copain.=$_POST[prénom]
?
Sans oublier de tester que les deux existent et de mettre un espace entre les deux.

Posté : 16 janv. 2007, 11:31
par Invité
Je viens de modifier le code ET CA MARCHE !

Grand merci!

Posté : 16 janv. 2007, 11:37
par Invité
Pour l'espace, j'ai mis un :
$nom.=" ";


entre les deux. Merci infiniment.

Posté : 16 janv. 2007, 11:41
par Ajoloca
Re,

Plus simple
if(isset($_POST['nom']) && isset($_POST['prenom'])) {
   $copain = $_POST['nom'] . ' ' . $_POST['prenom'];
}

Posté : 16 janv. 2007, 11:48
par Ryle
On peut aussi le faire comme ça, pour quand même récupérer une valeur si l'un des deux champs n'a pas été renseigné :
$nom = isset($_POST['nom']) ? $_POST['nom'] : '';
$prenom = isset($_POST['prenom']) ? $_POST['prenom'] : '';
$copain = trim($nom . ' ' . $prenom);

//ou bien directement
$copain = (isset($_POST['nom']) ? $_POST['nom'] : '') . ' ' . (isset($_POST['prenom']) ? $_POST['prenom'] : '');

Edit : correction du code : suppression des isSet en trop.
Edit 2 : correction du code : suppression de la "(" en trop

je suis un boulet, je suis un boulet, je suis un boulet, je suis un boulet, ... |*()

Posté : 16 janv. 2007, 11:51
par Ajoloca
Re,
//ou bien directement
$copain = ((isset($_POST['nom']) ? $_POST['nom'] : '') . ' ' . (isset($_POST['prenom']) ? isset($_POST['prenom'] : '');
Tu ne crois pas que tu lui compliques la vie (compréhension) ?
EDIT :

Une petite erreur
(isset($_POST['prenom']) ? isset($_POST['prenom'] : ''); 
devrait être
(isset($_POST['prenom']) ? $_POST['prenom'] : '');

Posté : 16 janv. 2007, 11:58
par Ryle
Si c'est sur... c'est plus compliqué. Mais ça peut aussi ouvrir sa curiosité vers l'opérateur ternaire (voir la FAQ), la sienne ou celle de quelqu'un qui tomberait sur ce sujet d'ailleurs :)

Sinon pour le isSet en trop, c'est ce qu'en langage technique on qualifie communément de "boulette" :oops: ;)
(je vais corriger, sait-on jamais)

Posté : 16 janv. 2007, 12:36
par albat
//ou bien directement
$copain = ((isset($_POST['nom']) ? $_POST['nom'] : '') . ' ' . (isset($_POST['prenom']) ? $_POST['prenom'] : '');
Tu ne crois pas que tu lui compliques la vie (compréhension) ?
Je m'en voudrais d'ouvrir une polémique, mais...
c'est bien le code de Ryle qui a ma préférence. :lol: :-*

Opérateur ternaire powaaaaaaaaaaaaa ! :langue:

Posté : 16 janv. 2007, 12:37
par albat
Ma suggestion finale :
$copain = trim((isset($_POST['nom']) ? $_POST['nom'] : '') . ' ' . (isset($_POST['prenom']) ? $_POST['prenom'] : ''));
PS : Ryle, il me semble bien que tu avais une ( ouvrante en surnombre. :-k

Posté : 16 janv. 2007, 12:40
par Ajoloca
//ou bien directement
$copain = ((isset($_POST['nom']) ? $_POST['nom'] : '') . ' ' . (isset($_POST['prenom']) ? $_POST['prenom'] : '');
Tu ne crois pas que tu lui compliques la vie (compréhension) ?
Je m'en voudrais d'ouvrir une polémique, mais...
c'est bien le code de Ryle qui a ma préférence. :lol: :-*

Opérateur ternaire powaaaaaaaaaaaaa ! :langue:
Je ne suis pas contre l'utilisation de l'opérateur ternaire, bien au contraire,
mais lui montrer un double quand pour ajouter un espace il fait
$copain=$_POST['nom'];
$copain.=" ";
$copain.=$_POST['prenom'];
Je pense que c'est vraiment prématuré.

Posté : 16 janv. 2007, 12:53
par Ryle
Je pense que c'est vraiment prématuré.
ah...... donc ça je lui en parle pas non plus ? :roll: ;)
class Copain {
  var $nom;
  var $prenom;

  function Copain($nom='', $prenom='') {
    $this->setNom($nom);
    $this->setPrenom($prenom);
  }
  function display() {
    return trim($this->getNom() . ' ' . $this->getPrenom());
  }
  function getNom() {
    return $this->nom;
  }
  function setNom($val) {
    $this->nom = $val;
  }
  function getPrenom($val) {
    $this->prenom = $val;
  }
  function setPrenom($val) {
    $this->prenom = $val;
  }
}
@albat : ouep pour la parenthèse :cry:

Posté : 16 janv. 2007, 12:55
par albat
Avec tes exploits, on va avoir du mal à expliquer
que la POO permet de simplifier les développements... :evil: