chop-chop Skrevet 30. desember 2007 Del Skrevet 30. desember 2007 Hei Jeg har en tabell hvor jeg har hentet inn data fra en database. I begynnelsen av hver linjen ønsker jeg å sette inn en checkbox, så jeg kan slette valgte rader. Noen som kan vise meg hvordan jeg får lagt til dette? //Skjema echo "<form method='POST' action='slettrad.php'>"; // HTML-tabellens formatering - tabellstart echo "<table border='1' bordercolor='#cccccc' cellspacing='0' cellpadding='3'>"; echo "<tr bgcolor='#cccccc'> <td>Slett</td><td>ID</td><td>First name</td><td>Last name</td><td>Address</td><td>Postcode</td><td>City</td><td>Email</td><td>Password</td></tr>"; // hämtar resultatrader från tabellen while($row = mysql_fetch_array( $result )) { // skriver ut innehållet i raderna till HTML-tabellen echo "<tr><td>"; echo; //her ønsker jeg å få inn checkbox echo "</td><td>"; echo $row['id']; echo "</td><td>"; echo $row['firstname']; echo "</td><td>"; echo $row['lastname']; echo "</td><td>"; echo $row['address']; echo "</td><td>"; echo $row['postcode']; echo "</td><td>"; echo $row['city']; echo "</td><td>"; echo $row['email']; echo "</td><td>"; echo $row['password']; echo "</td></tr>"; } // HTML-tabellens formatering - tabellslut echo "</table>"; echo "<input type='submit' name='submit' value='Delete'>"; //Skjema - slutt echo "</form>"; Lenke til kommentar
grimjoey Skrevet 30. desember 2007 Del Skrevet 30. desember 2007 du må legge <form action="" method="post"> ... </form> rundt tabellen. så legger du in denne i hver rad. <input type="checkbox" name="slett_{$row['id']}" /> og en <input type="submit" name="submit_slett" value="slett" /> til slutt. logikk: if(isset($_POST['submit_slett'])) { foreach($_POST as $k => $v) { if(!strcmp($k{0,6}, 'slett_')) { $id = (int)substr($k, 6); mysql_query("DELETE FROM tabell WHERE id=$id"); } } } Lenke til kommentar
pulse Skrevet 30. desember 2007 Del Skrevet 30. desember 2007 echo; //her ønsker jeg å få inn checkbox echo '<input type="checkbox" name="delete='.$row['id'].'">Slett'; Noe sånt du tenker på? Lenke til kommentar
grimjoey Skrevet 30. desember 2007 Del Skrevet 30. desember 2007 (endret) for eksempel det ja. husk du må loope nøkklene i $_POST arrayet og hente ut id foreach($_POST as $k => $v) { $array = explode('=', $k); if(!strcmp($array[0], 'delete')) mysql_query("DELETE FROM tabell WHERE id=$array[1]"); } edit: det som er litt tricky her er at en checkboks blir enten satt eller ikke satt. derfor må man ha med id'en i variabelnavnet og parse denne for hver variabel som er satt. Endret 30. desember 2007 av grimjoey Lenke til kommentar
chop-chop Skrevet 30. desember 2007 Forfatter Del Skrevet 30. desember 2007 Takk Nå har jeg i hvertfall klart å få inn sjekkboksen. Lenke til kommentar
chop-chop Skrevet 30. desember 2007 Forfatter Del Skrevet 30. desember 2007 Hm... Jeg har antagelig ikke klart å sette kodene riktig sammen (er nok ikke så flink på php, enda...), for raden ble ikke slettet.... //Has form been submitted? if (isset($POST['submit'])) { //Loop through each customer with an enabled checkbox foreach($_POST as $k => $v) { $array = explode('=', $k); if(!strcmp($array[0], 'delete')) mysql_query("DELETE FROM nki_kunder WHERE id=$array[1]"); } $result = mysql_query($query); //Should have one affected row if ((mysql_affected_rows() == 0) || mysql_affected_rows() == -1) { echo "<p>There was a problem deleting som of the selected items.</p>"; exit; } } echo "<p>The selected items were succesfully deleted.</p>"; Lenke til kommentar
grimjoey Skrevet 30. desember 2007 Del Skrevet 30. desember 2007 (endret) Gjør slik: <?php error_reporting('E_ALL'); //Has form been submitted? if (isset($POST['submit'])) { //Loop through each customer with an enabled checkbox echo '<pre>'; print_r($_POST); echo '</pre>'; foreach($_POST as $k => $v) { $array = explode('=', $k); if(!strcmp($array[0], 'delete')) echo "DELETE FROM nki_kunder WHERE id=$array[1] <br />"; else echo '['.$k.'] = '.$v'<br />'; } // $result = mysql_query($query); du har ikke satt $query. denne linjen har ikke noe for seg. //Should have one affected row if ((mysql_affected_rows() == 0) || mysql_affected_rows() == -1) { echo "<p>There was a problem deleting som of the selected items.</p>"; exit; } } echo "<p>The selected items were succesfully deleted.</p>"; ?> så ser du hva som fåregår Endret 30. desember 2007 av grimjoey Lenke til kommentar
Alex Moran Skrevet 30. desember 2007 Del Skrevet 30. desember 2007 Bruk noe som dette når du skal slette: mysql_query("DELETE FROM nki_kunder WHERE id IN(".implode(', ', quote_smart($_POST['slett'])).")"); Lenke til kommentar
grimjoey Skrevet 30. desember 2007 Del Skrevet 30. desember 2007 (endret) det vil ikke funke. $_POST['slett'] eksisterer ikke. dessuten er det ikke sikkert trådstarter har en funksjon som heter qoute_smart Endret 30. desember 2007 av grimjoey Lenke til kommentar
Alex Moran Skrevet 30. desember 2007 Del Skrevet 30. desember 2007 Da får han lage det da, eller benytte seg av intval direkte. så setter man <input type="checkbox" name="slett[]" value="'.$row['id'].'" /> case solved. Lenke til kommentar
grimjoey Skrevet 30. desember 2007 Del Skrevet 30. desember 2007 det er vel den beste måten å gjøre det på. så loope gjennom $_POST['slett'] arrayet og slette rad for hver id. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå