2016-09-21 70 views
1

データベース内の複数のエントリを削除しようとしています。チェックボックスを使用して、削除する必要があるデータを特定しています。チェックボックスをオンにすると、それを削除するために使用するプライマリキーの値が送られます。今まで私はこれを思い付いたprimaryKeyとcheckBoxを使用してPDO、PHP、MYSQLを使用してステートメントを削除

1つまたは複数のデータを削除しようとすると、それは正常に削除されたプレーヤーの意図された量の数を数える成功ページに行く。しかし、すべての表を表示すると何も起こりません。

HTML/PHPコード

  <?php 
       $self = htmlentities($_SERVER['PHP_SELF']); 
       echo "<form id='delete' method='POST' action='$self'>"; 
      ?> 
    <div class="content">     
      <h3>Delete Athlete</h3> 
      <hr> 
      <table> 
       <tr> 
        <th>Select Player</th><th>Photo</th><th>First Name</th><th>Last Name</th><th>Gender</th><th>Sport</th><th>Country</th><th>Population</th><th>Flag</th> 
       </tr> 
        <?php 
         foreach($showResult as $row) 
         { 
          echo("<tr><td><input type='checkbox' name='checkdelete[]' value='$row[athleteID]'>$row[athleteID]</td> 
          <td><img class='photo' src='files/$row[image]' alt='$row[lastName].jpg'/></td> 
          <td>$row[firstName]</td><td>$row[lastName]</td> 
          <td><img class='genderImg' src='files/$row[gender].png' alt='$row[gender].jpg'/></td> 
          <td>$row[sport]</td><td>$row[countryName]</td><td>$row[population]</td> 
          <td><img class = 'flag' src='files/flags/$row[flag]' alt='$row[flag].jpg'/></tr>"); 
         } 
        ?>      
      </table>  
    <br><input type="submit" name="deleteAth" value="Delete">    
    </div> 
</body> 

と私はPHP

<?php 

ため、このコードを持っている 'connect.inc.php' を含めます。

try // select statement for the output page/delete page 
{ 
    $showJoinedTbl = "SELECT athleteID,image, firstName, lastName, gender, sport, 
    countryName, population, flag from athTbl join 
    counTbl on athTbl.countryID = counTbl.countryID ORDER by firstName"; 
    $showResult = $pdo->query($showJoinedTbl); 
} 
catch (PDOException $e) 
{ 
    $error = 'Select statement error'; 
    include 'error.html.php'; 
    exit(); 
} 
$dataCorrect = true; 
if (isset($_POST['deleteAth'])) 
{   
    try 
    { 
     $valueID = $_POST['checkdelete']; 
     $N = count ($valueID); 
     for ($i=0; $i; $i++) 
     { 
      $deleteQry = $db->prepare("DELETE from athTbl WHERE athleteID= ?"); 
      echo ("$valueID[$i]"); 

      //$stmt = $pdo->prepare($deleteQry); 
      $stmt->bindValue(1,$valueID[$i]); 
      $stmt->execute(); 
     } //when I try to delete single or multiple data, it goes straight to success page which successfully count the number of intended amount of deleted player. But nothing happens when I show all tables. 
    } 
    catch (PDOException $e) 
    { 
     $error = 'Error deleting data from athleteTbl'; 
     include 'error.html.php'; 
     exit(); 
    } 
    include 'DeleteSuccess.html.php';   // output screen if I deleted it successfully. 
} 
else 
{ 
    include 'Delete.html.php'; 
} 
?> 
+0

フォームは、HTML/PHPです。 DeleteHtml.phpに表示されているathleteIDごとにcheckBoxを付けてテーブルをエコーする$ showResult –

+0

まずselectを実行してから、削除を処理します。したがって、delete文がまだ実行されていないため、選択した結果には削除するレコードが残っています。 – Shadow

答えて

0

あなたは、ループ内のエラーを持っている:条件(中央値)はtrueている間

... 
$N = count ($valueID); 
for ($i=0; $i; $i++) 
      ^^ 0 on the first iteration 
{ 
    ... 

あなたのループが実行されます。 $iを0に設定すると、ループは決して実行されないので、falseと評価されます。

あるいは、manualから:

各反復の初めには、expr2には評価されます。 がTRUEと評価されると、ループは継続し、ネストされたステートメントは が実行されます。 FALSEと評価された場合、ループの実行は終了します。

あなたはおそらくしたい:

... 
$N = count ($valueID); 
for ($i=0; $i < $N; $i++) 
{ 
    ... 
+1

ありがとう!今はそれを稼働させることができました。あなたが指摘していたこととは別に、私は$ pdoの代わりに$ dbを使いました - >準備LOL ...私は今眠る時間を考える!あなたにおかげさまで!小さな間違いはプログラミングの生活を悲惨な笑にさせる –

関連する問題