Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/12/2006, 18h44   #1
Membre éprouvé
 
Avatar de oceane751
 
Intégrateur Web
Inscription : novembre 2004
Messages : 988
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Intégrateur Web

Informations forums :
Inscription : novembre 2004
Messages : 988
Points : 434
Points : 434
Par défaut [SQL] Ajout d'un champs text +1, +2, +3..

bonjour à tous!!

j'aimerais ajouter un nombre de champs par exemple j'ai un champs "caracteristiques" et j'aimerais en ajouter un 2eme et eventuellement d'autres
j'ai fait un bout de code mais ça ne marche pas beaucoup :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
<?
 
if (isset ($_POST['chp']))
{
  $nombre = $_POST['nombre'];
 // echo $_POST['chp'];
 for ($i = 0; $i< $nombre; $i++)
 {
 
  echo "<table>
  <tr>
  <td>
  Nom caracteristique<input type = text name = champ>
  </td>
  <td>Descriptif<textarea name = descriptif></textarea></td>
  </tr>
  </table> ";
}
}
 
 
echo "<table>";
echo "<form method = post action = 'ajoutchamps.php'";
 
echo"<tr>
<td>";
echo "Nom caracteristique<input type = text name = champ></td>
<td>Descriptif<textarea name = descriptif></textarea></td>
</tr>
<tr>
<td><input typ = text  name = nombre size = 1>
<input type = submit name = chp value = ajouter>";
echo "</td></tr>
 
</form>
</table>";
?>
si je veux en rajouter 2, ça marche j'en ais bien 3 (le 1er + les 2 ajoutés)

par contre si j'en rajoute 3, ça ne m'en rajoute qu'un seul soit au total 4 (le 1er + les 2 ajoutés + le 4eme) au lieu de 6 (les 3 ajoutés precedement + les 3 ajoutés)

donc si quelqu'un pourrait m'aider à rajouter le nombre voulu de champs, ce serait vraiment sympas...
oceane751 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2006, 23h47   #2
Inscrit
 
Avatar de is_null
 
Inscription : octobre 2006
Messages : 637
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 637
Points : 690
Points : 690
Le HTML n'est pas valide. On l'utilise de telle façon :
Code :
<balise parametre="valeur"></balise>
Il est nécéssaire de produire un tel code.

Sinon, essayer :
Code :
$nombre = (int)$_POST['nombre']
ou encore
Code :
$nombre = intval($_POST['nombre'])
is_null est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2006, 01h03   #3
Membre éprouvé
 
Avatar de oceane751
 
Intégrateur Web
Inscription : novembre 2004
Messages : 988
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Intégrateur Web

Informations forums :
Inscription : novembre 2004
Messages : 988
Points : 434
Points : 434
je ne vois pas trop ce que le html vient faire dans mon problème mais bon emrci quand meme pour ta réponse
oceane751 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2006, 09h41   #4
Membre chevronné
 
Avatar de cadoudal56
 
Inscription : février 2005
Messages : 671
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : février 2005
Messages : 671
Points : 646
Points : 646
Hello,

Ce n'est pas bien compliqué...
En fait tu voudrais que en rentrant le nombre 3, il te rajoute 3 champs a ceux qui existe déja...
Par contre tu va avoir un probleme car tout tes champs s'appelle de la meme facon.... De plus tu as quelques erreurs dans ton code html. Il faut s'avoir que des erreurs a ce niveau peuvent empecher l'affichage et donc faire croire que le code est mauvais

Donc voici ce que je te propose :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
<?
 
if (isset ($_POST['chp'])) // Si chp a été cliqué
{
$count = $_POST['count']; //le nombre de champ existant
$nombre = $_POST['nombre']; //le nombre de champ a ajouter
 
 
 for ($x = 0; $x< ($nombre+$count); $x++)
 {
 
  echo '<table>
  <tr>
  <td>
  Nom caracteristique<input type="text" name="champ'.$x.'">
  </td>
  <td>Descriptif<textarea name="descriptif.'$x.'"></textarea></td>
  </tr>
  </table> ';
}
}
 
 
echo '<table>';
echo '<form method="post" action="ajoutchamps.php"';
 
echo '<tr><td>';
echo 'Nom caracteristique : <input type="text" name="champ"></td>
<td>Descriptif<textarea name="descriptif"></textarea></td>
</tr>
<tr>
<td><input type="text"  name="nombre" size="1">
<input type="hidden"  name="count" value="'.($count+$nombre).'">
<input type="submit" name="chp" value="ajouter>"';
echo '</td></tr> 
</form>
</table>';
?>
Comme tu peux le voir, j'ai juste rajouter une variable count qui passe le nombre de caractéristiques déja demandé.

@+
cadou
PS : Dis moi si cela a fonctionner...
cadoudal56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2006, 11h10   #5
Nouveau Membre du Club
 
Inscription : novembre 2006
Messages : 41
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 41
Points : 27
Points : 27
+1 mais c'est pas comme ca qu'il va faire des progrès en algorithmie...
xaaros est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2006, 17h11   #6
Membre éprouvé
 
Avatar de oceane751
 
Intégrateur Web
Inscription : novembre 2004
Messages : 988
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Intégrateur Web

Informations forums :
Inscription : novembre 2004
Messages : 988
Points : 434
Points : 434
merci pour ta réponse cacoudal
le code marche mais ya une erreur mais ça marche

j'ai mis :
Code :
1
2
3
4
5
6
 
if (isset ($_POST['chp']))
  {
 
echo '<input type="hidden"  name="count" value="'.$jj.'"> ';
  }
j'ai mis $jj = $count + $nombre;
mais toujours erreur :
Notice: Undefined index: count in c:\program files
ICI (en debut de code)
Code :
1
2
3
4
5
 
