Avatar billede mpagh Nybegynder
04. juli 2006 - 18:25 Der er 59 kommentarer og
1 løsning

hjælp til at slette fra en tabel

er her nogen der vil hjælpe med en kode der:


<?

include ("config.php");

// Hent data ud
$resultat = mysql_query("select overskrift from artikler_avis ORDER BY id");

// vis data her

$foresp = mysql_query("SELECT overskrift FROM artikler_avis ORDER BY id");
while($data = mysql_fetch_array($f oresp)){
  echo "<b>" . $data["overskrift"] . "</b>  ";

}

?>

den connecter til databsen via config.php og viser en liste over artikler i tabellen artikler_avis men viser kun overskriften - så kommer det jeg skal have hjælp til... at hver overskrift den viser er et link til at slette den artikel!


det haster! skal bruges i aften!

på forhånd tak!
Avatar billede nielle Nybegynder
04. juli 2006 - 18:28 #1
Du skal til at starte med have sat et stel-link på:

$foresp = mysql_query("SELECT id, overskrift FROM artikler_avis ORDER BY id");
while ($data = mysql_fetch_array($foresp))
{
    echo "<b>" . $data["overskrift"] . "</b> <a href="slet.php?id=" . $data["id"] . "</a><br>";
}
Avatar billede nielle Nybegynder
04. juli 2006 - 18:31 #2
Derefter skal du have lavet en slet.php som kan se nogenlunde sådan her ud:

$id = $_GET["id"];
if (isset($id))
{
    $sql = "DELETE FROM artikler_avis WHERE id=" . $id;
    mysql_query($sql) or die(mysql_error());
}
Avatar billede mpagh Nybegynder
04. juli 2006 - 18:31 #3
kan du ikke lave en hel kode? er ikke vildt god til php:P
Avatar billede nielle Nybegynder
04. juli 2006 - 18:34 #4
Ok, men du bliver selv nødt til at fylde ud med password og den slags oplysninger...
Avatar billede nielle Nybegynder
04. juli 2006 - 18:45 #5
Jeg gætter på at den del af koden findes i "config.php".

Så burde dette være nok:

<?
include("config.php");

// Slet her.

$id = $_GET["id"];
if (isset($id))
{
    $sql = "DELETE FROM artikler_avis WHERE id=" . $id;
    mysql_query($sql) or die(mysql_error());
}

// Vis data her

$sql = "SELECT overskrift FROM artikler_avis ORDER BY id";
$result = mysql_query($sql) or die(mysql_error());

while ($data = mysql_fetch_assoc($result))
{
    echo "<b>" . $data["overskrift"] . "</b> <a href='" . $_SERVER['PHP_SELF'] . "?id=" . $data["id"] . "'>Slet</a><br>";
}
?>
Avatar billede zynzz Praktikant
04. juli 2006 - 18:47 #6
Altså du gør bare som nielle siger, altså opret slet.php:

<?
$id = $_GET["id"];
if (isset($id))
{
    $sql = "DELETE FROM artikler_avis WHERE id=" . $id;
    mysql_query($sql) or die(mysql_error());
}

$foresp = mysql_query("SELECT id, overskrift FROM artikler_avis ORDER BY id");
while ($data = mysql_fetch_array($foresp))
{
    echo "<b>" . $data["overskrift"] . "</b> <a href="slet.php?id=" . $data["id"] . "</a><br>";
}
?>

Jeg ved ikke lige hvordan du kører dine sider mht. connect osv.
Avatar billede mpagh Nybegynder
04. juli 2006 - 18:54 #7
nielle - jeg får bare denne her meddelelse
You have an error in your SQL syntax near '' at line 1
Avatar billede mpagh Nybegynder
04. juli 2006 - 18:57 #8
sååh det virker ikke?
Avatar billede nielle Nybegynder
04. juli 2006 - 18:58 #9
Det lyder som om at der er en fejl i din config.php fil...
Avatar billede mpagh Nybegynder
04. juli 2006 - 18:58 #10
neej tror at der er fejl i din kode
Avatar billede mpagh Nybegynder
04. juli 2006 - 18:59 #11
den skriver nemlig ikke noget tal efter blabla.php?id=
Avatar billede mpagh Nybegynder
04. juli 2006 - 18:59 #12
skal den ikke det?
Avatar billede nielle Nybegynder
04. juli 2006 - 19:00 #13
Jeg tvivler, men du kan da udvide koden med lidt debug:

