Avatar billede Asky Forsker
08. september 2023 - 22:37 Der er 10 kommentarer og
1 løsning

checkboxe

Jeg har tre checkbokse i en formular, de hedder valg[] med en tekst
Den gamle kode vil ikke rigtig virke, så jeg har lavet en ny, som måske heller ikke er helt rigtig?

if (isset($_POST['valg']))
{
    foreach($_POST['valg'] as $valg) //Kør igennem array
  $N = count($valg);
  $string_valg.= $valg." ";
    }
        echo " ";
}

i svarstrengen hedder valget " .$string_valg. "
Avatar billede ejvindh Ekspert
09. september 2023 - 16:38 #1
Nu er det jo lidt svært at vide, om det er rigtigt, når man ikke ved, hvad resultatet burde være.

Men til en start er der i hvert fald en bøf, at der mangler en åben tuborg efter foreach-sætningen.

Så undrer det mig også lidt, at du laver en echo af et mellemrum efter foreach-løkken. Og jeg forstår heller ikke, hvad du skal bruge $N variablen til.

Måske mente du noget lignende dette:
if (isset($_POST['valg']))
{
    $N = count($_POST['valg']);
    $string_valg = "";
    foreach($_POST['valg'] as $valg) {//Kør igennem array
  $N = count($valg);
  $string_valg.= $valg." ";
    }
        echo "Følgende blev valgt (".strval($N)." ialt): ".$string_valg;
}
Avatar billede Asky Forsker
09. september 2023 - 20:51 #2
Jeg har tre checkboxe hvor man kan sætte kryds i en af dem:
<div><label for="valg"> forening1</label><input type="checkbox" name="valg[]"  value= "medlem_forening1"></div>
<div><label for="valg"> forening 2</label><input type="checkbox" name="valg[]"  value= "medlem_iforening 2"></div>
<div><label for="valg">Ikke medlem</label><input type="checkbox" name="valg[]" value="medlem_nej"></div>
Det er så det, jeg skal bruge en kode til, hvor den gamle fra for mere end 10 år siden ikke virker.mere på nyere versioner af PHPMailer.
Den gamle ligner den foreslåede, men hvor der ikke er echo, men en streng i mailprogrammeringen ".$string_valg."
Måske er der en smartere mådeat lave det på.
Avatar billede ejvindh Ekspert
10. september 2023 - 13:51 #3
Muligheden for at sætte flueben i checkboxe har du jo i den html-kode, du lige har pasted ind. Hvad er det, der skal ske, når man har sat fluebenene. Og hvordan giver mit tidligere forslag et forkert resultat?

Som jeg forstår det, vil den kode, som jeg sendte dig give en streng-variabel, $string_valg, som indeholder de valgte checkboxes. Så slutter min kode med at udskrive dem, og det er vel næppe, hvad du ønsker, men hvad skal der så ske med dem i stedet?
Avatar billede Asky Forsker
10. september 2023 - 16:27 #4
Resultat fra checkboxene som $string_valg sættes ind i svarmailen i rækken af svarene $Navn, $adresse $postnummer,$by osv som medlem af_forening1 eller medlem af_forening2 eller Medlem_nej afhængig af hvor der er sat flueben.

Den gamle kode ser sådan ud, men virker tilsyneladende kun med den gamle class.PHPMailer eller også er der en anden fejl, som jeg ikke har fundet endnu.

$avalg = (isset($_POST['valg']) ? $_POST['valg'] : "");
    if(empty($avalg)){ die ("Venligst marker et af felterne medlem/ikke medlem."); }
        $N = count($avalg);
    echo " ";
   
    foreach($avalg as $valg) {
        $string_valg.= $valg." ";
        echo " ";
    }