if (isset ($_POST['chp'])) // Si chp a été cliqué
{
  ==>  $count = $_POST['count']; <==
....
oceane751 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2006, 17h39   #7
Modérateur
 
Avatar de Rakken
 
Inscription : août 2006
Messages : 1 207
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 207
Points : 1 137
Points : 1 137
C'est qu'a premier appel de ta page, count n'est pas défini.
Teste l'existence de $_POST['count'] (avec un isset) avant de faire l'assignation, si $_POST['count'] n'existe pas, ben tu mets une valeur par défaut.

--
Rakken
Rakken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2006, 18h07   #8
Membre éprouvé
 
Avatar de oceane751
 
Intégrateur Web
Inscription : novembre 2004
Messages : 988
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Intégrateur Web

Informations forums :
Inscription : novembre 2004
Messages : 988
Points : 434
Points : 434
merci ça marche !!!
ché pas pk je n'y ais pas pensé plus tot!!
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
 
<?
 
 if (isset ($_POST['chp'])) 
{
 
$count = $_POST['count']; 
$nombre = $_POST['nombre']; 
 $jj = $count + $nombre;
 
 for ($x = 0; $x< $jj; $x++)
 {
 
  echo "<table>
  <tr>
  <td>
  Nom caracteristique<input type=text name=champ ".$x.">
  </td>
  <td>
  Descriptif<textarea name= descriptif".$x."></textarea>
  </td>
  </tr>
  </table>";
}
}
 
 
echo '<table>';
echo '<form method="post" action="ajoutchamps.php"';
 
echo '<tr>
<td>';
echo 'Nom caracteristique : <input type="text" name="champ">
</td>
<td>
Descriptif<textarea name="descriptif"></textarea>
</td>
</tr>
<tr>
<td>';
 
if (isset ($_POST['count'])) 
{
 
echo '<input type="hidden"  name="count" value="'.$jj.'"> ';
}
else
{
  echo '<input type="hidden"  name="count" value=0> ';
}
 
echo '<input type="text"  name="nombre" size="1">';
 
echo '<input type="submit" name="chp" value=ajouter>';
echo '</td></tr> 
</form>
</table>';
?>
merci encore à vous 2 pour m'avoir bien aidé !!
oceane751 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2006, 23h52   #9
Membre éprouvé
 
Avatar de oceane751
 
Intégrateur Web
Inscription : novembre 2004
Messages : 988
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Intégrateur Web

Informations forums :
Inscription : novembre 2004
Messages : 988
Points : 434
Points : 434
désolé mais me revoilà...

je voudrais une petite precision
j'aimerais récuperer ce qu'il y a dans les différents champs pour l'inserer avec une requete SQL INSERT

est ce que le "champ ".$x." " du " <input type=text name=champ ".$x."> " peut etre recuperer de la maniere suivante : $_POST['champ'][$x]
ou alors pas du tout?

parce que là j'ai essayé beaucoup de chose mais ej n'y arrive pas...
merci encore...
oceane751 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2006, 09h34   #10
Membre chevronné
 
Avatar de cadoudal56
 
Inscription : février 2005
Messages : 671
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : février 2005
Messages : 671
Points : 646
Points : 646
A mon avis tu le récuperas de cette manière :
Code :
1
2
 
$mydata = $_POST['champ'.$x]
@+
cadou
cadoudal56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2006, 12h06   #11
Membre éprouvé
 
Avatar de oceane751
 
Intégrateur Web
Inscription : novembre 2004
Messages : 988
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Intégrateur Web

Informations forums :
Inscription : novembre 2004
Messages : 988
Points : 434
Points : 434
ouais mais ça me met une erreur du style : Undefined variable: x....
quand je fais ça :
Code :
1
2
3
4
5
 
if (isset ($_POST['champ'.$x]))
  {
$champs = $_POST['champ'.$x];
}
ça me rend dingue cette histoire
oceane751 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2006, 16h03   #12
Modérateur
 
Avatar de Rakken
 
Inscription : août 2006
Messages : 1 207
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 207
Points : 1 137
Points : 1 137
Lit ton code html.

Une fois que tu as écrit ton formulaire en php, il génére une page en html.
Ce code :
Code :
<input type=text name=champ ".$x.">
Donne au final en html un truc du genre :
Code :
<input type=text name=champ1>
Donc, pour récuperer la valeur, tu doit récuperer un truc du genre
Dans la mesure ou tu ne sais pas a priori quel jusqu'a combien peut aller le "1" (ca peut être 2, 5, ou 120, t'en sais rien), tu fait une boucle, pour "creer" ton x, et tu récupere un par un tous les champs comme il t'a été dit :
Code :
$mydata = $_POST['champ'.$x]
Après, tu vas me dire que tu sais pas quand t'arreter pour l'incrément de ton x. Eh bien c'est simple, si au moment de l'envoie, dans le formulaire, tu t'arranges pour que tous les x se suivent (genre champ1, champ2, champ3... sans 'trou' au milieu), tu testes l'existence de $_POST['champ'.$x], et si ca n'existe plus, alors tu as tout lu.

Voila.

--
Rakken
Rakken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2006, 17h29   #13
Membre éprouvé
 
Avatar de oceane751
 
Intégrateur Web
Inscription : novembre 2004
Messages : 988
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Intégrateur Web

Informations forums :
Inscription : novembre 2004
Messages : 988
Points : 434
Points : 434
merci merci
mais j'avais pas vu que la partie du code avec le champ $x, n'avait pas de form method = post... et comme els 2 champs sont nommé "champ" normal qu'il ne reconnaisse pas le $x

j'ai mis un form method dans la boucle for mais rien de bien concluant grrr
oceane751 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h13.


 
 
 
 
Partenaires

Hébergement Web