<?
echo "DEBUG #0<br>";
include("config.php");

// Slet her.

$id = $_GET["id"];
if (isset($id))
{
    $sql = "DELETE FROM artikler_avis WHERE id=" . $id;
    echo "DEBUG #1: $sql<br>";
    mysql_query($sql) or die(mysql_error());
}

// Vis data her

$sql = "SELECT overskrift FROM artikler_avis ORDER BY id";
echo "DEBUG #2: $sql<br>";
$result = mysql_query($sql) or die(mysql_error());

while ($data = mysql_fetch_assoc($result))
{
    echo "<b>" . $data["overskrift"] . "</b> <a href='" . $_SERVER['PHP_SELF'] . "?id=" . $data["id"] . "'>Slet</a><br>";
}
?>

- og så kan du fortælle mig hvad den skriver.
Avatar billede nielle Nybegynder
04. juli 2006 - 19:02 #14
Hvis der er fejl i config.php så stopper den inde at denm når at skrive noget ud. Så jo det kan godt være der den er gal.
Avatar billede mpagh Nybegynder
04. juli 2006 - 19:03 #15
den når at sprøge hvilken jeg vil slette og hente data fra databasen men når jeg trykker slet så skriver den bare:

DEBUG #0
DEBUG #1: DELETE FROM artikler_avis WHERE id=
You have an error in your SQL syntax near '' at line 1
Avatar billede mpagh Nybegynder
04. juli 2006 - 19:04 #16
sprørge*
Avatar billede mpagh Nybegynder
04. juli 2006 - 19:04 #17
spørge*
Avatar billede nielle Nybegynder
04. juli 2006 - 19:05 #18
<?
echo "DEBUG #0<br>";
include("config.php");

// Slet her.

$id = $_GET["id"];
if (isset($id) && trim($id) != "")
{
    $sql = "DELETE FROM artikler_avis WHERE id=" . $id;
    echo "DEBUG #1: $sql<br>";
    mysql_query($sql) or die(mysql_error());
}

// Vis data her

$sql = "SELECT overskrift FROM artikler_avis ORDER BY id";
echo "DEBUG #2: $sql<br>";
$result = mysql_query($sql) or die(mysql_error());

while ($data = mysql_fetch_assoc($result))
{
    echo "<b>" . $data["overskrift"] . "</b> <a href='" . $_SERVER['PHP_SELF'] . "?id=" . $data["id"] . "'>Slet</a><br>";
}
?>
Avatar billede mpagh Nybegynder
04. juli 2006 - 19:07 #19
nu sker der ingenting når jeg trykker slet...
Avatar billede nielle Nybegynder
04. juli 2006 - 19:09 #20
Prøv at smide resultatet af en Vis Kilde her.
Avatar billede michael_stim Ekspert
04. juli 2006 - 19:10 #21
tänk på sqlinjection nielle.
Avatar billede mpagh Nybegynder
04. juli 2006 - 19:10 #22
før eller efter at jeg trykker slet?
Avatar billede pidgeot Nybegynder
04. juli 2006 - 19:10 #23
Nielle, du glemmer at selecte id-kolonnen, derfor finder den aldrig det felt :)

zynzz gør også (indirekte) opmærksom på det med hans query.
Avatar billede mpagh Nybegynder
04. juli 2006 - 19:11 #24
DEBUG #0<br>DEBUG #2: SELECT overskrift FROM artikler_avis ORDER BY id<br><b>test</b> <a href='/Geexie/fedesystemer/prove.php?id='>Slet</a><br><b>blabla</b> <a href='/Geexie/fedesystemer/prove.php?id='>Slet</a><br>
Avatar billede nielle Nybegynder
04. juli 2006 - 19:12 #25
Rooolig nu ... en ting af gangen.
Avatar billede michael_stim Ekspert
04. juli 2006 - 19:13 #26
Sorry ;o)
Avatar billede nielle Nybegynder
04. juli 2006 - 19:13 #27
04/07-2006 19:10:45> Det havde jeg husket at gøre i 04/07-2006 18:28:44 - men den forsvandt åbenbart igen.
Avatar billede nielle Nybegynder
04. juli 2006 - 19:14 #28
<?
echo "DEBUG #0<br>";
include("config.php");

