Page 1 sur 1

Concaténation de variable

Posté : 29 mai 2005, 12:51
par caro
Bonjour,

J'ai un petit souci de concaténation de variable.

Avec un formulaire, je peux entrer jusqu'à 10 dates.
Mes champs s'appellent Date1, Date2 etc...
J'ai une variable NbDep qui me permet de gérer le nombre de dates rentrées.
Pour l'ajout des dates dans ma base, je passe par une boucle For qui tourne autant de fois qu'il y a de dates rentrées.
J'ai donc une seule requete et mon souci est que j'arrrive pas à faire avec du texte et ma variable $i (variable qui s'incrémente pour ma boucle for) l'équivalent de $Date1, $Date2. Comment puis-je faire ?

J'espèere avoir été suffisament claire
Merci de votre aide.

Posté : 29 mai 2005, 12:55
par Cyrano
for($i = 1; $i < $limite; $i++)
{
    $Date_formattee = $Date.$i;
    // reste du code de la boucle
}
Mais au lieu de mettre $Date, tu utiliseras $Date_formattee.

Posté : 29 mai 2005, 13:00
par caro
$Date_formattee = $Date.$i;
C'est ce que j'ai fait en 1er. Mais je n'ai pas de variable $Date.
En fait je dois écrire en texte l'équivalent de "$Date" tout ça concaténé avec ma variable $i

Posté : 29 mai 2005, 13:14
par Cyrano
Alors tu concatènes:
$variable = "chaine de caractère". $i;
Et tu obtiendras la concaténation recherchée.

Posté : 29 mai 2005, 14:04
par caro
Merci ça marche... mais un autre souci est apparu... :(
Comment faire pour mettre la valeur de mon champ (variable $Date1) dans ma nouvelle variable.

Car avec
$variable = "chaine de caractère". $i; 
ma variablle 'variable' a 'chaine de caractère1' comme valeur et moi je souhaiterai récupérer la valeur de ma variable Date1

Suis-je claire ?

Posté : 29 mai 2005, 14:07
par Cyrano
Suis-je claire ?
Pas trop, tu m'as dit que ce n'était pas une variable et finalement c'en serait une quand même: je t'ai mis les deux cas de figure pour concaténer, chaine + varaible ou varaible+variable... du coup je comprends pas trop

Posté : 29 mai 2005, 14:16
par caro
Je vais essayer d'etre plus claire.

J'ai une page où je peux rentrer jusqu'à 10 dates de séjour de vacances.
mes champs s'appelent Date1, Date2, Date3, etc etc.

lors de l'ajout des dates dans ma base, j'utilise cette requete :
INSERT INTO departs (Sejour,Code,Cat,Date) values ('$Sejour','$Code','$Cat','$Date1')"
Cette requete je dois utiliser autant de fois que j'ai de dates rentrées dans mon formulaire.
Si j'ai 3 dates, la requete doit se faire 3 fois, 7 dates, 7 fois la requete.
Donc pour cela j'utilise une boucle for qui ressemble à ça :
for ($i = 1; $i <= $NbDep; $i++)
$NbDep étant mon nombre de dates rentrées.

donc ma requete doit intégrer i pour prendre en compte tour à tour Date1, puis Date2, puis Date3 etc etc

Donc ma requete doit etre du style (et c'est ça qui me pose pb)
INSERT INTO departs (Sejour,Code,Cat,Date) values ('$Sejour','$Code','$Cat','$Date[b]i[/b]')"
avec i =1, i=2 etc etc

Est-ce plus claire ?

Posté : 29 mai 2005, 14:32
par rami
Je te conseille de nommer tes input ainsi:

Code : Tout sélectionner

<input type="text" name=date[] />
Ainsi, tu pourras récupérer les saisis et boucler dessus:
<?php
//construction de la requete
$requete= 'INSERT INTO departs (Sejour,Code,Cat,Date) values ';

foreach($date as $dateSaisie)
   $requete.="('$Sejour','$Code','$Cat','$dateSaisie'),";

//suppression de la dernière virgule
$requete = substr($requete,0,-1);

?> 

Posté : 29 mai 2005, 15:04
par caro
Je ne comprends pas trop ceci :

Code : Tout sélectionner

<input type="text" name=date[] />
les 10 champs pour les dates seront nommés date[] ???

Posté : 29 mai 2005, 15:06
par rami
Oui exactement. En fait, tes dates seront contenues dans un tableau directement. Ainsi, pas besoin de vérifier quelles dates ont été saisies dans la récupération des variables ;)

Posté : 29 mai 2005, 15:06
par Cyrano
non, ça veut dire que $_POST['date'] sera un tableau indexé:
tu récupères :
$date - $_POST['date'];
Ensuite, tu récupères chaque date dans $date[0], $date[1] etc...
Pour savoir combien tu en as, tu fais
count($date);