Avatar billede compac Seniormester
22. maj 2008 - 15:59 Der er 10 kommentarer og
1 løsning

Sletning af data fra min database

Jeg har en formular, hvor jeg vil oprette en mulighed for at slette data fra min database.
Jeg har et forslag:


<html>
<head>
<title>Administration</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<head>
</head>
<body>
<form name="form1" method="post" action="">

<?php
    include("../conn.php");     
    $sql="select sn,titel from $branch order by sn";
      $result=mysql_query($sql) or die(mysql_error());
      $count=mysql_num_rows($result);
?>
         
<table width="400" border="0" cellspacing="1" cellpadding="0">
<tr>
<td>sn</td>
<td>Titel</td>
</tr>   
<?php 
          while($row=mysql_fetch_array($result))   
  {
?>
<tr>
<td>
<input name="checkbox[]" type="checkbox" id="checkbox[]" value="<?php echo $rows['sn']; ?>">
<?php echo $row['titel']; ?>
}
</td>
<td>
  <input name="delete" type="submit" id="delete" value="Delete">
</td>
</tr> 
<?php
// Check if delete button active, start this
if($delete){
for($i=0;$i<$count;$i++){
$del_id = $checkbox[$i];
$sql = "DELETE FROM $branch WHERE sn='$del_id'";
$result = mysql_query($sql);
}
// if successful redirect to delete_multiple.php
if($result){
echo "<meta http-equiv=\"refresh\" content=\"0;URL=delete_chk.php\">";
}
}
?>
</table>
</form>
</body>
</html>

Som det ses er der tale om en formular med checkboxe, og de data der ligger ud for den checkbox, der valgt skal slettes.
Det vil ikke virke - kan nogen gennemskue hvor fejlen ligger?
Avatar billede w13 Novice
22. maj 2008 - 17:02 #1
For det første, så skal:

if($delete){

nok være:

if($_POST[delete]){
Avatar billede compac Seniormester
22. maj 2008 - 17:35 #2
Jeg har prøvet at rette, men uden held.
Avatar billede w13 Novice
22. maj 2008 - 17:41 #3
Tja, det er i hvert fald en del af det.
Avatar billede w13 Novice
22. maj 2008 - 17:44 #4
Dette:
  name="checkbox[]"
skal nok hellere være:
  name="checkbox1"

Og dette:
  for($i=0;$i<$count;$i++){
  $del_id = $checkbox[$i];
skal så være:
  $checkbox=$_POST['checkbox1'];
  for($i=0;$i<count($checkbox);$i++){
  $del_id = $checkbox[$i];
Avatar billede w13 Novice
22. maj 2008 - 17:44 #5
Og så bør du fjerne:
id="checkbox[]"
Der må ikke være flere af samme id på en side, og denne bruges jo slet ikke.
Avatar billede w13 Novice
22. maj 2008 - 17:46 #6
Og dette:
  if($result){
    echo "<meta http-equiv=\"refresh\" content=\"0;URL=delete_chk.php\">";
  }
bør nok være:
if($result){
  header("location:delete_chk.php");
}

:)
Avatar billede compac Seniormester
22. maj 2008 - 19:44 #7
Nu slettes alle posterne fra skærmen, men der slettes intet i databasen.
Er det i orden at skrive if($delete)?  Skal det ikke være if($delete = eet eller andet)
Avatar billede w13 Novice
23. maj 2008 - 09:58 #8
Hvis man skriver if(noget) betyder det "hvis 'noget'=true". Det er altså en genvej. Hvis det skal være "hvis 'noget'=false", så skal det være if(!noget).
Avatar billede w13 Novice
23. maj 2008 - 09:59 #9
Og det skulle vel ikke være:
if($delete){
men:
if($_POST[delete]){
Avatar billede compac Seniormester
23. maj 2008 - 13:48 #10
Det ser ikke ud til at jeg kommer uden om Javascript, Jeg fik denne løsning til at virke:
I stedet for submitsætningen:
  <a href="java script:goDel()"><img src="slet.gif" alt=""></a>

Og javascript-filen:

function goDel()
{
    var recslen =  document.forms[0].length;
    var checkboxes=""
    for(i=1;i<recslen;i++)
    {
        if(document.forms[0].elements[i].checked==true)
        checkboxes+= " " + document.forms[0].elements[i].name
    }
   
    if(checkboxes.length>0)
    {
        var con=confirm("Er du sikker på, at du vil slette?");
        if(con)
        {
            document.forms[0].action="delete.php?recsno="+checkboxes
            document.forms[0].submit()
        }
    }
    else
    {
        alert("Der er ikke afkrydset noget.")
    }
}

Delete-filen:

<?php
include("../conn.php");
$recsno=$_GET["recsno"];
$data=trim($recsno);
$ex=explode(" ",$data);
$size=sizeof($ex);
for($i=0;$i<$size;$i++) {
    $id=trim($ex[$i]);
    $sql="delete from $branch where sn='$id'";
    $result=mysql_query($sql) or die(mysql_error());
}
header("location: index.php");

?>

I princippet ser det ud til at være det samme, som vi/du har skrevet om hele tiden, men det virker.
Du bør alligvel have point for dine anstrengelser, så læg et svar.
Avatar billede w13 Novice
23. maj 2008 - 13:54 #11
Godt, at det virker! ;)
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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