Avatar billede Slettet bruger
27. december 2011 - 15:43 Der er 7 kommentarer og
1 løsning

Slet fra database

Hej.

Jeg har følgende script hvor jeg udskriver en række data fra min MySQL database.

Jeg vil gerne have lavet så jeg kan afkrydse enkelte resultater og så slette dem fra databasen.

Nogle der kan hjælpe mig med det?

Altså bare en checkboks og så sletter den alle de markerede, når man vælger slet for neden af udskriften.

<?php
$host = "x";
$user = "x";
$pass = "x";
$db  = "x";
$connection = mysql_connect($host,$user,$pass);
mysql_select_db("$db");


$result = mysql_query("SELECT * From comment  where visnyhed < 3 AND moviekategori ORDER BY tid");

echo "<tablel>\n";
while($row=mysql_fetch_assoc($result))
{
            ?>
            <table border="0" width="100%">
    <tr>

        <td valign="top">
        <font color="000000" face="Verdana" size="3">
        <b>
        <?php echo "<p style=\"text-align:left;\">"?>
        <?php echo $row['overskrift'];?>
        <br>
        <font color="000000" face="Verdana" size="1">
        </b>
        <?php echo $row['beskrivelse'];?>
   
</td>

        </td>

    </tr>
   
</table>

<hr color="#000000">   
   
    <?php
echo"</table>";

echo"</tr>\n";

echo"</table>";
?>

</body>
</html>
Avatar billede claes57 Ekspert
27. december 2011 - 17:28 #1
på den enkelte checkbox skal du lave en id der svarer til id på comment - bare så du kan finde den, og kun den.
Se fx koden til dette sites post
<input type="checkbox" name="marked[]" id="marked_5608" value="5608"/>

Derefter er det bare (ved klik på 'slet') at gå til et loop, hvor de markerede id'er slettes, en ad gangen.
Avatar billede danco Nybegynder
27. december 2011 - 17:52 #2
Jeg går udfra at dette allerede nu ligger i et password beskyttet område således at kun udvalgte personer vil kunne slette.

Så gør du, som claes57 siger, det at du giver dine checkboxe en value svarende til primærnøglen i din database tabel, typisk og forhåbentlig et ID. Name attributten er også vigtig her, du skal huske at angive det som et array altså med [] efter.

Dernæst skal du huske at lade det hele stå indenfor et form-tag således at du kan submitte siden til noget php der kan fortolke udfører den egentlige handling.
Herunder har jeg skrevet et hurtigt utestet eksempel:

<?php
//Array af de valgte indlæg
$list = $_POST['marked'];

foreach($list as $item) {
    echo 'Du har valgt at slette indlæg: '.$item.'<br>';
}
?>

echo sætningen kan du så erstatte med noget der sletter i databasen. Og derefter videresende til en anden side.
Avatar billede Slettet bruger
27. december 2011 - 21:54 #3
Okay tak... Det vil jeg lige prøve at rode med....

Det kan vel gøres meget nemt ved at kun kunne slette en ad gangen? Det kan jeg egentlig godt nøjes med.. Tror det bliver lidt bøvlet for mig at gå i gang med arrays.. :-)
Avatar billede danco Nybegynder
27. december 2011 - 22:20 #4
Jeg ved nu ikke om det er bøvlet. Det er jo forholdvis simpelt at gøre det som nedenstående:

$list = $_POST['list'];
foreach($list as $item) {
  $sql = "DELETE FROM table WHERE id=".$item;
  mysql_query($sql) or die(mysql_error());
}
header("location:".$_SERVER['HTTP_REFERER']);

Det kunne gøre pænere men det vil formentlig virke for dig.
Avatar billede JensPeterSvensson Nybegynder
28. december 2011 - 09:52 #5
En anden måde at skrive det danco skrev.

$list = array();
foreach($_POST['list'] as $id){
  $list[] = mysql_real_escape_string($id);
}
$sql = 'DELETE FROM table WHERE id IN ('.implode(',',$item).')';
mysql_query($sql) or die(mysql_error());
header("location:".$_SERVER['HTTP_REFERER']);
Avatar billede olebole Juniormester
28. december 2011 - 16:36 #6
<ole>

Det er muligt, du synes, det er bøvlet at akrive DB-rækker til en buffer - men det er til gengæld måden at gøre det på. Den måde, hvorpå du echo'er dine tabeller i en while-løkke i spørgsmålet, er derimod skoleeksemplet på, hvordan man ikke gør  =)

Skriv i stedet til en streng- eller arraybuffer, som skrives ud ét sted. Det vil øge din kodes effektivitet med en faktor 5-10  *o)

/mvh
</bole>
Avatar billede Slettet bruger
20. november 2012 - 11:57 #7
Svar
Avatar billede olebole Juniormester
20. november 2012 - 16:36 #8
Hvis man ønsker hjælp fremover, er det nok ikke videre begavet bare at klappe sine spørgsmål i på dén måde! Udvis i det mindste en smule respekt for, at folk ganske gratis har brugt deres fritid på at hjælpe dig, da du havde brug for hjælp og bad om den!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester