Avatar billede kwudo Nybegynder
22. september 2007 - 13:18 Der er 13 kommentarer og
1 løsning

Slet dem med check

Hej alle sammen.

jeg ligger inde med et rimelig svært problem.

Lad os starte fra toppen af, jeg har lavet et post system hvor brugere kan sende post til hinanden.
I deres indbakke har jeg nu lavet et checkfelt ud for hver besked de har fået.
det så meningen at de skal kunne checke flere beskeder af og så vælg Slet markede, hvorefter den så opdatere feltet "del" til yes i databasen.
Den skal altså ikke slette men opdatere :-)

Koden der henter beskederne så således ud:

<?

$hent = mysql_query("SELECT * FROM post_beskeder WHERE modt = '$show[username]' AND mappe = 'std' AND del = 'no' ORDER BY id DESC") or die(mysql_error());
if(mysql_num_rows($hent)) {
while($vis = mysql_fetch_array($hent)) {

?>

<table border="0" width="1241">
    <tr>
        <td width="69"><? if($vis[status] == "unread") { ?> <img src="pics/unread.gif"> <? } else { ?> <img src="pics/read.gif"> <? } ?></td>
        <td width="901"><a href="vis_brev.php?id=<? echo $vis[id]; ?>"><b><? echo $vis[emne]; ?></b></a> - <? echo $vis[dato]; ?>, klokken <? echo $vis[klok]; ?></td>
        <td width="40">
        <p align="center"><input type="checkbox" name="action" value="yes"></td>
        <td width="32"><b>Afs.:</b></td>
        <td width="177" align="right"><? echo $vis[afs]; ?></td>
    </tr>
</table>

<?
}
} else {
    echo "Du har ingen breve i din indbakke :-);
}
?>

Håber på svar :-)
Avatar billede showsource Seniormester
22. september 2007 - 14:27 #1
<input type="checkbox" name="delete[]" value="<?php echo $row['id']; ?>">

<?php
if(isset($_POST["delete"])) {
$idrows = implode(",", $_POST["delete"]);

$sql = "UPDATE post_beskeder SET del = 'no' WHERE id IN(". $idrows .") AND modt = '". $_SESSION["navn"] ."'";

mysql_query($sql);
}

?>
Nu ved jeg ikke hvordan du holder styr på hvem det er som læser beskeden, men gik ud fra du bruger sessions
Avatar billede kwudo Nybegynder
22. september 2007 - 15:18 #2
min kode ser nu sådan ud:

if($_GET[delete] == "yes") {

if(isset($_POST["delete"])) {
$idrows = implode(",", $_POST["delete"]);

$sql = "UPDATE post_beskeder SET del = 'yes' WHERE id IN(". $idrows .") AND modt = '". $show["modtager"] ."'";

mysql_query($sql);

}
}

Men virker stadig ikke? :/
Avatar billede kwudo Nybegynder
22. september 2007 - 15:19 #3
Checkbox og link ser sådan ud:

<input type="checkbox" name="delete[]" value="<? echo $vis[id]; ?>">

<a href="indbakke.php?delete=yes">
Avatar billede kwudo Nybegynder
22. september 2007 - 15:22 #4
". $show["modtager"] ."

skal istedet være:

". $show["username"] ."
Avatar billede woowii Nybegynder
23. september 2007 - 03:24 #5
<input type='checkbox' name='$mailid' />

foreach($_POST as $key => $value)
{
  mysql_query("DELETE FROM mail WHERE id='".$_POST['key']."'");
}

Som altid, husk at tjekke - brugeren kan let selv tilføje felter og dermed slette mere end han egentlig har adgang til, så tjek at han kun sletter det han kan.
Avatar billede kwudo Nybegynder
23. september 2007 - 13:25 #6
har nu følgene kode:

foreach($_POST as $key => $value)
{
$sql = "UPDATE post_beskeder SET del = 'yes' WHERE id IN(". $value .") AND modt = '". $show["username"] ."'";

mysql_query($sql);
}

er det sådan den skal være?
Avatar billede kwudo Nybegynder
23. september 2007 - 13:27 #7
hm.. poster lige hele koden..
Får den laver bare et blink:

<?
if($_GET[ac] == "del") {

foreach($_POST as $key => $value)
{
$sql = "UPDATE post_beskeder SET del = 'yes' WHERE id IN(". $value .") AND modt = '". $show["username"] ."'";

mysql_query($sql);
}

}