// Slet her.

$id = $_GET["id"];
if (isset($id) && trim($id) != "")
{
    $sql = "DELETE FROM artikler_avis WHERE id=" . $id;
    echo "DEBUG #1: $sql<br>";
    mysql_query($sql) or die(mysql_error());
}

// Vis data her

$sql = "SELECT overskrift, id FROM artikler_avis ORDER BY id";
echo "DEBUG #2: $sql<br>";
$result = mysql_query($sql) or die(mysql_error());

while ($data = mysql_fetch_assoc($result))
{
    echo "<b>" . $data["overskrift"] . "</b> <a href='" . $_SERVER['PHP_SELF'] . "?id=" . $data["id"] . "'>Slet</a><br>";
}
?>
Avatar billede mpagh Nybegynder
04. juli 2006 - 19:14 #29
confused - hvad er de datoer til før?
Avatar billede mpagh Nybegynder
04. juli 2006 - 19:14 #30
for*
Avatar billede nielle Nybegynder
04. juli 2006 - 19:15 #31
Datoeren referer til tidligere indlæg i dette her spørgsmål :^)
Avatar billede mpagh Nybegynder
04. juli 2006 - 19:16 #32
DET VIRKER! 1000 tak! skriver du lige et svar så du kan få point?
Avatar billede nielle Nybegynder
04. juli 2006 - 19:17 #33
Nej, vi er nemlig ikke helt færdig (04/07-2006 19:10:23). ;^)
Avatar billede mpagh Nybegynder
04. juli 2006 - 19:17 #34
hmm hvad mangler?
Avatar billede pidgeot Nybegynder
04. juli 2006 - 19:19 #35
Der mangler sikkerhed mod at andre kan fuske med URL'en, og potentielt slette hele din database gennem den. :)

Her er det vel bare at bruge denne linie:

if (isset($id) && trim($id) != "" && is_numeric($id))

...og så også lige slette de debug-meddelelser.
Avatar billede mpagh Nybegynder
04. juli 2006 - 19:21 #36
jeg lægger den ind i et community og tilføjer en kode der gør at men SKAL være logged ind for at gøre det?
Avatar billede nielle Nybegynder
04. juli 2006 - 19:21 #37
Noget i denne stil:

<?
echo "DEBUG #0<br>";
include("config.php");

// Slet her.

$id = $_GET["id"];
if (isset($id) && preg_match("/^\d+$/", $id))
{
    $sql = "DELETE FROM artikler_avis WHERE id=" . $id;
    echo "DEBUG #1: $sql<br>";
    mysql_query($sql) or die(mysql_error());
}

// Vis data her

$sql = "SELECT overskrift, id FROM artikler_avis ORDER BY id";
echo "DEBUG #2: $sql<br>";
$result = mysql_query($sql) or die(mysql_error());

while ($data = mysql_fetch_assoc($result))
{
    echo "<b>" . $data["overskrift"] . "</b> <a href='" . $_SERVER['PHP_SELF'] . "?id=" . $data["id"] . "'>Slet</a><br>";
}
?>
Avatar billede nielle Nybegynder
04. juli 2006 - 19:22 #38
Det er ikke nok at du kræver login ... for hvordan sikre du at der ikke er en vandal som opretter en konto bare for at lave hærværk mod dit system?
Avatar billede mpagh Nybegynder
04. juli 2006 - 19:27 #39
jeg har slettet opret funktionen da det kun er min far der skal kunne lave ting.. men ellers hvad er din idé?
Avatar billede nielle Nybegynder
04. juli 2006 - 19:32 #40
Når man laver den slags ting skal man sikre sig at man kan stole på dem som kan benytte de potentielt destruktive ting. Derfor vil man sædvanligvis lave et login-system hvor at ikke alle brugere nødvendigvis har de samme rettigheder.

