Avatar billede kimox Nybegynder
12. februar 2007 - 13:53 Der er 26 kommentarer og
1 løsning

Hjælp til checkboxe

Hej eksperter.

Jeg har en kode (den nendenfor) som henter et navn og et cprnr og en checkbox med som kommer til at hedde "cprnr" og boxens value bliver personens cprnr.

Og nu har jeg fået lavet så man kan klikke så den marker alle de checboxe som er der og så kan man trykke "videre".

Nu er problemet så jeg ikke ved hvordan jeg skal få samlet alle checkboxene i en linje som ser sådan ud: $cprnr = cprnr1, cprnr2, cprnr3 osv osv. og så sende denne linje videre med til næste side.

lige pt tager den kun den sidste checkbox på siden og sender den videre.

Håber i kan hjælpe
Avatar billede kimox Nybegynder
12. februar 2007 - 13:53 #1
koden:
<form name="find_pers" method="post" action="vikar_send_persmail.php">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td class="main_oversk">V&aelig;lg personer</td>
  </tr>
</table>
<table width="100%" height="1" border="0" align="center" cellpadding="0" cellspacing="0" class="main_txt">
  <tr>
    <td align="center"><input type="radio" name="markUnMark" onClick="alterall(this.form,true)">&nbsp;Markér alle&nbsp;&nbsp;<input type="radio" checked name="markUnMark" onClick="alterall(this.form,false)">&nbsp;Fravælg alle<br>
    <input name="videre" type="submit" class="ok_input" value="Videre" />
</td>
  </tr>
  <tr>
    <td><hr size="1"></td>
  </tr>
  <tr>
    <td>   
    <?
    include("db.php");
    $seek = mysql_escape_string($_POST['seek']);
    $query = mysql_query("SELECT * FROM vlog ORDER BY NAVN");
    if(mysql_num_rows($query) > 0)
    {
echo "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" class=\"main_txt\">
  <tr>
    <td width=\"60%\"><b>Navn:</b></td>
    <td width=\"30%\"><b>Cpr-nr:</b></td>
    <td width=\"10%\"><b>V&aelig;lge:</b></td>
  </tr>
  <tr>
    <td width=\"60%\"><b>&nbsp;</b></td>
    <td width=\"30%\"><b>&nbsp;</b></td>
    <td width=\"10%\"><b>&nbsp;</b></td>
  </tr>";   
        $a = 0;
        while($row = mysql_fetch_array($query))
        {
        $a++;
        if($a%2 == 0) {
        $bgcolor = "#FFFFFF";
        } else {
        $bgcolor = "#E3E3E3";
        }
        $cprnr = $row['cprnr'];
        $navn = $row['navn'];
        $email = $row['email'];   
        $over = '#ded7c7';
            $i++;
            echo "<tr bgcolor=\"$bgcolor\" onMouseOver=\"this.bgColor='$over';\" onMouseOut=\"this.bgColor='$bgcolor';\">";
            echo "<td>$navn</td>";
            echo "<td>$cprnr</td>";
            echo "<td><center><input type=\"checkbox\" name=\"cprnr\" value=\"$cprnr\" /></center></td>";
            echo "</tr>";
        }
        echo "</table>";   
}

?>
Avatar billede jakobdo Ekspert
12. februar 2007 - 17:40 #2
Kan du forklare lidt nærmere hvad du vil have igen?
Avatar billede kimox Nybegynder
12. februar 2007 - 18:06 #3
ja jeg kan da prøve :)

Koden henter en lang række med navn og cpr nr. på personer hvor der er en checkbox ud for hvert navn som man så kan markere. Der er ligeledes lavet så man kan trykke på en knap som markere alle boxene ud for brugernes navn.

Det den så skal gører er at sende cpr nummeret ved de markede checkboxe videre til næste side, i en array f.eks..

