2011-11-11 22 views
0

私は簡単なフォームを持っている:PHPの問題は

<form action="add.php" method="post" > 
     <input name="name" maxlength="30"/><br/> 
     <textarea cols="80" name="description" rows="10"> 
     </textarea><br/> 

     <table> 
      <thead> 
        <tr> 
         <th></th> 
         <th width="200px">Shop list</th> 
        </tr> 
      </thead> 
      <tbody div class ="table"> 
      <?php 
      $result = mysql_query("SELECT shop_id, name FROM shop") or die(mysql_error()); 
      if(mysql_num_rows($result) > 0) { 
       while($row = mysql_fetch_assoc($result)) { 
       echo '<tr> 
         <td> 
         <input type="checkbox" name="identifer[]" value="'.$row['shop_id'].'" /> <br /></td> 
         <td>'.ucfirst($row['shop']).'</td> 
         </tr> ';  
                 } 
              } 
        ?> 

    </tbody></table> 
<input type="submit" value="Add"> 
</form> 

私は2つの異なるテーブルに結果をデータベースに保存したい:ブック(book_id、名前、説明)と場所場所テーブル私はあなたがその本(places_id、book_id、shop_id)を買うことができる店を保存したい。

私は(それが働いていない)add.phpファイルを持っている:

<?php 
    $name = $_POST['name']; 
    $description = $_POST['description']; 



     $identifer =($_POST['identifer']); 
     if (isset($identifer)){ 

      $id_arr = implode(',', $identifer); 
      $result = mysql_query("INSERT INTO places (places_id, book_id, shop_id) VALUES (NULL, NULL ($id_arr))") or die(mysql_error()); 

     } 




$q = "INSERT INTO baldas (book_id, name, description) VALUES (NULL, '$name', '$description')"; 

$result2 = mysql_query($q) or die(mysql_query()); 

    ?> 

私も、私はどのチェックボックスを識別して問題を持って、私は同じ時間に2つの異なるテーブルに結果を保存する必要がどのように混乱していますチェックし、結果をデータベースに書き込むために、特にbook_idをどう扱うべきかわかりません。 アドバイスが役に立ちます。

答えて

1

チェックされます

あなたがそれらを持っている方法は、あなたは望み、これを試してみてください$_POST

+0

ありがとうございました。しかし、私はそれを正しく行うことができます。 :( 'foreachの($ shopIDとして(配列)$ _ POST [ '識別子']){ の$ Q2 =「場所。INSERT INTO(place_id、book_id、shop_id)VALUES(NULL、 '$ bookID'、「$ shopID ') "; \t $結果2 =するmysql_query($のQ2)またはダイ(するmysql_query()); は}' このコードは、0の結果を与える私が何かを逃したの – Lina

+0

あなたのダイ文はmysql_error' 'する必要があります。?。おそらく、あなたが実行しているエラーが出てくるでしょう(INSERTは、これまでの情報からうまくいくので) – DTest

0

IDが自動インクリメント(私が仮定している)の場合は、IDをNULLに設定することで問題になる可能性があると思います。それを確認します。

エラーを表示すると、常に役に立ちます。

0

すべての「場所」を含むテーブルあなたは本は持っている必要がありを購入することができます:自動インクリメントし、そのテーブルに「ローカル」である

  • place_idを。 ID、ユニーク。 (あなたは言及しなかった)
  • book_idは(これで複数の行が存在します)図書テーブルからブックのIDです
  • は、お店のテーブルから店のIDですshop_id

の本が1本購入できる行があります。

INSERT INTO places (book_id, shop_id) VALUES ($book_id, $shop_id) 

お知らせ私はplace_idが含まれていなかったことが自動インクリメントする必要がありますので、:あなたは書籍を購入することができます場所を追加しているのであれば、あなたは、唯一のクエリを必要とする必要があります。私は、あなたが最初に私がどのチェックボックスを識別に問題があるmysql_insert_id()

<?php 
    $q = "INSERT INTO baldas (book_id, name, description) VALUES (NULL, '$name', '$description')"; 
    $result = mysql_query($q) or die(mysql_query()); 

    $bookID = mysql_insert_id(); 

    // CODE TO INSERT INTO `places` TABLE USING $bookID // 
?> 

を呼び出して、テーブルbaldasに値を挿入する方法をbook_id

に対処する見当がつかない

1

には表示されません確認されていない場合shop_idに

<?php 
    foreach((array)$_POST['identifier'] as $shopID) { 
     $q2 = "INSERT INTO places (place_id, book_id, shop_id) VALUES (NULL, '$bookID', '$shopID')";  
     $result2 = mysql_query($q2) or die(mysql_error()); 
    } 
?> 

を識別するための$_POST['identifier']配列をループする必要があると思いますあなたを助けることができます。

<?php 
    $name = $_POST['name']; 
    $description = $_POST['description']; 
    $identifer[] =($_POST['identifer']); 
    $y = null; 
    if(count($identifer) > 1){ 
     foreach($identifer as $x){ 
      $y .= $x.","; 
     } 
     $val = rtrim($y,","); 
    } else { 
     $val = $identifer[0] 
    } 
    $result = mysql_query("INSERT INTO places (places_id, book_id, shop_id) VALUES (NULL, NULL, '$val')") or die(mysql_error()); 

    $q = "INSERT INTO baldas (book_id, name, description) VALUES (NULL, '$name', '$description')"; 

    $result2 = mysql_query($q) or die(mysql_query()); 
?> 

テーブルbaldasにテーブルの場所やbook_idにplaces_id場合AUTO_INCREMENTあるあなたがadd.php

のためにこれを試すことができます