F.eks. ville det være naturligt at det kun var din fader (og dig selv) som havde slette-rettigheder.
Avatar billede mpagh Nybegynder
04. juli 2006 - 19:37 #41
ja ved godt... men ville denne kode så ikke virke?:

<?

session_start();

if (session_is_registered("brugernavn") AND ("kodeord")) {

include("config.php");

$hent = mysql_query("SELECT * FROM community_avis WHERE brugernavn = '$_SESSION[brugernavn]'") or die(mysql_error());

$vis = mysql_fetch_array($hent);

?>

<?

if($vis[status] == "Ejer")

{

?>

<?
echo "DEBUG #0<br>";
include("config.php");

// Slet her.

$id = $_GET["id"];
if (isset($id) && trim($id) != "")
{
    $sql = "DELETE FROM artikler_avis WHERE id=" . $id;
    echo "DEBUG #1: $sql<br>";
    mysql_query($sql) or die(mysql_error());
}

// Vis data her

$sql = "SELECT overskrift, id FROM artikler_avis ORDER BY id";
echo "DEBUG #2: $sql<br>";
$result = mysql_query($sql) or die(mysql_error());

while ($data = mysql_fetch_assoc($result))
{
    echo "<b>" . $data["overskrift"] . "</b> <a href='" .

$_SERVER['PHP_SELF'] . "?id=" . $data["id"] . "'>Slet</a><br>";
}
?>
Avatar billede nielle Nybegynder
04. juli 2006 - 19:40 #42
Bortset fra at koden slet ikke ville kunne køre... ;^)

... så afhænger det nu lige så meget af hvordan man logger ind på din side.
Avatar billede mpagh Nybegynder
04. juli 2006 - 19:42 #43
hvordan ville du foreslå at man tjekkede om man var logged ind?
Avatar billede mpagh Nybegynder
04. juli 2006 - 19:47 #44
har du msn? det ville måske være nemmere der?
Avatar billede nielle Nybegynder
04. juli 2006 - 19:48 #45
Nej jeg bruger ikke MSN.

Foretrækker nu også at hjælpe her sådan at alle kan følge med. :^)
Avatar billede mpagh Nybegynder
04. juli 2006 - 19:49 #46
men hvordan ville du foreslå det?
Avatar billede mpagh Nybegynder
04. juli 2006 - 19:50 #47
hvad med at kun éen ip kan komme ind?
Avatar billede mpagh Nybegynder
04. juli 2006 - 19:53 #48
eller ville denne kode virke?




<?

session_start();

if (session_is_registered("brugernavn") AND ("kodeord")) {

include("../config.php");

$hent = mysql_query("SELECT * FROM community_avis WHERE brugernavn = '$_SESSION[brugernavn]'") or die(mysql_error());

$vis = mysql_fetch_array($hent);

?>

<?

if($vis[status] == "normal")

{

echo("<font color=red>Ingen adgang!</font>");

}

?>

<?

if($vis[status] == "Ejer")

{

?>

<?

$hent = mysql_query("SELECT * FROM community_avis WHERE brugernavn='$_GET[brugernavn]'");

$vis1 = mysql_fetch_array($hent);

?>



<?
echo "DEBUG #0<br>";
include("config.php");

// Slet her.

$id = $_GET["id"];
if (isset($id) && trim($id) != "")
{
    $sql = "DELETE FROM artikler_avis WHERE id=" . $id;
    echo "DEBUG #1: $sql<br>";
    mysql_query($sql) or die(mysql_error());
}

// Vis data her

$sql = "SELECT overskrift, id FROM artikler_avis ORDER BY id";
echo "DEBUG #2: $sql<br>";
$result = mysql_query($sql) or die(mysql_error());

while ($data = mysql_fetch_assoc($result))
{
    echo "<b>" . $data["overskrift"] . "</b> <a href='" .

$_SERVER['PHP_SELF'] . "?id=" . $data["id"] . "'>Slet</a><br>";
}
?>

<?

}

?>



<?

}else{

print "<font color=red>Ingen Adgang!</font>";

}

