Avatar billede doncarnage Nybegynder
11. november 2008 - 08:54 Der er 7 kommentarer og
1 løsning

Sletning af indhold fra 3 tabeller samtidigt

Godmorgen...

Jeg står i den situation at jeg har med 3 tabeller at gøre. Disse er alle mere eller mindre afhængige af hinanden. Det kan ses her hvordan det hænger sammen: http://www.valuable.dk/oversigt.jpg
Når man klikker på et link i første tabel kommer man videre til næste og herfra videre til den sidste.. Dette fungerer også som det skal.. Men når jeg prøver at slette går det galt..

Jeg benytter mig af følgende metode til at slette:

<?php
include_once('../inc.config.php');

mysql_connect($cfg['mysql']['host'],$cfg['mysql']['username'],$cfg['mysql']['password']);
mysql_select_db($cfg['mysql']['database']);

$offset = isset($_GET['offset']) ? $_GET['offset'] : 0;
if (isset($_GET['deleteID'])) {
    mysql_query("DELETE FROM vare WHERE parent=".$_GET['deleteID']."") or die(mysql_error());
    mysql_query("DELETE FROM varegruppe WHERE id=".$_GET['deleteID']."") or die(mysql_error());
}
$query = mysql_query("SELECT id,navn FROM varegruppe ORDER BY id DESC") or die(mysql_error());
echo '<ul>';
while ($row = mysql_fetch_assoc($query)) {
    echo '<li>[<a href="?offset='.$offset.'&deleteID='.$row['id'].'" class=lille>Slet</a>] ';
    echo '[<a href="news.edit.php?offset='.$offset.'&id='.$row['id'].'" class=lille>Rediger</a>] ';
    echo '<b><font class=lille>';
    echo $row['navn'].'</li>';
    echo '</font></b>';
}
echo '</ul>';

?>

Når jeg benytter mig af denne sletfunktion sletter den godt nok varegruppen og varerne (På billedet ovenover er det altså det rigtige indhold fra tabel 1 og tabel 2 som den sletter), men indholdet fra tabel 3 bliver blot liggende inde i databasen uden at blive slettet.. Man kan godt nok ikke se det på siden eftersom det ikke er tilknyttet en vare og en varegruppe med parent nummeret, men det er stadig træls at det ligger og roder i databasen da det på sigt kan belaste serveren..

Hvordan løser jeg dette problem ?
Avatar billede dkfire Nybegynder
11. november 2008 - 09:38 #1
Du laver en mysql_query som sletter de rækker du vil have slettet i tabel 3.
Som det er nu har du kun en query foir tabel 1 og 2.
Avatar billede doncarnage Nybegynder
11. november 2008 - 15:59 #2
Det har jeg bare prøvet uden held desværre.. Nok fordi den ikke er helt som den skal være :/
Avatar billede doncarnage Nybegynder
12. november 2008 - 02:07 #3
Slet ingen, der kan hjælpe mig :/? Den skal slette fra tabel 3, hvor parent skal være afhængig af hvad parent er i tabel 2, som så er afhængig af hvad id er i tabel 1
Avatar billede dkfire Nybegynder
12. november 2008 - 09:04 #4
Måske noget ala:
"DELETE FROM vare, `tabel 3` WHERE `tabel 3`.felt = vare.felt AND vare.parent=".$_GET['deleteID'].""

Men du bliver nok nød til at vise din struktur for dine tabeller.
Avatar billede doncarnage Nybegynder
12. november 2008 - 16:25 #5
Helt i orden... Jeg har lige smidt et billede op af de tre tabeller her:

http://www.valuable.dk/tabeller.jpg
Avatar billede doncarnage Nybegynder
12. november 2008 - 16:28 #6
Bah.. Havde helt glemt at jeg allerede havde gjort det i topic :/ Smider lige strukturen for de tre sider her:

------------------------------------------------------
index.php
------------------------------------------------------

<html>
<head>
<link rel="stylesheet" type="text/css" href="css.css">
</head>

<body>

<font class="lille">
» <a href="index.php">Forside</a> » <a href="admin/administration.php">Admin</a>

<br><br>

Du er her: ../index.php
</font>

<br><br>
<table border="1" bordercolor="#000000" cellpadding="2" cellspacing="2">
<tr>
  <th width="300">Varegrupper</th>
</tr>

<?php
include_once('inc.config.php');

mysql_connect($cfg['mysql']['host'],$cfg['mysql']['username'],$cfg['mysql']['password']);
mysql_select_db($cfg['mysql']['database']);

