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 :

Encodage plusieurs lignes dans db


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 18
    Par défaut Encodage plusieurs lignes dans db
    Bonjour à tous,

    Je suis entrain de réaliser un formulaire php qui encode un « contact » et différentes « références ».
    Dans ma base de données, j’ai donc une table « contact » [avec différents colonnes : « nom », « prenom », « coordonnees »…] et une table référence [avec les colonnes « reference », « contact_id »
    Dans ma page php, j’ai 3 input « reference »
    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
    <tr>
                        <td height="1" colspan="2">R&eacute;f&eacute;rence</td>
                        <td colspan="4"><input name="reference_01" type="text" id="reference"  size="10" maxlength="8">                        
    (ex: ../.....) </td>
                      </tr>
                      <tr>
                        <td height="0" colspan="2">&nbsp;</td>
                        <td colspan="4"><input name="reference_02" type="text" id="reference_01"  size="10" maxlength="8">
    (ex: ../.....) </td>
                      </tr>
                      <tr>
                        <td height="-1" colspan="2">&nbsp;</td>
                        <td colspan="4"><input name="reference_03" type="text" id="reference_012"  size="10" maxlength="8">
    (ex: ../.....) </td>
                      </tr>
                      <tr>
    Dans mes 3 pages de formulaires, je passe les infos par variable et par Session :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $_SESSION["reference_01"] = htmlspecialchars($_POST['reference_01']);
    $_SESSION["reference_02"] = htmlspecialchars($_POST['reference_02']);
    $_SESSION["reference_03"] = htmlspecialchars($_POST['reference_03']);
     
    $reference_01 = $_SESSION['reference_01'];
    $reference_02 = $_SESSION['reference_02'];
    $reference_03 = $_SESSION['reference_03'];
    Mais je ne sais pas comment insérer dans ma table ‘reference’ de ma db 3 lignes ayant « contact_id » identique et la « référence » différente ?
    Mon code est ci-dessous, comment dois-je l’adapter ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // Insertion dans ma table "reference"
      $insertSQL5 = sprintf("INSERT INTO reference_contact (contact_id, reference) VALUES (%s, %s)",
                        $contact_id,
          GetSQLValueString($_SESSION['reference'], "text"));
     
      mysql_select_db($database_connect, $connect);
      $Result5 = mysql_query($insertSQL5, $connect) or die(mysql_error());
    D’avance je vous remercie pour l’aide que vous pourrez m’apporter !
    Golfinha

  2. #2
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Salut,
    tu fais 3 requêtes et tu passes tes références en post dans un tableau avec [] et tu fais une boucle :


    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
    <tr>
    <td height="1" colspan="2">R&eacute;f&eacute;rence</td>
    <td colspan="4"><input name="references[]" type="text" id="reference" size="10" maxlength="8">
    (ex: ../.....) </td>
    </tr>
    <tr>
    <td height="0" colspan="2">&nbsp;</td>
    <td colspan="4"><input name="references[]" type="text" id="reference_01" size="10" maxlength="8">
    (ex: ../.....) </td>
    </tr>
    <tr>
    <td height="-1" colspan="2">&nbsp;</td>
    <td colspan="4"><input name="references[]" type="text" id="reference_012" size="10" maxlength="8">
    (ex: ../.....) </td>
    </tr>
    <tr>
     
     
    mysql_select_db($database_connect, $connect);
     
    foreach($_POST['references'] as $ref) {
     
    // Insertion dans ma table "reference"
    $insertSQL5 = sprintf("INSERT INTO reference_contact (contact_id, reference) VALUES (%s, %s)",
    $contact_id, GetSQLValueString(htmlspecialchars($ref), "text"));
    $Result5 = mysql_query($insertSQL5, $connect) or die(mysql_error());
     
    }

  3. #3
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 18
    Par défaut
    j'ai modifié mon code html
    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
    <tr>
                        <td height="1" colspan="2">R&eacute;f&eacute;rence</td>
                        <td colspan="4"><input name="reference[]" type="text" id="reference_01"  size="10" maxlength="8">                        
    (ex: ../.....) </td>
                      </tr>
                      <tr>
                        <td height="0" colspan="2">&nbsp;</td>
                        <td colspan="4"><input name="reference[]" type="text" id="reference_02"  size="10" maxlength="8">
    (ex: ../.....) </td>
                      </tr>
                      <tr>
                        <td height="-1" colspan="2">&nbsp;</td>
                        <td colspan="4"><input name="reference[]" type="text" id="reference_03"  size="10" maxlength="8">
    (ex: ../.....) </td>
                      </tr>
    après pour encoder dans la SESSION dois-je mettre une seule fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $_SESSION["reference[]"] = htmlspecialchars($_POST['reference[]']);
    $reference = $_SESSION['reference[]'];
    ??? et bien l'écrire ainsi.

    le code pour l'insertion ressemble à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    foreach($_SESSION['reference[]'] as $reference) {
     
    // Insertion dans ma table "reference"
    $insertSQL5 = sprintf("INSERT INTO reference_contact (contact_id, reference) VALUES (%s, %s)",
    						$contact_id, 
    						GetSQLValueString(htmlspecialchars($reference), "text"));
    mysql_select_db($database_connect, $connect);
    $Result5 = mysql_query($insertSQL5, $connect) or die(mysql_error());
    Mais ca ne fonctionne pas :-(

  4. #4
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    En fait la bonne syntaxe c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['reference'] = $_POST['reference'];
    Fais un var_dump() tu verras comment ça fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump($_POST['reference']);
    Et le htmlspecialchars() tu le mets dans la boucle car il prendun string en paramètre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach($_SESSION['reference'] as $reference) {
    (Utilise la balise code du forum ^^)

  5. #5
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 18
    Par défaut
    J'ai fait les modifs comme tu m'as indiqué.
    Et quand je test, j'ai ceci à la validation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string(0) "" Column 'ident_id' cannot be null
    et j'ai ceci comme code pour terminer:
    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
     
    foreach($_SESSION['reference'] as $reference) 
    		{
     
    // Insertion dans ma table "reference"
    			$insertSQL5 = sprintf("INSERT INTO reference_contact (contact_id, reference) VALUES (%s, %s)",
    					$contact_id,
    					GetSQLValueString(htmlspecialchars($reference), "text"));
    mysql_select_db($database_connect, $connect);
    $Result5 = mysql_query($insertSQL5, $connect) or die(mysql_error());
     
    		}
     
      // Maitenant je peux rediriger vers la page "index.php"
     $insertGoTo = "index.php";
     if (isset($_SERVER['QUERY_STRING'])) {
      $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
      $insertGoTo .= $_SERVER['QUERY_STRING'];
     }
     header(sprintf("Location: %s", $insertGoTo));
    }
    ?>

  6. #6
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    T'as dû mettre ton champ 'ident_id' en NOT NULL ?
    Ce qui veut dire que tu dois renseigner une valeur à l'insertion.
    Si c'est une clé primaire et non étrangère tu peux sans doute définir le champ en auto-increment.

Discussions similaires

  1. Texte sur plusieurs lignes dans un TListBox
    Par BigBenQ dans le forum Composants VCL
    Réponses: 1
    Dernier message: 04/05/2006, 17h58
  2. Réponses: 1
    Dernier message: 26/04/2006, 09h52
  3. Texte sur plusieurs lignes dans une cellule de JTable
    Par JeanECN dans le forum Composants
    Réponses: 3
    Dernier message: 10/04/2006, 17h20
  4. update simultané de plusieur lignes dans table
    Par jarod_bx dans le forum Access
    Réponses: 2
    Dernier message: 22/12/2005, 22h13
  5. Réponses: 2
    Dernier message: 21/09/2005, 12h18

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