Avatar billede supersquirrel Nybegynder
31. januar 2008 - 23:03 Der er 21 kommentarer

flytte postbeskeder til mapper

Hejsa,

Jeg er igang med et postsystem, og i dette er der mulighed for at flytte beskederne til en mappe man selv har oprettet.

Det jeg mangler nu er at jeg skal sætte checkboxe ud for hver besked, også ved de checkboxe der er krydset af, skal de beskeder flyttes ind til en mappe.

Måden de bliver 'flyttet' på er ved at opdatere et felt i tabellen der hedder "mappeNavn".

Så hvordan gør jeg det? :)
Avatar billede jakobdo Ekspert
01. februar 2008 - 08:33 #1
Hvad er det du spørger til?
Hvordan man opdatere databasen?
Eller hvordan man laver checkboxene?
Eller hvordan man behandler de data der kommer fra checkboxene?
Avatar billede supersquirrel Nybegynder
01. februar 2008 - 14:09 #2
Altså jeg ved godt at en checkbox er <input type="chechbox">

Men hvordan jeg gør sådan at hvis flere checkboxe er krydset af (Der kommer en ud for hver postbesked), så bliver alle der der er krydset af smidt over i den valgte mappe:

[ ] Postnavn      Afsender      Modtager d.
[ ] Postnavn      Afsender      Modtager d.
[ ] Postnavn      Afsender      Modtager d.

[Scroll down med ens oprettede mapper] [*knap* Flyt valgte til mappe]
Avatar billede supersquirrel Nybegynder
01. februar 2008 - 14:19 #3
- Det ved jeg ikke hvordan man gør
Avatar billede jakobdo Ekspert
01. februar 2008 - 18:57 #4
Du kan gøre det på flere måder.
Du kan gøre sådan her:

<input type="checkbox" name="check1">
<input type="checkbox" name="check2">
<input type="checkbox" name="check3">

osv...

Det er ikke den smarteste måde.
Den smarte måde vil være:

<input type="checkbox" name="check[$beskedens_id]">
<input type="checkbox" name="check[$beskedens_id]">
<input type="checkbox" name="check[$beskedens_id]">
<input type="checkbox" name="check[$beskedens_id]">

Så kan du løbe dem igennem med:

foreach($_POST['check'] AS $check)
{
echo $check . '<br />';
}
Avatar billede supersquirrel Nybegynder
01. februar 2008 - 19:06 #5
Så kunne jeg lige forestille mig:

<input type="checkbox" name="check[$beskedens_id]">
<input type="checkbox" name="check[$beskedens_id]">
<input type="checkbox" name="check[$beskedens_id]">
<input type="checkbox" name="check[$beskedens_id]">