?>
Avatar billede nielle Nybegynder
04. juli 2006 - 19:54 #49
Noget i denne stil:

<?
session_start();

$brugernavn = $_SESSION['brugernavn'];
$kodeord = $_SESSION['kodeord'];

if ($brugernavn == "dinFarsBrugernavn" && $kodeord = "dinFarsKodeord")
{
    echo "DEBUG #0<br>";
    include("config.php");

    // Slet her.

    $id = $_GET["id"];
    if (isset($id) && preg_match("/^\d+$/", $id))
    {
        $sql = "DELETE FROM artikler_avis WHERE id=" . $id;
        echo "DEBUG #1: $sql<br>";
        mysql_query($sql) or die(mysql_error());
    }

    // Vis data her

    $sql = "SELECT overskrift, id FROM artikler_avis ORDER BY id";
    echo "DEBUG #2: $sql<br>";
    $result = mysql_query($sql) or die(mysql_error());

    while ($data = mysql_fetch_assoc($result))
    {
        echo "<b>" . $data["overskrift"] . "</b> <a href='" . $_SERVER['PHP_SELF'] . "?id=" . $data["id"] . "'>Slet</a><br>";
    }
}
?>
Avatar billede mpagh Nybegynder
04. juli 2006 - 19:55 #50
<?

session_start();

if (session_is_registered("brugernavn") AND ("kodeord")) {

include("../config.php");

$hent = mysql_query("SELECT * FROM community_avis WHERE brugernavn = '$_SESSION[brugernavn]'") or die(mysql_error());

$vis = mysql_fetch_array($hent);

?>

<?

if($vis[status] == "normal")

{

echo("<font color=red>Ingen adgang!</font>");

}

?>

<?

if($vis[status] == "Ejer")

{

?>

<?

$hent = mysql_query("SELECT * FROM community_avis WHERE brugernavn='$_GET[brugernavn]'");

$vis1 = mysql_fetch_array($hent);

?>



<?
echo "DEBUG #0<br>";
include("config.php");

// Slet her.

$id = $_GET["id"];
if (isset($id) && trim($id) != "")
{
    $sql = "DELETE FROM artikler_avis WHERE id=" . $id;
    echo "DEBUG #1: $sql<br>";
    mysql_query($sql) or die(mysql_error());
}

// Vis data her

$sql = "SELECT overskrift, id FROM artikler_avis ORDER BY id";
echo "DEBUG #2: $sql<br>";
$result = mysql_query($sql) or die(mysql_error());

while ($data = mysql_fetch_assoc($result))
{
    echo "<b>" . $data["overskrift"] . "</b> <a href='" .

$_SERVER['PHP_SELF'] . "?id=" . $data["id"] . "'>Slet</a><br>";
}
?>

<?

}

?>



<?

}else{

print "<font color=red>Ingen Adgang!</font>";

}

?>


virker fint!
Avatar billede nielle Nybegynder
04. juli 2006 - 19:56 #51
Denne linje:

