Avatar billede kischi Novice
11. marts 2012 - 19:25 Der er 13 kommentarer og
1 løsning

Slette en record

Hej,

Jeg prøver at lave et link som når man klikker på det kan man slette den givne record i databasen.

indtil videre har jeg kun fået alle records vist på siden, men kan ikke helt finde ud af hvordan jeg hvis man klikke på et link kan slette den enkelte record.

Så i bunden af php koden skal jeg have lavet et link som hedder delete, og som så sletter den post som den er knyttet til.

så under hver post skal være en delete knap som er knyttet til den specifikke post højst sandsynligt via id, men er der nogle som ved hvordan jeg gør det?

På forhånd tak for hjælpen, og jeg håber i forstår hvad jeg mener.

Dette er min kode:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<?php
$con = mysql_connect("xxx","xxx","xxxx");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("wearecrunch_kundedatabase", $con);

$sql = "DELETE FROM kunder WHERE id=$id";
    $result = mysql_query($sql);
    header("location: se_kunder.php");
    echo "Row deleted!";

$result = mysql_query("SELECT * FROM kunder");

while($row = mysql_fetch_array($result))
 
$id = $row['id'];
 
  echo "<b>NY KUNDE</b>" . "<br><br><b /><u>Virksomhedsnavn</u></b><br>" . $row['Virksomhedsnavn'] . "<br><br><b><u>CVR. nummer</u></b> <br> " . $row['cvrnummer']  .
  "<br><br><b /><u>Kontaktperson</u></b><br>" . $row['kontaktperson'] . "<br><br><b><u>E-mail</u></b> <br> " . $row['email'] .
  "<br><br><b /><u>kundenummer</u></b><br>" . $row['kundenummer'] . "<br><br><b><u>fakturanummer</u></b> <br> " . $row['fakturanummer'] .
  "<br><br><b /><u>oprettet</u></b><br>" . $row['oprettet'] . "<br><br><b><u>brugernavn til ftp</u></b> <br> " . $row['brugerftp'] .
  "<br><br><b /><u>kodeord til ftp</u></b><br>" . $row['passftp'] . "<br><br><b><u>brugernavn til cms</u></b> <br> " . $row['brugercms'] .
  "<br><br><b /><u>kodeord til cms</u></b><br>" . $row['passcms'] . "<br><br><b><u>udbyder</u></b> <br> " . $row['hosters'] .
  "<br><br><b /><u>betalt</u></b><br>" . $row['betalt'] . "<br><br><b><u>skal betale senest</u></b> <br> " . $row['betalsenest'] .
  "<br><br><b /><u>send neste faktura</u></b><br>" . $row['nestefaktura'] . "<br><br><b><u>pris</u></b> <br> " . $row['pris'] .
  "<br><br><b /><u>webadresse</u></b><br>" . $row['webadresse'] . "<br><br><b><u>link til faktura</u></b> <br> " . $row['fakturaurl'] .   
  "<br><br><b /><u>link til projektbeskrivelse</u></b><br>" . $row['projektbeskrivelseurl'] . "<br><br><b><u>noter</u></b> <br> " . $row['noter'].

  "<br><br>" .
  "<hr />";;

 

mysql_close($con);
?>

</body>
</html>
Avatar billede kjeldsted Novice
11. marts 2012 - 20:59 #1
Hvis jeg har misforstået noget skal jeg beklage, og i så fald retter du bare på mig ;)

Men du kunne jo fx. lavet et link som delete.php?deleteID=17

Og så hente denne ID og slette denne række.
Avatar billede kischi Novice
11. marts 2012 - 21:30 #2
Ja men det skal ikke kun være id 17 eller id 18 som slettes.

Ved vær post som bliver vist på siden skal der være et delete link ved siden af og når man så klikker på det delete link så sletter den den post som den er ved siden af.

