2017-10-02 9 views
2

J'ai une base de données avec 2 tables:
1ère table "données" avec des colonnes (nom, téléphone, PERSONID)
2e table "liens" avec des colonnes (linkid, lien, PERSONID)
personID est la clé étrangère relie les deux tables avec un « un à plusieurs » et il est « CASCADE » lorsque SUPPRIMER ou UPDATE, donc, une personne pourrait avoir plus de 1 lien.Comment supprimer une requête d'une table et d'une base de données HTML?

Le tableau html ressemble que:

name phone links 
jim  432443 link1 
       link2 
       link3 
       ..... 
_______________________ 
john 54545 link1 
_______________________ 
...  ..... ..... 

Le code qui montre la base de données contient sur une table html:

$state = $connect->prepare("SELECT data.personid, name, phone, link FROM data JOIN links ON data.personid = links.personid"); 
$state->execute(); 
$results = $state->fetchAll(PDO::FETCH_ASSOC); 
$data = []; 

foreach($results as $result) { 

     $data[$result['personid']] = [ 
      'name' => $result['name'], 
      'phone' => $result['phone'], 
      'links' => [], 
     ]; 


    $data[$result['personid']]['links'][] = $result['link']; 
} 

<table> 

    <thead> 
     <tr> 
      <th>Name</th> 
      <th>Phone</th> 
      <th>Links</th> 
      </tr> 
    </thead> 
    <tbody>  
     <?php 
      foreach ($data as $row) { 
         echo "<tr>"; 
         echo "<th>".$row['name']."</th>"; 
         echo "<td>".$row['phone']."</td>"; 
         echo "<td>".implode('<br/>', $row['links'])."</td>"; 
         echo "<td>"; 
         echo "</td>"; 
         echo "</tr>"; 
      } 
     ?> 
</table> 

Je veux ajouter une fonctionnalité de suppression pour supprimer certaines de ces données, Comme un checkBox à côté de chaque requête et un bouton appelé "Delete Selected" par exemple, je sais comment ajouter le checkBox et le bouton mais je ne connais pas le code pour réaliser cette fonctionnalité.

Répondre

1

espérons que cela fonctionne pour ajouter s'il vous plaît vérifier le code affiché ici.

Html comprennent ceci:

<form action="action.php" method="POST"> 
<button type="submit">delete</button> 
<table> 

<thead> 
    <tr> 
     <th><input type="checkbox" name="check_select" readonly="readonly" onclick="toggleselect(this,'delete_data');"></th> 
     <th>Name</th> 
     <th>Phone</th> 
     <th>Links</th> 
     </tr> 
</thead> 
<tbody> 
<?php 
     foreach ($data as $row) { 
        echo "<tr>"; 
        echo '<input type="checkbox" class="check_box" name="checkbox_delete_data[]" value="'.$row['primary_id_of_your_table'].'">'; 
        echo "<td>".$row['name']."</td>"; 
        echo "<td>".$row['phone']."</td>"; 
        echo "<td>".implode('<br/>', $row['links'])."</td>"; 
        echo "<td>"; 
        echo "</td>"; 
        echo "</tr>"; 
     } 
    ?> 

</table> 
</form> 

en Javascript:

function toggleselect(source,chkbox_name) 
{ 
     checkboxes = document.getElementsByName('checkbox_'+chkbox_name+'[]'); 

     for(var i=0, n=checkboxes.length;i<n;i++) { 
     checkboxes[i].checked = source.checked; 
     } 
} 

Maintenant, vous pouvez accéder à la case à cocher sélectionnée dans votre fichier action.php et l'utiliser pour supprimer avec la requête.

Par exemple:

<?php 
if (isset($_POST["submit"])) { 
    $selected_check_boxes = implode(',', $_POST["checkbox_delete_data"]); 
    $query= $connect->prepare("Delete from table where table.primary id IN ($selected_check_boxes)"); 
    $query->execute(); 
} 
?> 
+0

Merci, mais il ne travaille avec personne la suppression, lorsque je choisis vérifier multiplier les boîtes d'erreur SQL occuers – Sam

+0

quelle erreur sont u obtenir? –

+0

Les ID des deux personnes sont 2,3, l'erreur près de « 2,3 », je pense que selected_check_boxes $ est inséré dans la base de données en tant que chaîne – Sam

0

Je recomnend de faire table entière en forme <> et ajoutez un attribut « Data- » avec personId à chaque case. gérer ensuite (lorsque le formulaire soumis) ces attributs avec javascript et fusionner la requête SQL comme

delete from data where personid (1,2,3, ...) 

Si vous avez besoin de plus d'aide que je peux écrire un code, mais le développer par le propre est toujours mieux :)

Vive