2016-11-28 6 views
-1

(サポート:Ubuntuの - > phpstorm、Apacheサーバ、PDO)PHP PDO挿入号(アヤックスドロップダウン抽出)

こんにちは皆、

私は実際に選択した値を保存にしようとしていますAjaxを使用して、PDOデータベースにドロップダウンリストを追加します。

問題:私は私のデータベースに私の$ selectedOptを追加するために管理しますが、私は$ numLigneと同じことをしようとして、INSERTはもう動作しません... (私は値を取得したいです)選択されたオプションの行の

はここに私のコードです:

0123:非常に同じファイルで

$file = fopen($fichier_txt, 'r+'); 
if ($file) 
{ 
    $pattern_GC = '/N°.*\d{4}(\s?\s?[\w\s]*)(\d{5})\s?(\w+)\W+/isU'; 
    $fichier_txt_content = file_get_contents($fichier_txt); 
    $regex_GC = preg_match_all($pattern_GC, $fichier_txt_content, $match_GC); 

    // Match regroupant nom/prenom + adresse 
    $match_un = explode(PHP_EOL, $match_GC[1][0]); 
    $match_nom_prenom = $match_un[2]; 
    $match_adresse = $match_un[3]; 
    // Match CP 
    $match_deux = $match_GC[2][0]; 
    // Match ville 
    $match_trois = $match_GC[3][0]; 
    // On place ces matchs dans un tableau pour faciliter la création des DDL 
    $opt = array(0 => $match_nom_prenom, 1 => $match_adresse,2 => $match_deux, 3 => $match_trois); 
    $numLigne = array(); 
    $numLigne = array_keys($opt); 
    $i = 0; 

    ?> 

    <!-- DEFINITION DES DROP-DOWN LISTS --> 
    <html> 
    <br /><br /> 
      <label>Nom :</label> 
      <form method="POST"> 
       <select name="selectBox" class="drop" id="Combobox1"> 
        <option selected hidden value="Fais ton choix !">Choisis le nom</option> 
       <?php foreach($opt as $key => $val) {?> 
        <option value="<?= $val ?>"><?= $val ?></option> 
       <?php } ?> 
       </select> 
      </form> 
    <br /><br /> 
    </html> 

    <html> 
     <label>Prenom :</label> 
     <form method="POST"> 
      <select name="selectBox" class="drop" id="Combobox2"> 
       <option selected hidden value="Fais ton choix !">Choisis le prenom</option> 
       <?php foreach($opt as $key => $val) {?> 
        <option value="<?= $val ?>"><?= $val ?></option> 
       <?php } ?> 
      </select> 
     </form> 
     <br /><br /> 
    </html> 
<?php } 

、私は私のAjax呼び出しを持っています

<script> 

// JS Script to save to DB + remove selected opt (jQuery + Ajax) 
$(document).ready(function saveToDatabase(selectedValue) 
{ 
    var select = selectedValue; 
    select = $(this).serialize(); 
    var selectBoxes = $('select'); 

    selectBoxes.on('focusin', function() 
    { 
     // Store the current value 
     $(this).data('value', this.value); 
    }); 

    selectBoxes.on('change', function() 
    { 
     // POST to php script 
     $.ajax 
     ({ 
      type: 'POST', 
      url: 'formulaire_2_test.php', 
      data:{selected:this.value} 
     }); 
     var oldValue = $(this).data('value'); 
     var newValue = this.value; 

     // Remove selected option for children selectBoxes 
     selectBoxes.filter(':not(#' + this.id + ')').each(function() 
     { 
      var options = $(this).children(); 
      options.filter('[value="' + oldValue + '"]').show(); 

      if (newValue !== '') 
      { 
       options.filter('[value="' + newValue + '"]').hide(); 
      } 
     }); 
    }); 
}); 

そして最後に、私のPDO接続声明:(別のphpファイルにあります)

<?php 

include 'formulaire_de_test.php'; 
// Connexion à la BDD pour save les lignes du form (PDO) 
try 
{ 
    $PDO = new PDO('mysql:host=localhost;dbname=autofill_data', 'root', 'password'); 
} 
catch (Exception $e) 
{ 
    die('Erreur : ' . $e->getMessage()); 
} 

// Récup de l'option selected et envoi vers la base 
$selectedOpt = $_POST['selected']; 
global $key; 
$req = $PDO->prepare("INSERT INTO data_lines(idDistributeur, numLigne, libelle) VALUES(0, :numLigne, :selectedOpt)"); 
$req->bindParam(':selectedOpt', $selectedOpt); 
$req->bindParam(':numLigne', $key); 
$req->execute(); 
$data = $req->fetchAll(); 

私の問題は、私の "numLigne" 変数に位置していますが、私は理解できませんどこに正確に...

私は午前9時以来、どんな進歩も得られないので、何か助けになるでしょう...

事前にの

おかげで、

よろしく、

Stelio KONTOS。

+0

<option value="<?= $key."_".$val ?>"><?= $val ?></option> 

あなたはそれがこのようにバックアウト取得することができますあなたが挿入を行うファイルに定義されています。確認するために '$ key'をエコーすることができます。あなたのフォームからキーを取得しようとしている場合、それをいくつかの方法で渡します。あなたは ''を試して、アンダースコアの値を爆発させることができます。 – aynber

+0

これは私の$ numLigneに関する私の考えです...私は選択したオプションとその行をドロップダウンリストに保存したいと思います。あなたが書いたことを実行すると、自分の価値に関連する鍵を得ることができますか? –

+0

とにかくこれを試してみよう、ありがとう!ここで私をガイドしてください、あなたのデータを保存するためにexplodeステートメントをどこに追加すればいいですか? –

答えて

1

私が言及したように、あなたがそれを言うなら、$キーは通過するだけです。あなたがそうのような値にそれを追加した場合:あなたはnumLigne`は$ key` `にバインド`持っているが、それはないだろう

$value = $_POST['selected']; 
$options = explode('_',$value); // Your key is in the first position (0), your option in the second (1) 

$req->bindParam(':selectedOpt', $options[1]); 
$req->bindParam(':numLigne', $options[0]); 
+0

申し訳ありませんが、それは私がすることができたものです。私はbindParam thoについてはわかりませんでした。 すぐにテストします。 –

+0

それは働く、ありがとうたくさんの良い一日を! :) –