$hent = mysql_query("SELECT * FROM post_beskeder WHERE modt = '$show[username]' AND mappe = 'std' AND del = 'no' ORDER BY id DESC") or die(mysql_error());
if(mysql_num_rows($hent)) {
while($vis = mysql_fetch_array($hent)) {

?>

<table border="0" width="100%">
    <tr>
        <td width="3%"><? if($vis[status] == "unread") { ?> <img src="pics/unread.gif"> <? } else { ?> <img src="pics/read.gif"> <? } ?></td>
        <td width="4%">
        <p align="center"><input type='checkbox' name='$mailid' value='<? echo $vis[id]; ?>' /></td>
        <td width="909"><a href="vis_brev.php?id=<? echo $vis[id]; ?>"><b><? echo $vis[emne]; ?></b></a> - <? echo $vis[dato]; ?>, klokken <? echo $vis[klok]; ?></td>
        <td width="3%"><b>Afs.:</b></td>
        <td width="16%" align="right"><? echo $vis[afs]; ?></td>
    </tr>
</table>

<?
}
?>
<br><br><br>
<a href="indbakke.php?ac=del"><img src="pics/del.gif" border="0"></a> <img src="pics/save.gif">

<?
} else {
    echo "Du har ingen breve i din indbakke :-)";
}
?>

kan i se nogle fejl, bliver det postet forkert?
Avatar billede woowii Nybegynder
23. september 2007 - 16:40 #8
Hvor har du $show['username'] fra? Desuden skal du jo have en submit knap af en art som sender brugeren til næste side - hvordan vil du ellers videreføre forms? Derudover skal du jo også skifte $mailid ud med, ja, mailen's id - at indsætte $mailid i HTML giver jo ikke meget.
<input type='checkbox' name='<?php echo $vis['id']; ?>' />
Avatar billede kwudo Nybegynder
23. september 2007 - 17:13 #9
her er hele filen, så kan du os se hvor $show[username] er fra:

<?
session_start();
if(isset($_SESSION[username]) AND isset($_SESSION[password])) {

include("../../../inc/cfg.php");

$load = mysql_query("SELECT * FROM user WHERE username = '$_SESSION[username]'") or die(mysql_error());
$show = mysql_fetch_array($load);
?>

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Indbakke</title>
<link rel="stylesheet" href="../../stylesheet/standard.css" type="text/css" />
</head>

<body>
<?
if($_GET[ac] == "del") {

if($_GET[delete] == "yes") {

if(isset($_POST["delete"])) {
$idrows = implode(",", $_POST["delete"]);

$sql = "UPDATE post_beskeder SET del = 'yes' WHERE id IN(". $idrows .") AND modt = '". $show["username"] ."'";

mysql_query($sql);

}
}
}

$hent = mysql_query("SELECT * FROM post_beskeder WHERE modt = '$show[username]' AND mappe = 'std' AND del = 'no' ORDER BY id DESC") or die(mysql_error());
if(mysql_num_rows($hent)) {
while($vis = mysql_fetch_array($hent)) {

?>

<table border="0" width="100%">
    <tr>
        <td width="3%"><? if($vis[status] == "unread") { ?> <img src="pics/unread.gif"> <? } else { ?> <img src="pics/read.gif"> <? } ?></td>
        <td width="4%">
        <p align="center"><form action="indbakke.php?ac=del" method="post"><input class="noborderinput" type='checkbox' name='delete[]' value='<? echo $vis[id]; ?>' /></td>
        <td width="909"><a href="vis_brev.php?id=<? echo $vis[id]; ?>"><b><? echo $vis[emne]; ?></b></a> - <? echo $vis[dato]; ?>, klokken <? echo $vis[klok]; ?></td>
        <td width="3%"><b>Afs.:</b></td>
        <td width="16%" align="right"><? echo $vis[afs]; ?></td>
    </tr>
</table>

<?
}
?>
<br><br><br>
<input type="submit" value="Slet markerede"></form> <img src="pics/save.gif">

<?
} else {
    echo "Du har ingen breve i din indbakke :-)";
}
?>

</body>

</html>

<?
mysql_close();
} else {
echo "Fejl!";
}
?>
Avatar billede kwudo Nybegynder
26. september 2007 - 16:12 #10
har ændret i koden så det nu virker nogenlunde, men får følgene fejl:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IN('19,18,17') AND modt = 'seje'' at line 1'

Koden:

if($_GET[ac] == "del") {

$idrows = implode(",", $_POST['post']);

mysql_query("UPDATE post_beskeder SET del = 'yes' WHERE id = IN('$idrows') AND modt = '$_SESSION[username]'") or die(mysql_error());

}
Avatar billede michael_stim Ekspert
26. september 2007 - 16:17 #11
id = IN

Enten = eller også IN ;o)
Avatar billede michael_stim Ekspert
26. september 2007 - 16:18 #12
mysql_query("UPDATE post_beskeder SET del = 'yes' WHERE id IN(".$idrows.") AND modt = '$_SESSION[username]'") or die(mysql_error());
Avatar billede kwudo Nybegynder
26. september 2007 - 16:29 #13
årh så fedt, 1000 tak :D
smid svar
Avatar billede kwudo Nybegynder
24. oktober 2009 - 17:38 #14
svar
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