Så det vil sige, at når jeg på en anden side opretter en post, så kan jeg gå til denne side og slette den igen ved at klikke på et link, så delete linket kommer automatisk ved vær post og er knyttet til den post. via id'et.

Så jo hvis den er ved en post som har id 17 så skal den slette den, men hvis der er en post som har id 233 for eksempel skal der være en delete link der som sletter den post.

Forstår du nu?
Det håber jeg, ellers må du undskylde hvis jeg ikke forklare det ordentligt :)
Avatar billede kjeldsted Novice
11. marts 2012 - 21:39 #3
Det med 17 var et eksempel. Linket skal naturligvis generes med PHP. Altså fx.:

<a href="delete.php?deleteID=<?=$id?>">Slet</a>
Avatar billede kjeldsted Novice
11. marts 2012 - 21:42 #4
Og så burde du nok også overveje at lave layoutet med noget CSS i stedet for <br> :)
Avatar billede kischi Novice
11. marts 2012 - 22:34 #5
Hey,

ok nu kom der ihvertfald et link hvor der står slet, men det sletter ikke noget, det virker bare som om siden bliver opdateret men eller sker der ikke noget.

Nu ser delete delen af koden ihvertfald sådan her ud:

linket:
'<a href="se_kunder.php?deleteID=<?=$id?>">Slet</a>'

de andre ting som er i min kode:

$sql = "DELETE FROM kunder WHERE id=$id";
    $result = mysql_query($sql);
  $id = $row['id'];

Kan du se noget der mangler?

Ja jeg har også tænkt mig at sætte det op med css men, jeg ville først lige have funktionerne til at virke, og så kan jeg kode med det efter.

Men tak for det
Avatar billede kjeldsted Novice
12. marts 2012 - 00:20 #6
Øh.... Ja, der manger da en hel del. Men de fire linjer er vel også kun en lille del af din kode?

For det første skal du tjekke om din browser åbner den rigtige sti (altså med det rigtige ID og sådan).

Så må koden hvor du sletter absolut kun køres hvis der er indtastet en ID i URL'en.
Derudover kan jeg ikke se i ovenstående kode at du henter oplysninger fra URL'en?
Og når du henter disse oplysninger skal du tjekke om der er indtastet et tal eller noget ugyldigt.
Avatar billede kischi Novice
12. marts 2012 - 00:52 #7
Ja det er kun en lille del af min kode.

nu har jeg ændret lidt ting, men den refresher kun, den sletter ikke posten.

Kan det også have noget med rækkefølgen at gøre, at der er noget der skal udføres før posten kan slettes eller sådan noget?

Du må undskylde den rodet kode med alle br tagsene, men jeg ville først have funktionaliteten til at fungere før jeg gik igang med css.

Jeg har lige set at der bliver ikke vist en specifik id i urlen men denne url bliver vist:
kundedatabase/se_kunder.php?id=<?=$id?>

Burde den ikke skrive den specifikke id i urlen, og hvordan er det nu jeg får den til det?

ved du hvad der mangler i denne kode:

<?php
$con = mysql_connect("xxx","xxx","xxx");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("xxx", $con);

$id = $row['ID'];
$result = mysql_query($sql);

   
 

$result = mysql_query("SELECT * FROM kunder");

$sql = "DELETE FROM kunder WHERE ID=$id";