foreach($_POST['check'] AS $check)
{
mysql_query("UPDATE postCenter SET mappeNavn='$_POST[mappeNavn]' WHERE id='$_POST[check]'") or die("Fejl: " . mysql_error());
}
right? :))
Avatar billede jakobdo Ekspert
01. februar 2008 - 19:31 #6
Faktisk ikke helt ved siden af ja!
Test det lige i din kode...
Avatar billede supersquirrel Nybegynder
01. februar 2008 - 19:53 #7
Her er der hvor postbeskederne udskrives:
                                <?php
                                $sql = mysql_query("SELECT * FROM postCenter WHERE modtager='$_SESSION[brugernavn]' AND modtagerSlet='nej' ORDER BY id DESC") or die("Fejl: " . mysql_error());
                                while($post = mysql_fetch_assoc($sql)){
                                    if($post[status] == "ikkeSet"){
                                        $tyk = "<b>";
                                    }else{
                                        $tyk = "";
                                    }
                                ?>
                                <form method="POST" action="?p=post&action=flytPost">
                                <tr>
                                    <td width="20"><input type="checkbox" name="check[<?=$post[id]?>]">
                                    <td width="133"><?=$tyk?><a href="?p=post&action=readPost&id=<?=$post[id]?>"><?=afkort($post[emne], 20);?></a></td>
                                    <td width="133" align="center"><?=$tyk?><a href="?p=post&action=readPost&id=<?=$post[id]?>"><?=$post[dato]?></a></td>
                                    <td width="133" align="center"><?=$tyk?><a href="?p=profil&bruger=<?=$post[afsender]?>"><?=$post[afsender]?></a></td>
                                    <td width="133" align="right"><?=$tyk?><a href="?p=post&action=sendPost&id=<?=$post[id]?>">Besvar</a>, <a href="?p=post&action=gem&id=<?=$post[id]?>">gem</a>, <a href="?p=post&action=sletInd&id=<?=$post[id]?>">slet</a></td>
                                </tr>
                                <?php
                                }
                                ?>
                                <tr>
                                    <td colspan="5">&nbsp;</td>
                                </tr>
                                <tr>
                                    <td colspan="5">
                                        <select name="flytMappe">
                                        <?php
                                            $sql = mysql_query("SELECT * FROM postCenterMapper WHERE mappeEjer='$_SESSION[brugernavn]'") or die("Fejl: " . mysql_error());
                                            while($flytMappe = mysql_fetch_assoc($sql)){
                                        ?>
                                            <option value="<?=$flytmappe[mappeNavn]?>"><?=$flytMappe[mappeNavn]?></option>
                                        <?php
                                        }
                                        ?>
                                        </select>
                                        <input type="submit" value="Flyt beskeder" style="width:150px">   
                                    </form>
                                    </td>
                                </tr>

*******************************************
Og her er der hvor de skulle blive flyttet:
if($_GET[action] == "flytPost"){
    if($_POST[check] != ""){
        mysql_query("UPDATE postCenter SET mappeNavn='$_POST[flytMappe]' WHERE id='$_POST[id]'") or die("Fejl: " . mysql_error());
        print "<script>document.location.href='?p=post'</script>";
    }else{
        print "Du skal vælge postbeskeder først :)";
    }
}



Og det virker desværre ikke! :(
Avatar billede supersquirrel Nybegynder
01. februar 2008 - 20:03 #8
Rettelse*
mysql_query("UPDATE postCenter SET mappeNavn='$_POST[flytMappe]' WHERE id='$_POST[check]'") or die("Fejl: " . mysql_error());
Avatar billede jakobdo Ekspert
01. februar 2008 - 20:05 #9
På den side hvor data behandles, prøv at smid følgende i toppen:

echo '<h1>GET</h1>';
echo '<pre>';
print_r($_GET);
echo '</pre>';

echo '<h1>POST</h1>';
echo '<pre>';
print_r($_POST);
echo '</pre>';
Avatar billede supersquirrel Nybegynder
01. februar 2008 - 20:18 #10
Nu satte jeg det helt i toppen, og ikke i der hvor postbeskederne skulle opdateres. Og det gav:

GET

Array
(
    [p] => post
)

POST

Array
(
)
Avatar billede jakobdo Ekspert
01. februar 2008 - 20:24 #11
Så gør du noget formert.
Har du husket at smide <form...> og </form> omkring <input type="checkbox"....>
Avatar billede supersquirrel Nybegynder
01. februar 2008 - 20:34 #12
Jo:
                                <form method="POST" action="?p=post&action=flytPost">
                                <tr>
                                    <td width="20"><input type="checkbox" name="check[<?=$post[id]?>]">
                                    <td width="133"><?=$tyk?><a href="?p=post&action=readPost&id=<?=$post[id]?>"><?=afkort($post[emne], 20);?></a></td>
                                    <td width="133" align="center"><?=$tyk?><a href="?p=post&action=readPost&id=<?=$post[id]?>"><?=$post[dato]?></a></td>
                                    <td width="133" align="center"><?=$tyk?><a href="?p=profil&bruger=<?=$post[afsender]?>"><?=$post[afsender]?></a></td>
                                    <td width="133" align="right"><?=$tyk?><a href="?p=post&action=sendPost&id=<?=$post[id]?>">Besvar</a>, <a href="?p=post&action=gem&id=<?=$post[id]?>">gem</a>, <a href="?p=post&action=sletInd&id=<?=$post[id]?>">slet</a></td>
                                </tr>
                                <?php
                                }
                                ?>
                                <tr>
                                    <td colspan="5">&nbsp;</td>
                                </tr>
                                <tr>
                                    <td colspan="5">
                                        <select name="flytMappe">
                                        <?php
                                            $sql = mysql_query("SELECT * FROM postCenterMapper WHERE mappeEjer='$_SESSION[brugernavn]'") or die("Fejl: " . mysql_error());
                                            while($flytMappe = mysql_fetch_assoc($sql)){
                                        ?>
                                            <option value="<?=$flytmappe[mappeNavn]?>"><?=$flytMappe[mappeNavn]?></option>
                                        <?php
                                        }
                                        ?>
                                        </select>
                                        <input type="submit" value="Flyt beskeder" style="width:150px">   
                                    </form>