Fordi på den næste side der er en form for postsystem, som lige nu kun sender til en person afgangen, men som jeg skal se om jeg kan få lavet om til at den kan sende til alle de markerede cpr nr.
Avatar billede jakobdo Ekspert
12. februar 2007 - 18:46 #4
Du kunne lave dit array i stil med:
<input type="text" name="cpr[]" />
Så har du cpr i et array $_POST['cpr']
Avatar billede kimox Nybegynder
12. februar 2007 - 18:58 #5
dvs linjen skal se sådan ud:

echo "<td><center><input type=\"checkbox\" name=\"cprnr\" value=\"$cprnr[]\" /></center></td>";

?
Avatar billede jakobdo Ekspert
12. februar 2007 - 19:17 #6
Nej, name skal være cprnr[] og så value="'.$cprnr.'"
Avatar billede kimox Nybegynder
12. februar 2007 - 19:29 #7
okay så ser det sådan ud:

echo "<td><center><input type=\"checkbox\" name=\"cprnr[]\" value="'.$cprnr.'" /></center></td>";

skal det kode den så skal bruges i, ind i en array kode?

koden ser sådan ud:

<?
if(isset($_POST['send']))
    {
require "db.php";
$cprnr = $_POST['cprnr'];
$sql = mysql_query("SELECT * FROM vlog WHERE cprnr = $cprnr");
$row2 = mysql_fetch_array($sql);
$email = $row2['email'];
$fraemail = "post@xxx.dk";
$emne = $_POST['emne'];
$tekst = $_POST['tekst'];
$franavn = $_POST['navn'];
$tekst = $_POST['tekst'];
$dato = date("d/m-Y H:i:s");
$laest = "1";
$subject = "Post modtaget fra xxx.dk";
$message = "Der er modtaget post fra xxx.dk\n Log på for at tjekke post. \n\n www.logind.xxx.dk/";
$to      = $email;
$mailHeader = "From: xxx.dk <robot@xxx.dk>\r\n";

mail($to, $subject, $message, $mailHeader);

mysql_query("INSERT INTO vpost (cprnr, tekst, dato, laest, emne, franavn, email) VALUES ('$cprnr','$tekst', '$dato', '$laest', '$emne','$navn', '$fraemail')") or die(mysql_error());
echo "<table width=\"283\"  border=\"1\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" bordercolor=\"#000000\" bgcolor=\"#E3E3E3\" class=\"main_txt\">
        <tr>
          <td width=\"283\" ><div align=\"center\">Meddelsen blev sendt.</div></td>
        </tr>
      </table><br>";
}
Avatar billede jakobdo Ekspert
12. februar 2007 - 20:03 #8
Det kommer helt an på hvordan du ønsker anvende cprnumrene.
Avatar billede kimox Nybegynder
12. februar 2007 - 20:33 #9
cpr nummeret skal bruges til 2 ting:

1: den bruger det i en WHERE ($sql = mysql_query("SELECT * FROM vlog WHERE cprnr = $cprnr");) for at finde den email som er forbundet til det cpr nr. der er valgt, så der kan sendes en mail til dem at der er modtaget post til dem på systemet ($to      = $email;)

2: Den indsættes her (mysql_query("INSERT INTO vpost (cprnr, tekst, dato, laest, emne, franavn, email) VALUES ('$cprnr','$tekst', '$dato', '$laest', '$emne','$navn', '$fraemail')") ) for at systemet kan se hvem man skriver posten til.

:)
Avatar billede jakobdo Ekspert
12. februar 2007 - 20:48 #10
Så skal du muligvis lave det i en foreach løkke.
foreach($_POST['cprnr'] AS $cpr)
{
//Find email som matcher CPRnummeret i $cpr.
/Send email...
}
Avatar billede kimox Nybegynder
12. februar 2007 - 21:11 #11
okay så noget der ligner dette ville ikke være meget forkert:

<?
if(isset($_POST['send']))
    {
foreach($_POST['cprnr'] AS $cpr)
{
require "db.php";
$cprnr = $_POST['cprnr'];
$sql = mysql_query("SELECT * FROM vlog WHERE cprnr = $cpr");
$row2 = mysql_fetch_array($sql);
$email = $row2['email'];
$fraemail = "post@xxx.dk";
$emne = $_POST['emne'];
$tekst = $_POST['tekst'];
$franavn = $_POST['navn'];
$tekst = $_POST['tekst'];
$dato = date("d/m-Y H:i:s");
$laest = "1";
$subject = "Post modtaget fra xxx.dk";
$message = "Der er modtaget post fra xxx.dk\n Log på for at tjekke post. \n\n www.logind.xxx.dk/";
$to      = $email;
$mailHeader = "From: xxx.dk <robot@xxx.dk>\r\n";

mail($to, $subject, $message, $mailHeader);

mysql_query("INSERT INTO vpost (cprnr, tekst, dato, laest, emne, franavn, email) VALUES ('$cpr','$tekst', '$dato', '$laest', '$emne','$navn', '$fraemail')") or die(mysql_error());
echo "<table width=\"283\"  border=\"1\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" bordercolor=\"#000000\" bgcolor=\"#E3E3E3\" class=\"main_txt\">
        <tr>
          <td width=\"283\" ><div align=\"center\">Meddelsen blev sendt.</div></td>
        </tr>
      </table><br>";
}
}
Avatar billede jakobdo Ekspert
12. februar 2007 - 21:19 #12
Det burde faktisk gøre det ja! :o)
Avatar billede kimox Nybegynder
12. februar 2007 - 21:31 #13
top dollar :D

Jeg tester det lige i morgen tidlig :) så skal jeg nok lige give besked.

indtil videre mange tak for hjælpen
Avatar billede jakobdo Ekspert
12. februar 2007 - 21:34 #14
Det var så lidt!
Avatar billede kimox Nybegynder
13. februar 2007 - 10:48 #15
hej, den giver mig sådan en fejl her:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource...

Od det må være denne linje ($sql = mysql_query("SELECT * FROM vlog WHERE cprnr = $cpr");)

men kan ikke se hvad der skulle være galt?
Avatar billede jakobdo Ekspert
13. februar 2007 - 10:59 #16
Der skal du nok bruge:
$sql = mysql_query("SELECT * FROM vlog WHERE cprnr = '$cpr' LIMIT 1");

Ligeledes bør du lave lidt kontrol på af $cpr, at det rent faktisk er et CPR nummer og ikke forsøg på SQL injections.
Avatar billede kimox Nybegynder
13. februar 2007 - 11:37 #17
Hmm ja nu siger den:

Warning: Invalid argument supplied for foreach()

og det er denne kode jeg har inde ligenu:

if(isset($_POST['send']))
    {
foreach($_POST['cprnr'] AS $cpnr)
{
require "db.php";
$sql = mysql_query("SELECT * FROM vlogto WHERE cprnr = '$cpnr' LIMIT 1");
$row2 = mysql_fetch_array($sql);
$email = $row2['email'];
$fraemail = "post@xxx.dk";
$emne = $_POST['emne'];
$tekst = $_POST['tekst'];
$franavn = $_POST['navn'];
$tekst = $_POST['tekst'];
$dato = date("d/m-Y H:i:s");
$laest = "1";
$subject = "Post modtaget fra xxx.dk";
$message = "Der er modtaget post fra xxx.dk\n Log på for at tjekke post. \n\n www.logind.xxx.dk/";
$to      = $email;
$mailHeader = "From: xxx.dk <robot@xxx.dk>\r\n";

mail($to, $subject, $message, $mailHeader);

mysql_query("INSERT INTO vpost (cprnr, tekst, dato, laest, emne, franavn, email) VALUES ('$cpnr','$tekst', '$dato', '$laest', '$emne','$navn', '$fraemail')") or die(mysql_error());
echo "<table width=\"283\"  border=\"1\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" bordercolor=\"#000000\" bgcolor=\"#E3E3E3\" class=\"main_txt\">
        <tr>
          <td width=\"283\" ><div align=\"center\">Meddelsen blev sendt.</div></td>
        </tr>
      </table><br>";
}
}
Avatar billede jakobdo Ekspert
13. februar 2007 - 11:52 #18
Hvad indeholder: $_POST['cprnr'] ??
Avatar billede kimox Nybegynder
13. februar 2007 - 11:58 #19
den indenholder cpr nummeret på de personer man har valgt på den forhenværende side. lige nu mens jeg tester den indenholder den 1111111111 og 2222222222 og 3333333333