while($row = mysql_fetch_array($result))
 

 
  echo "<b>NY KUNDE</b>" . "<br><br><b /><u>Virksomhedsnavn</u></b><br>" . $row['Virksomhedsnavn'] . "<br><br><b><u>CVR. nummer</u></b> <br> " . $row['cvrnummer']  .
  "<br><br><b /><u>Kontaktperson</u></b><br>" . $row['kontaktperson'] . "<br><br><b><u>E-mail</u></b> <br> " . $row['email'] .
  "<br><br><b /><u>kundenummer</u></b><br>" . $row['kundenummer'] . "<br><br><b><u>fakturanummer</u></b> <br> " . $row['fakturanummer'] .
  "<br><br><b /><u>oprettet</u></b><br>" . $row['oprettet'] . "<br><br><b><u>brugernavn til ftp</u></b> <br> " . $row['brugerftp'] .
  "<br><br><b /><u>kodeord til ftp</u></b><br>" . $row['passftp'] . "<br><br><b><u>brugernavn til cms</u></b> <br> " . $row['brugercms'] .
  "<br><br><b /><u>kodeord til cms</u></b><br>" . $row['passcms'] . "<br><br><b><u>udbyder</u></b> <br> " . $row['hosters'] .
  "<br><br><b /><u>betalt</u></b><br>" . $row['betalt'] . "<br><br><b><u>skal betale senest</u></b> <br> " . $row['betalsenest'] .
  "<br><br><b /><u>send neste faktura</u></b><br>" . $row['nestefaktura'] . "<br><br><b><u>pris</u></b> <br> " . $row['pris'] .
  "<br><br><b /><u>webadresse</u></b><br>" . $row['webadresse'] . "<br><br><b><u>link til faktura</u></b> <br> " . $row['fakturaurl'] .   
  "<br><br><b /><u>link til projektbeskrivelse</u></b><br>" . $row['projektbeskrivelseurl'] . "<br><br><b><u>noter</u></b> <br> " . $row['noter']. "<br><br>" .
  '<a href="se_kunder.php?id=<?=$id?>">Slet</a>' .
  "<br><br>" .
  "<hr />";;

 

mysql_close($con);
?>
Avatar billede kjeldsted Novice
12. marts 2012 - 08:53 #8
.   '<a href="se_kunder.php?id=<?=$id?>">Slet</a>' .


Skal du nok rette til


.   "<a href=\"se_kunder.php?id=$id\">Slet</a>" .
Avatar billede kjeldsted Novice
12. marts 2012 - 08:55 #9
En anden ting er at du jo aldrig udfører kommandoen til at slette. Du laver kun en variablen med SQLen. Den skal jo også eksekveres. Og så vil jeg nok anbefale dig at sette rækken før du henter de andre rækker, således at man rent faktisk også kan se at den er slettet.
Avatar billede kjeldsted Novice
12. marts 2012 - 08:56 #10
Og en sidste ting. Du bør nok ændre SQLen til

$sql = "DELETE FROM kunder WHERE ID='$id'";
Avatar billede kischi Novice
12. marts 2012 - 09:53 #11
Hvordan er det jeg eksekvere sql variablen.

Skal jeg eksekvere den direkte i linket eller skal jeg lave en if sætning som hedder:

if linket er trykket så udfør sql variablen?

og hvilken række før jeg henter de andre rækker mener du skal slettes, er det while sætningen eller den første $result sætning?

Tak for hjælpen
Avatar billede kjeldsted Novice
12. marts 2012 - 21:12 #12
mysql_query($sql)

Og ja. fx.

if(is_numeric($_POST['deleteID'])) mysql_query($sql);

Og du skal slette før du henter oplysningere som bliver vist. Ellers kan du ikke se du har slettet før du opdatere siden igen. Og det er altså før den første result.
Avatar billede kischi Novice
25. april 2012 - 07:26 #13
Undskyld jeg ikke har svaret her i et stykke tid.

Har du lyst til at komme med et svar, og så skal jeg nok acceptere og lukke.
Avatar billede kjeldsted Novice
25. april 2012 - 11:59 #14
Fik du det nogensinde til at virke?
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
Computerworld tilbyder specialiserede kurser i database-management

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



Seneste spørgsmål Seneste aktivitet
I dag 10:28 PDFEngine Af barth i Andet software
I går 22:40 Butte indhold i celler Af lurup i Excel
I går 15:24 Power Query Af djsimonsen i Excel
I går 14:43 Hvis ikke på liste, tilføj værdier til liste Af TheLibrarian i Excel
I går 11:33 Windows 11 Af ranni i Windows