if (session_is_registered("brugernavn") AND ("kodeord")) {

- kan ikke kompilere. Den skal minimum se sådan ud:

if (session_is_registered("brugernavn") AND session_is_registered("kodeord")) {

Men det er jo ikke nok at teste om der er nogget nogen på. Du skal også teste om det er den rigtige som er logget på. Altså din far og ingen anden.
Avatar billede mpagh Nybegynder
04. juli 2006 - 19:56 #52
kom med svar for at få points?
Avatar billede nielle Nybegynder
04. juli 2006 - 19:56 #53
Svar :^)
Avatar billede michael_stim Ekspert
04. juli 2006 - 19:56 #54
Hvorfor alle de start/slut-tags til PHP?
Nej den ville heller ikke fungerer. Hvis det kun er én (måske to) der skal kunne logge ind, så kig på .htaccess.
www.webcafe.dk
Avatar billede mpagh Nybegynder
04. juli 2006 - 19:56 #55
har også gjort? if status = ejer then
Avatar billede michael_stim Ekspert
04. juli 2006 - 20:00 #56
<?
session_start();
if (session_is_registered("brugernavn") AND ("kodeord")) {

include("../config.php");

$hent = mysql_query("SELECT * FROM community_avis WHERE brugernavn = '$_SESSION[brugernavn]'") or die(mysql_error());
$vis = mysql_fetch_array($hent);
if($vis[status] == "normal")
{
echo("<font color=red>Ingen adgang!</font>");
}
if($vis[status] == "Ejer")
{
$hent = mysql_query("SELECT * FROM community_avis WHERE brugernavn='$_GET[brugernavn]'");
$vis1 = mysql_fetch_array($hent);
echo "DEBUG #0<br>";
include("config.php");

// Slet her.

$id = $_GET["id"];
if (isset($id) && trim($id) != "")
{
    $sql = "DELETE FROM artikler_avis WHERE id=" . $id;
    echo "DEBUG #1: $sql<br>";
    mysql_query($sql) or die(mysql_error());
}

// Vis data her

$sql = "SELECT overskrift, id FROM artikler_avis ORDER BY id";
echo "DEBUG #2: $sql<br>";
$result = mysql_query($sql) or die(mysql_error());
while ($data = mysql_fetch_assoc($result))
{
    echo "<b>" . $data["overskrift"] . "</b> <a href='" .
$_SERVER['PHP_SELF'] . "?id=" . $data["id"] . "'>Slet</a><br>";
}
}
}else{
print "<font color=red>Ingen Adgang!</font>";
}
?>

sammenlignet med din:

<?

session_start();

if (session_is_registered("brugernavn") AND ("kodeord")) {

include("../config.php");

$hent = mysql_query("SELECT * FROM community_avis WHERE brugernavn = '$_SESSION[brugernavn]'") or die(mysql_error());

$vis = mysql_fetch_array($hent);

?>

<?

if($vis[status] == "normal")

{

echo("<font color=red>Ingen adgang!</font>");

}

?>

<?

if($vis[status] == "Ejer")

{

?>

<?

$hent = mysql_query("SELECT * FROM community_avis WHERE brugernavn='$_GET[brugernavn]'");

$vis1 = mysql_fetch_array($hent);

?>



<?
echo "DEBUG #0<br>";
include("config.php");

// Slet her.

$id = $_GET["id"];
if (isset($id) && trim($id) != "")
{
    $sql = "DELETE FROM artikler_avis WHERE id=" . $id;
    echo "DEBUG #1: $sql<br>";
    mysql_query($sql) or die(mysql_error());
}

// Vis data her

$sql = "SELECT overskrift, id FROM artikler_avis ORDER BY id";
echo "DEBUG #2: $sql<br>";
$result = mysql_query($sql) or die(mysql_error());

while ($data = mysql_fetch_assoc($result))
{
    echo "<b>" . $data["overskrift"] . "</b> <a href='" .

$_SERVER['PHP_SELF'] . "?id=" . $data["id"] . "'>Slet</a><br>";
}
?>

<?

}

?>



<?

}else{

print "<font color=red>Ingen Adgang!</font>";

}

?>
Avatar billede nielle Nybegynder
04. juli 2006 - 20:09 #57
Denne her linje:

if (session_is_registered("brugernavn") AND ("kodeord")) {

- kompilere måske nok, men den fungere ikke efter hensigten.

Deludtrykket ("kodeord"))  vil altid blive sandt, og derfor testes der faktisk slet ikke på om man er logget ind med et korrekt password.
Avatar billede mpagh Nybegynder
04. juli 2006 - 20:10 #58
men du er slet ikke logged ind uden et password så det behøves ikke den tjekker jo om man er logged ind...
Avatar billede nielle Nybegynder
04. juli 2006 - 20:13 #59
I så fald er der jo slet ikke nogen grund til at have det delled. :^)
Avatar billede mpagh Nybegynder
04. juli 2006 - 20:15 #60
ved ikke :/ er bare glad for svaret :D
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