som der står i vlogto under cprnr der
Avatar billede jakobdo Ekspert
13. februar 2007 - 12:12 #20
Men så burde den jo ikke melde fejl i Warning: Invalid argument supplied for foreach()
Avatar billede kimox Nybegynder
13. februar 2007 - 12:16 #21
nej altså når jeg skriver den sådan her:

foreach($_POST['cprnr'] AS $cprnum)
{
echo $cprnum;
}

så skriver den 111111111122222222223333333333

Men den kommer først med fejlen når jeg har indtastet den besked der skal sendes, det er ligesom om den mister cpr nummererne
Avatar billede kimox Nybegynder
13. februar 2007 - 12:17 #22
altså at den mister den når jeg trykker på send
Avatar billede kimox Nybegynder
13. februar 2007 - 12:27 #23
Skal den lave lave noget i min form som ligner dette:

foreach($_POST['cprnr'] AS $cprnum)
{
echo "<input name="cprnum[]" type="text" class="input" value="$cprnum" />";
}

og så funktionen ser sådan ud:
if(isset($_POST['send']))
    {
foreach($_POST['cprnum'] AS $cpnr)
{
require "db.php";
$sql = mysql_query("SELECT * FROM vlogto WHERE cprnr = '$cpnr' LIMIT 1");
$row2 = mysql_fetch_array($sql);
$email = $row2['email'];
$fraemail = "post@xxx.dk";
$emne = $_POST['emne'];
$tekst = $_POST['tekst'];
$franavn = $_POST['navn'];
$tekst = $_POST['tekst'];
$dato = date("d/m-Y H:i:s");
$laest = "1";
$subject = "Post modtaget fra xxx.dk";
$message = "Der er modtaget post fra xxx.dk\n Log på for at tjekke post. \n\n www.logind.xxx.dk/";
$to      = $email;
$mailHeader = "From: xxx.dk <robot@xxx.dk>\r\n";

mail($to, $subject, $message, $mailHeader);

mysql_query("INSERT INTO vpost (cprnr, tekst, dato, laest, emne, franavn, email) VALUES ('$cpnr','$tekst', '$dato', '$laest', '$emne','$navn', '$fraemail')") or die(mysql_error());
echo "<table width=\"283\"  border=\"1\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" bordercolor=\"#000000\" bgcolor=\"#E3E3E3\" class=\"main_txt\">
        <tr>
          <td width=\"283\" ><div align=\"center\">Meddelsen blev sendt.</div></td>
        </tr>
      </table><br>";
}
}
Avatar billede kimox Nybegynder
13. februar 2007 - 12:32 #24
Yeeah det var det som manglede :D nu virker det kanon.

Smider du et svar? tusind tak for hjælpen - du fik mine øjne op for hvordan det skulle gøres hehe
Avatar billede jakobdo Ekspert
13. februar 2007 - 13:11 #25
Super.
Du får lige et svar!
Avatar billede kimox Nybegynder
13. februar 2007 - 13:22 #26
sådan. - endnu engang tak.

-lukket-
Avatar billede jakobdo Ekspert
13. februar 2007 - 14:30 #27
takker for point.
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