Avatar billede ejvindh Ekspert
10. september 2023 - 18:02 #5
Hvordan ser den nye kode ud? Og hvad er det, der ikke virker lige nu? Får du nogle fejlbeskeder, eller bliver de valgte muligheder ikke sendt med?
Avatar billede Asky Forsker
10. september 2023 - 20:38 #6
Der skal lige lidt tålmodighed til. Jeg har lavet en version af formularen uden checkbokse. I den er der en fejl, som jeg lige skal finde først, derefter sætter jeg checkboksene ind og prøver dem af. Indtil nu har jeg kun fået HTML 500 fejl. De er ikke til megen hjælp.
Avatar billede Asky Forsker
10. september 2023 - 21:37 #7
Kan nogen finde fejlen her:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\SMTP;
require 'Exception.php';
require 'PHPMailer.php';
require 'SMTP.php';
$mail = new PHPMailer(true);
try {
    //Server settings
    $mail->SMTPDebug  = 2;                      //Enable verbose debug output
    $mail->isSMTP();                                            //Send using SMTP
    $mail->Host      = 'smtp.webhosting.dk';                    //Set the SMTP server to send through
    $mail->SMTPAuth  = true;                                  //Enable SMTP authentication
    $mail->Username  = 'info@domæne.dk';                    //SMTP username
    $mail->Password  = 'xxxxxx';                              //SMTP password
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;            //Enable implicit TLS encryption
    $mail->Port      = 25;   

$subject = ($_POST['subject']);  Felter I formularen
$navn = ($_POST['navn']);
$adresse = ($_POST['adresse']);
$stilling= ($_POST['stilling']);
$postnummer = ($_POST['postnummer']);
$by = ($_POST['by']);
$telefon = ($_POST['telefon']);
$email = ($_POST['email']);
$kommune = ($_POST['kommune']); //Arbejdskommune
$skole= ($_POST['skole']);//arbejdssted
$cvr = ($_POST['cvr']);
$ean = ($_POST['ean']);
//$brugerid = ($_POST['brugerid']);
$bem = ($_POST['bem']);
//Recipients
    $mail->setFrom('info@domæne.dk', 'Asky');
    $mail->addAddress('navn@domæne.dk', 'Firma');    //Add a recipient
$mail->addReplyTo('info@domæne.dk', 'Information');
    $mail -> addBCC ($email);   
  $mail->Subject = 'Bestilling';
$mail -> CharSet = "UTF-8";
$mail->Body    ="<html>
<head>
    <meta http-equiv='content-type' content='text/html; charset=utf-8'/>
<style type='text/css'>
#body{
h1 {font-family : Verdana, Tahoma, sans-serif; font-size: 16px ;  text-align : left; color:#000000;}
h2 {font-family : Verdana, Tahoma, sans-serif; font-size 14px; text-align : left;}
h3 {font-family : Verdana, Tahoma, sans-serif; font-size: 12px/1,5 ; text-align : left; color : #000000;}
h4  {font-family : Verdana, Tahoma, sans-serif; font-size: 10px/1,5 ;  text-align : left; }
p {font-family : Verdana, Tahoma, sans-serif; font-size: 12px/1,3 ;  text-align : left; color :#000000;}
}
</style>
</head>
<body>
<h1>Hej ".$navn"., <br/>Tak for din ".$subject."</h1>"."<h3> Stilling: ".$stilling."Mail: ".$email."<br/> Adresse: ".$adresse. "<br/> Postnummer: " .$postnummer. " By: " .$by."<br/> Tlf.: " .$telefon."<br/> Skole: ".$skole." Arbejdskommune: ".$kommune. " CVR: ".$cvr. " EAN: ".$ean." <br/>  Bemærkninger:  " .$bem.
"<br/> Venlig hilsen<br/></h3><h1>Firma</h1></body></html>";
  $mail->isHTML(true);
$mail->SMTPAuth  = true; // enable SMTP authentication
$mail->$Subject = 'Bestilling';
$mail -> CharSet = "UTF-8";
$mail->send();
    echo "<h3>Tilmeldingen er blevet sendt af: ".$navn."<br/>
    Om lidt modtager du en email med alle oplysninger.</h3>" ;
}
catch (Exception $e) {
    echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
?>
Avatar billede ejvindh Ekspert
11. september 2023 - 18:59 #8
Nu prøvede jeg lige at køre den, hvor jeg indtastede mine egne mail-indstillinger. Der er en enkelt bøf her:
<h1>Hej ".$navn".
Det sidste punktum skal stå før anførselstegnet:
<h1>Hej ".$navn."

Derudover er denne linje også forkert:
$mail->$Subject = 'Bestilling';
Der skal stå:
$mail->Subject = 'Bestilling';
Avatar billede Asky Forsker
11. september 2023 - 20:12 #9
Tusind tak for det. Jeg havde efter mange forsøg efterhånden stirret mig blind på den kode. Nu er formularen så uden fejl, og den virker.
Næste punkt er at putte checkboxene ind igen og se, hvad der sker?
Jeg starter med den gamle kode, som er nævnt højere oppe i tråden.
Avatar billede Asky Forsker
11. september 2023 - 20:40 #10
Det viser sig at den gamle kode virker sat ind lige over alle variablerne,så jeg nævner den lige igen:
$avalg = (isset($_POST['valg']) ? $_POST['valg'] : "");
    if(empty($avalg)){ die ("Venligst marker et af felterne medlem/ikke medlem."); }
        $N = count($avalg);
    echo " ";
 
    foreach($avalg as $valg) {
        $string_valg.= $valg." ";
        echo " ";
    }
I mailtråden står der så "Medlem: ". $string_valg."
Mange tak for hjælpen! Læg et svar, som jeg kan markere som løsning ;-)
Avatar billede ejvindh Ekspert
11. september 2023 - 20:46 #11
Godt at det virker.

Svar kommer her, men i det nuværende "Eksperten" behøver man nu ikke bede om et svar længere. Det burde være sådan, at du kan lukke en tråd, bare ved at markere én af de tidligere kommentarer :-)
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

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