IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[SQL] Ajout d'un champs text +1, +2, +3..


Sujet :

PHP & Base de données

  1. #1
    Membre éprouvé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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...

  2. #2
    Membre émérite

    Profil pro
    H4X0|2 @ YourLabs Business Service
    Inscrit en
    Octobre 2006
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : H4X0|2 @ YourLabs Business Service
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 657
    Par défaut
    Le HTML n'est pas valide. On l'utilise de telle façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <balise parametre="valeur"></balise>
    Il est nécéssaire de produire un tel code.

    Sinon, essayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nombre = (int)$_POST['nombre']
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nombre = intval($_POST['nombre'])

  3. #3
    Membre éprouvé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Par défaut
    je ne vois pas trop ce que le html vient faire dans mon problème mais bon emrci quand meme pour ta réponse

  4. #4
    Membre émérite Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 41
    Par défaut
    +1 mais c'est pas comme ca qu'il va faire des progrès en algorithmie...

  6. #6
    Membre éprouvé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Par défaut
    merci pour ta réponse cacoudal
    le code marche mais ya une erreur mais ça marche

    j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (isset ($_POST['chp'])) // Si chp a été cliqué
    {
      ==>  $count = $_POST['count']; <==
    ....

  7. #7
    Membre éprouvé
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Par défaut
    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

  8. #8
    Membre éprouvé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Par défaut
    merci ça marche !!!
    ché pas pk je n'y ais pas pensé plus tot!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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é !!

  9. #9
    Membre éprouvé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Par défaut
    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...

  10. #10
    Membre émérite Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Par défaut
    A mon avis tu le récuperas de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $mydata = $_POST['champ'.$x]
    @+
    cadou

  11. #11
    Membre éprouvé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Par défaut
    ouais mais ça me met une erreur du style : Undefined variable: x....
    quand je fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (isset ($_POST['champ'.$x]))
      {
    $champs = $_POST['champ'.$x];
    }
    ça me rend dingue cette histoire

  12. #12
    Membre éprouvé
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type=text name=champ ".$x.">
    Donne au final en html un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $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

  13. #13
    Membre éprouvé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Par défaut
    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

Discussions similaires

  1. Proc sql et taille du champ texte
    Par ion_ion dans le forum SAS Base
    Réponses: 2
    Dernier message: 07/12/2012, 14h21
  2. [Doctrine] Ajout d'un champ texte dans un formulaire crée par Doctrine
    Par Malonix dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 30/03/2009, 11h53
  3. ajout dans un champ text
    Par martoune dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 08/08/2007, 17h16
  4. 8i : sql loader et champ texte sur plusieurs lignes
    Par naonedboy dans le forum SQL*Loader
    Réponses: 1
    Dernier message: 23/11/2005, 10h07
  5. SQL champ texte UNIQUE insensible à la casse
    Par Mike@Nestor dans le forum Langage SQL
    Réponses: 8
    Dernier message: 17/10/2005, 08h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo