Avatar billede Clauspauli Nybegynder
14. november 2010 - 17:46 Der er 13 kommentarer og
2 løsninger

Slet en række i mysql database

Har fået lavet en tabel der henter fra mysql database

<?php
$result = mysql_query("SELECT * FROM formstatistik");

echo "<table border='1'cellspacing='2' cellpadding='5' align='left'>
<tr>
<th>Navn</th>
<th>Efternavn</th>
<th>Forhandler</th>
<th>Telefon</th>
<th>Adresse</th>
<th>Post Nr. og By</th>
<th>Hjemmeside</th>
<th>E-Mail</th>
<th>produkt1</th>
<th>produkt2</th>
<th>produkt3</th>
<th>Slet</th>
</tr>";

while($row = mysql_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['navn'] . "</td>";
  echo "<td>" . $row['efternavn'] . "</td>";
  echo "<td>" . $row['sygehus'] . "</td>";
  echo "<td>" . $row['afdeling'] . "</td>";
  echo "<td>" . $row['adresse'] . "</td>";
  echo "<td>" . $row['postnr'] . "</td>";
  echo "<td>" . $row['byen'] . "</td>";
  echo "<td>" . $row['email'] . "</td>";
  echo "<td align='center'>" . $row['produkt1'] . "</td>";
  echo "<td align='center'>" . $row['produkt2'] . "</td>";
  echo "<td align='center'>" . $row['produkt3'] . "</td>";
  echo "<td>" . MANGLER NOGET KODE HER DER SLETTER RÆKKEN . "</td>";
  echo "</tr>";
  }
echo "</table>";
?>

Håber der er nogen der lige har et guldkorn her


/Claus
14. november 2010 - 18:09 #1
Det er mig ikke helt klart hvad du vil opnaa.  Er det saaledes at efterhaanden som raekkerne i mysql tabellen bliver udskrevet saa skal raekkerne slettes i tabellen?  I saafald er koden (i pseudukode) echo "<td>mysql_query('DELETE FROM formstatistik WHERE [tabellens noegle] = [vaerdien af tabellens noegle])'</td>";

Er det saaledes at tabellen har en kolonne 'ID' hvor hver raekke har et unikt id-nummer?  I saafalt "..DELETE FROM formstatistik WHERE ID = ' . row['ID']"

Men hvorfor vil du slette raekkerne?  Hvis du kun vil have raekkerne udskervet en gang kunne du i tabellen lave en kolonne 'udskrevet' som du saa markerer med TRUE ved udskrift.  Kode"  echo "<td>mysql_query(UPDATE formstatistik SET udskrevet = TRUE where ID = . 'row['ID']'</td>";

Hvis jeg har misforstaaet problemet saa forklar.
Avatar billede Clauspauli Nybegynder
14. november 2010 - 18:29 #2
Der er lavet en form som indsætter i databasen,

Det er en liste over forhandler som printes til skærmen, men i stedet for at gå ind i datebasen og slette rækken når en given forhandler ikke ønsker at være forhandler mere kan den slettes, direkte i tabelen der udprintes til skærmen


Forhandler1 - navn-efternavn  -SLET-
Forhandler2 - navn-efternavn  -SLET-
Forhandler3 - navn-efternavn  -SLET-
Forhandler4 - navn-efternavn  -SLET-
Forhandler5 - navn-efternavn  -SLET-


Håber det giver mening :-)

/Claus
14. november 2010 - 19:37 #3
Jeg har ikke helt forstaaet.  Jeg tror du siger at du har en mysql tabel formstatistik med lister over forhandlere.  Du fylder nye forhandlere i tabellen via en html form.  Naar saa en forhandler ikke laengere oensker at vaere forhandler hvad skal der saa ske?  Skal forhandleren slettes fra tabellen (generelt en daarlig ide, du faar maaske brug for oplysningen senere) eller skal forhandlerens raekke i tabellen markeres med 'SLET'?  Eller vil du udskrive en liste over slettede forhandlere ved at udtraekke deres navne, produkter, o.s.v. fra tabellen og saa i udskriften skrive 'SLET'?  I saafald hvordan ved dit system hvilke af forhandlerne i tabellen der skal skrives ud?  Din query finder alle forhandlere i tabellen frem.  Skal din query maaske vaere "SELECT * FROM formstatistik WHERE Slettet = 'slet'"  I saafald kan du simpelthen udskrive det saaledes:

while($row = mysql_fetch_array($result)
{
echo "<tr>";
...
...
echo "<td>SLET</td>";
Avatar billede Clauspauli Nybegynder
14. november 2010 - 20:11 #4
Sorry er ikke den store kode haj.

Du har ret i at der fyldes nye forhandler i via en html form.

Slet skal være en knap "Link" der slette den række den står ud for.

kunne selv forestille mig at den skulle se sådanne ud:



echo "<td>" . <A href=" NOGET KODE HER">SLET</A> . "</td>";






/Claus
14. november 2010 - 22:16 #5
Aha, saa du vil i din udskrift for hver forhandler lave en knap/et link saaledes at naar man klikker paa den/det bliver forhandleren slettet fra tabellen.  Du skal saa bruge to koder, en kode til at oprette knappen/linket og en kode til at gaa ind og slette forhandleren fra tabellen naar knappen/linket klikkes.

Koden til at oprette en knap er let.  echo "<td><form action='' method='POST'><input type='submit' name='slet' value= 'SLET' /></form></td>";

Koden til at slette forhandleren er mere kompliceret.  Du har endnu ikke fortalt mig om hver forhandler i tabellen har en id.  Hvis ja, saa er selve koden til at slette forhandleren ret enkel:

mysql_query("DELETE FROM formstatistik WHERE id = $id");

Men for at fange ide'en paa den forhandler du klikker paa er det noedvendig at anvende javascript.  Saa langt kommer jeg ikke i aften.  Maaske er der et andet medlem der kan skrive en onclick kode.  Ellers skal jeg proeve at finde tid i morgen.
Avatar billede danco Nybegynder
15. november 2010 - 10:42 #6
Jeg må nok indrømme at hvis jeg var dig ville jeg tage den lette løsning på problemet. I din tabel hvor du viser hele udtrækket ville jeg bruge følgende: Naturligvis under forudsætning at du har en id i din database der identificerer hver række.

echo '<a href="delete.php?id='.$row['id'].'">Slet</a>';

så ville jeg i delete.php have følgende:

//Her skal du oprette forbindelse til din database
$id = $_GET['id'];
if(!is_numeric($id)) {
  echo 'ID skal være et tal';
} else{
$sql = 'DELETE FROM formstatistik WHERE id=$id';
mysql_query($sql) or die(mysql_error());
echo 'Rækken er nu slettet fra databasen ';
}
15. november 2010 - 18:23 #7
Jeg var lidt haengt op idag, derfor reagerer jeg foerst nu.  Jeg har kikket paa danco's foreslaaede loesning; ja, det vil nok vaere nemmee end med html knapper og javascript, isaer hvis man ikke er den store (java)skriftkloge.  Hvis du ikke har en id for hver forhandler men identificerer dem med navn og efternavn vil du vaere noed til at sige

echo "<a href='delete.php?navn=" . $row['navn'] . "&efternavn=" . $row['efternavn'] . ">Slet</a>";

og $navn = $_GET['navn'];
$efternavn = $_GET['efternavn'];
....
$sql="DELETE FROM formstatistik WHERE navn = $navn AND $efternavn = $efternavn";
....

Men saa er du paa den naar to forhandlere har samme for- og efternavn.  Hvis du ikke har id i tabellen vil jeg foreslaa at tilpasse tabellen.  Det kan jo goeres uden for meget besvaer med en sql query.
Avatar billede danco Nybegynder
15. november 2010 - 21:54 #8
Generelt vil jeg give Christian ret her, der bør være en form for entydig identificerende attribut i din tabel. Hvad enten det er email adresse, telefon nummer eller en ID med auto_increment funktionalitet.
Avatar billede Clauspauli Nybegynder
16. november 2010 - 20:08 #9
Mange Tak for jeres hjælp, den er fikset, danco din løsning virkede, men Christian jeg er løbet videre med.

echo "<td><form action='' method='POST'><input type='submit' name='slet' value= 'SLET' /></form></td>";

og delete.php

Hvor tildeler jeg point.


og endnu engang tak for hjælpen.


/Claus
Avatar billede danco Nybegynder
16. november 2010 - 20:22 #10
Du giver point ved at afgøre hvem af os der skal have point. Derefter beder du vedkomne ligge et svar, som så kan acceptere.
Avatar billede Clauspauli Nybegynder
16. november 2010 - 20:33 #11
jeg vil gerne have lov at dele mellem jer,


/Claus
Avatar billede danco Nybegynder
16. november 2010 - 21:26 #12
I så fald ligger jeg et svar nu og så venter du med at accepterer til Christian også har smidt et svar. Så kan du bare accepterer begge og fordele point.
17. november 2010 - 06:11 #13
Og saa svar fra mig.
17. november 2010 - 06:12 #14
Om igen, her er svaret fra mig.
Avatar billede danco Nybegynder
17. november 2010 - 10:01 #15
Jeg fik lige en god idé. Ville det ikke være snedigt at benytte checkboxes frem for knapper på hver linje. Det kunne blandt andet være:

<input type="checkbox" name="boxes[]" value="<?php echo $row['id'] ?>" />

På den måde vil du kunne få et array ud ved hjælp af $_POST['boxes'] som indeholder de id'er der skal slettes.
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