Avatar billede jakobdo Ekspert
01. februar 2008 - 20:37 #13
Prøv lige at fjern: ?p=post&action=flytpost
Og kun ha' : action="debug.php"

Og lad debug.php indeholde:

<?php
echo '<h1>GET</h1>';
echo '<pre>';
print_r($_GET);
echo '</pre>';

echo '<h1>POST</h1>';
echo '<pre>';
print_r($_POST);
echo '</pre>';
?>
Avatar billede supersquirrel Nybegynder
01. februar 2008 - 20:39 #14
Har ændret:
<input type="checkbox" name="check[<?=$post[id]?>]">
Til:
<input type="checkbox" name="check" value="<?=$post[id]?>">

Og det virker delvist.
Nu opdaterer den bare én af de postbeskeder man vælger
Avatar billede supersquirrel Nybegynder
01. februar 2008 - 20:46 #15
Har prøvet at ændre til det her:
if($_GET[action] == "flytPost"){
    if($_POST[check] != ""){
        foreach($_POST['check'] AS $check)
        {
            mysql_query("UPDATE postCenter SET mappeNavn='$_POST[flytMappe]' WHERE id='$_POST[check]'") or die("Fejl: " . mysql_error());
            print "<script>document.location.href='?p=post'</script>";
        }}else{
            print "Du skal vælge postbeskeder først :)";
        }
}

Men den kommer med denne fejl:
Warning: Invalid argument supplied for foreach() in /mounted-storage/home86c/sub006/sc46641-PMQM/www/community/bruger/post.php on line 72

Og de der Get og Post:
GET

Array
(
    [p] => post
    [action] => flytPost
)

POST

Array
(
    [check] => 2
    [flytMappe] => Ansøgninger
)
Avatar billede supersquirrel Nybegynder
01. februar 2008 - 20:46 #16
Linje 72: foreach($_POST['check'] AS $check)
Avatar billede jakobdo Ekspert
01. februar 2008 - 20:58 #17
Prøv evt. at ret til:

<input type="checkbox" name="check[]" value="<?=$post[id]?>">
Avatar billede supersquirrel Nybegynder
01. februar 2008 - 21:54 #18
Med den rykker den ikke nogen af dem.. Den gør ikke noget
Avatar billede jakobdo Ekspert
01. februar 2008 - 23:21 #19
Hvad udskriver koden:

<?php
echo '<h1>GET</h1>';
echo '<pre>';
print_r($_GET);
echo '</pre>';

echo '<h1>POST</h1>';
echo '<pre>';
print_r($_POST);
echo '</pre>';
?>

nu ?
Avatar billede supersquirrel Nybegynder
16. marts 2008 - 19:58 #20
Projekt opgivet ;o)

Men hvis du stadig gerne vil have point for din tid, så giv et svar
Avatar billede jakobdo Ekspert
16. marts 2008 - 21:27 #21
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