$query = mysql_query("SELECT * FROM varegruppe ORDER BY id ASC");
if (mysql_num_rows($query) > 0) {
    while ($row = mysql_fetch_assoc($query)) {

        $count = "SELECT count(*) AS antal FROM vare WHERE parent=".$row['id'];
        $querycount = mysql_query($count) or die(mysql_error());
        $rowcount = mysql_fetch_assoc($querycount);

          echo "<tr>";
            echo '<td> <a href="kategori.php?type='.$row['id'].'">'.$row['navn'].'</a> ('.$rowcount["antal"].') </td>';
            echo "</tr>";

    }
}

  else {
          echo "<tr>";
            echo "<td>tabellen er tom</td>";
            echo "</tr>";
}


?>

</table>
</body>
</html>

------------------------------------------------------
kategori.php
------------------------------------------------------

<html>
<head>
<link rel="stylesheet" type="text/css" href="css.css">
</head>

<body>

<font class="lille">
» <a href="index.php">Forside</a> » <a href="admin/administration.php">Admin</a>

<br><br>

Du er her: ../kategori.php
</font>

<br><br>
<table border="1" bordercolor="#000000" cellpadding="2" cellspacing="2">
<tr>
  <th width="300">Kategorier</th>
</tr>

<?php
include_once('inc.config.php');

mysql_connect($cfg['mysql']['host'],$cfg['mysql']['username'],$cfg['mysql']['password']);
mysql_select_db($cfg['mysql']['database']);

$query = mysql_query("SELECT * FROM vare WHERE parent=".$_GET['type']." ORDER BY id ASC");
if (mysql_num_rows($query) > 0) {
    while ($row = mysql_fetch_assoc($query)) {

        $count = "SELECT count(*) AS antal FROM kategori WHERE parent=".$row['id'];
        $querycount = mysql_query($count) or die(mysql_error());
        $rowcount = mysql_fetch_assoc($querycount);

          echo "<tr>";
            echo '<td> <a href="vare.php?type='.$row['id'].'&id='.$row['parent'].'">'.$row['type'].'</a> ('.$rowcount["antal"].') </td>';
            echo "</tr>";

    }
}

  else {
          echo "<tr>";
            echo "<td>tabellen er tom</td>";
            echo "</tr>";
}


?>

</table>

<br>

<?
    $query = mysql_query("SELECT * FROM varegruppe WHERE id=".$_GET['id']."");
        echo '&nbsp;<a href="index.php"><u>Gå tilbage</u></a>';
?>

</body>
</html>

------------------------------------------------------
vare.php
------------------------------------------------------

<html>
<head>
<link rel="stylesheet" type="text/css" href="css.css">
</head>

<body>

<font class="lille">
» <a href="index.php">Forside</a> » <a href="admin/administration.php">Admin</a>

<br><br>

Du er her: ../vare.php
</font>

<br><br>

<table border="1" bordercolor="#000000" cellpadding="2" cellspacing="2">
<tr>
  <th width="300">Navn</th>
  <th>Beskrivelse</th>
  <th>Billede</th>
  <th>På lager</th>
  <th>Pris</th>
</tr>

<?php
include_once('inc.config.php');

mysql_connect($cfg['mysql']['host'],$cfg['mysql']['username'],$cfg['mysql']['password']);
mysql_select_db($cfg['mysql']['database']);

$query = mysql_query("SELECT * FROM kategori WHERE parent=".$_GET['type']." ORDER BY id ASC");
if (mysql_num_rows($query) > 0) {
    while ($row = mysql_fetch_assoc($query)) {
          echo "<tr> ";
            echo '<td> '.$row['name'].' <font class="ny">'.$row['ny'].'</font> </td>';
            echo '<td> '.$row['beskrivelse'].' </td>';
            echo '<td> '.$row['billede'].' </td>';
            echo '<td><img src='.$row['status'].'></td>';
            echo '<td> '.$row['pris'].' </td>';
            echo "</tr>";

    }
}

  else {
          echo "<tr>";
            echo "<td>tabellen er tom</td>";
            echo "<td>...</td>";
            echo "<td>...</td>";
            echo "<td>...</td>";
            echo "<td>...</td>";
            echo "</tr>";
}


?>

</table>

<br>

<?
    $query = mysql_query("SELECT * FROM vare WHERE id=".$_GET['id']."");
        echo '&nbsp;<a href="kategori.php?type='.$_GET['id'].'"><u>Gå tilbage</u></a>';
?>

</body>
</html>
Avatar billede doncarnage Nybegynder
13. november 2008 - 20:47 #7
Slet ingen, der kan hjælpe :(?
Avatar billede doncarnage Nybegynder
15. november 2008 - 08:11 #8
Jeg lukker tråden igen så.. Har måske selv en ide til hvordan jeg kan løse problemet
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