Avatar billede wiper Nybegynder
09. august 2007 - 09:37 Der er 46 kommentarer og
1 løsning

hvordan fanges variabel

Hej

Allerførst skal siges at mit kendskab til php er meget lille.

Jeg har sider hvor der er et id f.eks side.php?id=58  - denne side er samtidig et produkt og jeg vil gerne føre den variabel videre på en anden side i nogle radio knapper som afhængigt af hvilken produktside brugeren kommer fra er markeret. 

f.eks.
if id=58 så er radio1 button markeret
if id=59 så er radio2 button markeret

osv osv.

hvordan gør jeg dette ?
Avatar billede nielle Nybegynder
09. august 2007 - 09:48 #1
if ($_GET("id") == "58")
echo "så er radio1 button markeret";
Avatar billede nielle Nybegynder
09. august 2007 - 09:50 #2
Eller med en switch

switch ($_GET("id"))
{
    case "58":
        echo "så er radio1 button markeret";
        break;
    case "59":
        echo "så er radio2 button markeret";
        break;
    default:
        echo "Ukendt id";
}
Avatar billede wiper Nybegynder
09. august 2007 - 10:00 #3
får fejl

Fatal error: Call to undefined function: array()
Avatar billede nielle Nybegynder
09. august 2007 - 10:09 #4
Min fejl: $_GET("id") rettes til $_GET["id"]
Avatar billede wiper Nybegynder
09. august 2007 - 10:14 #5
Parse error: parse error, unexpected T_CASE
Avatar billede nielle Nybegynder
09. august 2007 - 10:19 #6
Hvordan ser din kode ud?
Avatar billede wiper Nybegynder
09. august 2007 - 10:21 #7
jeg har flg.

if ($_GET[id"] == "58")
$SendMail .= "<input type='radio' value='produktnavn' checked name='OrderType' ID='Type1'><b>produktnavn</b><br>";


siden returner $SendMail
Avatar billede nielle Nybegynder
09. august 2007 - 10:26 #8
Den kode vil ellers ikke kunne give en T_CASE fejl. Har du ikke ogse en switch på din side?
Avatar billede nielle Nybegynder
09. august 2007 - 10:27 #9
Iøvrigt skal du rette:

if ($_GET[id"] == "58")

- til:

if ($_GET["id"] == "58")
Avatar billede wiper Nybegynder
09. august 2007 - 10:35 #10
den er rettet... får heller ikke nogen parse fejl - men den pågældende radio button er ikke markeret... der er ingen andre switche i siden.

sektionen af kode ser sådan her ud:

if ($_GET["id"] == "58")
$SendMail .= "<input type='radio' value='produkt1' checked name='OrderType' ID='Type1'><b>produkt1</b><br>";

$SendMail .= "<input type='radio' value='produkt2' name='OrderType' ID='Radio11'><b>produkt2</b><br>";
$SendMail .= "<input type='radio' value='produkt3' name='OrderType' ID='Radio12'><b>produkt3</b><br>";
$SendMail .= "<input type='radio' value='produkt4' name='OrderType' ID='Radio12'><b>produkt4</b><
Avatar billede nielle Nybegynder
09. august 2007 - 10:41 #11
Kommer den så overhovedet med i mailen? Du mangler jo en else-del.
Avatar billede jakobdo Ekspert
09. august 2007 - 10:44 #12
Var det ikke en ide at vise hele din kode måske?
Avatar billede wiper Nybegynder
09. august 2007 - 11:01 #13
jo selvfølgelig

///////////////////////////////////
$subject_array = array();
$recipient_array = array();
///////////////////////////////////

$recipient_array["modtager1"] = "min@mail.dk";
$recipient_array["modtager2"] = "min2@mail.dk";

if ($_POST['send'] == 'true') {
    $to = $_POST['to'];
    $name = $_POST['name'];
    $cpr = $_POST['cpr'];
    $lb = $_POST['lb'];
    $adresse = $_POST['adresse'];
    $postnummer = $_POST['postnummer'];
    $by = $_POST['by'];
    $email = $_POST['email'];
    $the_subject = $_POST['subject'];
    $OrderType = $_POST['OrderType'];
    $OrderType2 = $_POST['OrderType2'];
    $telefon = $_POST['telefon'];
    $message = $_POST['message'];
    if (($name == '') OR ($email == '')) {
$SendMail .= "<div class='red''>";
$SendMail .= "<img src='http://www.mitdomaene.dk/images/obs.jpg' alt='Advarsel' />&nbsp;&nbsp;Et af de obligatoriske felter er ikke udfyldt.<br />";
$SendMail .= "</div>";
    }
        elseif (ereg('([[:alnum:].-]+)(@[[:alnum:].-]+.+)', $email)) {
$the_subject = "Bestilling";
$to = "min@mail.dk"; 
$recipient = $to;
    $subject = $the_subject;
    $additional_headers = "Fra: $email";
    $body = "Navn: $name \rAdresse: $adresse \rPostnummer: $postnummer \rBy: $by \rEmail: $email  \rTelefon: $telefon \rProdukt: $OrderType\rOrdretype: $OrderType2 \rBesked: $message";

$additional_headers = 'From: webmaster@mitdomaene.dk' . "\r\n" .
  'Reply-To: webmaster@domaene.dk' . "\r\n" .
  'X-Mailer: PHP/' . phpversion();
if (mail($recipient, $subject, $body, $additional_headers)) {
$SendMail .= "<div class='red'>";
$SendMail .= "Din bestilling er afsendt!";
$SendMail .= "</div>";
    $name="";
    $adresse="";
    $postnummer="";
    $by="";
    $email="";
    $OrderType = "";
    $OrderType2 = "";
    $telefon="";
    $message="";

    } else {
$SendMail .= "<div class='red'>";
$SendMail .= "Der er desværre opstået en fejl i afsendelsen! Prøv venligst igen.<br>";
$SendMail .= "</div>";
        $send = "false";
    }
    } else {
$SendMail .= "<div class='red'>";
$SendMail .= "Email adressen der er angivet  (".$email.") er ikke en korrekt email adresse. Prøv venligst igen.<br>";
$SendMail .= "</div>";
        $send = "false";
    }

    }

$SendMail .= "<div class = 'emailform'>";
$SendMail .= "<form name = 'EmailForm' method = 'post' action=''>";
$SendMail .= "<input type='hidden' name='send' value='true'>";
$SendMail .= "Benyt nedenstående formular til at foretage bestilling<hr>";
$SendMail .= "Dit navn:<br>";
$SendMail .= "<div class='red'><input type='text' size='40' name='name' value=".$name.">*</div>";
$SendMail .= "Adresse:<div class='red'><input type='text' size='40' name='adresse' value=".$adresse.">*</div>";
$SendMail .= "Postnummer og By:<div class='red'><input type='text' size='4' name='postnummer' value=".$postnummer.">&nbsp;&nbsp;<input type='text' name='by' value=".$by.">*</div>";
$SendMail .= "Din e-mail adresse:<br>";
$SendMail .= "<div class='red'><input type='text' name='email' size='40' value=".$email.">*</div><div class='sub'>Indtast en gyldig e-mail adresse som De kan modtage e-mail på.</div>";
$Sendmail .= "<p class='sub'>";

$SendMail .= "Telefon:<br>";
$SendMail .= "<input type='text' name='telefon' size='10' value=".$telefon."><br><hr>Vælg produkttype<br><br>";


if ($_GET["id"] == "70")
$SendMail .= "<input type='radio' value='produkt1' checked name='OrderType' ID='Type1'><b>produkt1</b><br>";

$SendMail .= "<input type='radio' value='produkt2' name='OrderType' ID='Radio11'><b>produkt2</b><br>";

$SendMail .= "<input type='radio' value='produkt3' name='OrderType' ID='Radio12'><b>produkt3</b><br>";

$SendMail .= "<input type='radio' value='produkt4' name='OrderType' ID='Radio12'><b>produkt4</b><br><hr>";

$SendMail .= "<br>Evt. bemærkninger:<br>";
$SendMail .= "<textarea cols='40' rows='5' name='message'>".$message."</textarea><br><br>";
$SendMail .= "<input type='submit' class='button' value='Send'>&nbsp;&nbsp;";
$SendMail .= "<input type='reset' class='button'  value='Slet'>";
$SendMail .= "</form>";
$SendMail .= "</div>";

return $SendMail;
Avatar billede nielle Nybegynder
09. august 2007 - 11:08 #14
Er du sikker på at dit kaldende url er på formen: side.php?id=58

Alle andre steder bruger du jo $_POST som om at det er sendt via en form med method="post".

Prøv med:

if ($_POST["id"] == "70")
    $SendMail .= "<input type='radio' value='produkt1' checked name='OrderType' ID='Type1'><b>produkt1</b><br>";
else
    $SendMail .= "<input type='radio' value='produkt1' name='OrderType' ID='Type1'><b>produkt1</b><br>";
Avatar billede wiper Nybegynder
09. august 2007 - 11:17 #15
har prøvet med post - men det hjælper ikke...

jeg kommer fra f.eks. side.php?id=70 der har link til siden: side.php?id=90 som indeholder formularen
Avatar billede nielle Nybegynder
09. august 2007 - 11:20 #16
Hvordan ser den side ud hvor selve linket findes?
Avatar billede wiper Nybegynder
09. august 2007 - 11:30 #17
det er blot en standard link der går til side?id=90
Avatar billede nielle Nybegynder
09. august 2007 - 11:36 #18
Hvorfor bruger du så $_POST[...] så mange steder, hvri der ikke er en form inde i billedet?
Avatar billede jakobdo Ekspert
09. august 2007 - 11:41 #19
Så ved alle jo, at der skal bruge: $_GET
Sådan er det bare! :o)
Avatar billede nielle Nybegynder
09. august 2007 - 12:21 #20
Prøv dette:

if ($_GET["id"] == "70")
    $SendMailTemp = "<input type='radio' value='produkt1' checked name='OrderType' ID='Type1'><b>produkt1</b><br>";
else
    $SendMailTemp = "<input type='radio' value='produkt1' name='OrderType' ID='Type1'><b>produkt1</b><br>";

echo "DEBUG: $SendMailTemp<br>";

Hvad får du udskrevet?
Avatar billede wiper Nybegynder
09. august 2007 - 12:29 #21
hvis jeg indsætter det, så får jeg: DEBUG: produkt1  (sammen med en radio button der ikke er markeret, og jeg kommer fra side.php?id=70)

side.php?id=90 indeholder form...
Avatar billede nielle Nybegynder
09. august 2007 - 12:39 #22
Prøv lige at lav en Vis Kilde og se hvad der står gemt udover DEBUG: produkt1
Avatar billede wiper Nybegynder
09. august 2007 - 12:45 #23
DEBUG: <input type='radio' value='produkt1' name='OrderType' ID='Type1'><b>produkt1</b><br><br>
Avatar billede nielle Nybegynder
09. august 2007 - 12:49 #24
Og det er linket side.php?id=70 du klikker på? Mystiskæææ
Avatar billede wiper Nybegynder
09. august 2007 - 12:53 #25
jeps...
Avatar billede jakobdo Ekspert
09. august 2007 - 12:57 #26
Har du et link til den side du leger med?
Avatar billede wiper Nybegynder
09. august 2007 - 13:02 #27
nope...
Avatar billede nielle Nybegynder
09. august 2007 - 13:12 #28
Prøv at indsætte denne debug udskrivning:

echo "DEBUG: [" . $_GET["id"] . "]";
Avatar billede jakobdo Ekspert
09. august 2007 - 13:20 #29
Eller en jakobdo klassiker:

echo '<h5>GET</h5>';
echo '<pre>';
print_r($_GET);
echo '</pre>';
echo '<h5>POST</h5>';
echo '<pre>';
print_r($_POST);
echo '</pre>';

Smid det lige efter <? eller <?php i toppen af din kode.
Avatar billede wiper Nybegynder
09. august 2007 - 13:34 #30
neille: fra klik på linken fra side.php?id=70  får jeg på siden med id=90:  DEBUG: [90] 

jakobdo:  her får jeg

GET
Array
(
    [id] => 90
)

POST
Array
(
)
Avatar billede nielle Nybegynder
09. august 2007 - 13:38 #31
"neille: fra klik på linken fra side.php?id=70  får jeg på siden med id=90:  DEBUG: [90]"

Beklager, men jeg forstår ikke rigtig formuleringen?
Avatar billede wiper Nybegynder
09. august 2007 - 13:44 #32
jeg har produktet på side.php?id=70 hvor jeg så klikker på linken (der er link til side.php?id=90) - siden med id=90 vises med: DEBUG:[90]
Avatar billede jakobdo Ekspert
09. august 2007 - 13:57 #33
Når du klikker på linket: side.php?id=90 og den så viser 90, så virker det jo rigtigt.
Eller det er måske ikke det du ønsker?
Avatar billede wiper Nybegynder
09. august 2007 - 14:07 #34
jo men det fungerer ikke ifb. med den radio buttons der skal være markeret....har 4 radio buttons der alt afhængig af hvilken side man kommer fra skal markeres

hvis ($_GET["id"] == "90") - skal radio button 1 være markeret
hvis ($_GET["id"] == "92") - skal radio button 2 være markeret
hvis ($_GET["id"] == "94") - skal radio button 3 være markeret
hvis ($_GET["id"] == "96") - skal radio button 4 være markeret
Avatar billede wiper Nybegynder
09. august 2007 - 14:09 #35
og det er jo siden der indeholder formularen der udskrives med debug og ikke den side's id man kommer fra...så det fungerer ikke...
Avatar billede jakobdo Ekspert
09. august 2007 - 14:26 #36
Test:
$SendMail .= "<input type='radio' value='produkt1' ";
$SendMail .= ($_GET['id'] == 90)?" checked='checked'":"";
$SendMail .= "name='OrderType' ID='Type1'><b>produkt1</b><br>";
$SendMail .= "<input type='radio' value='produkt1' ";
$SendMail .= ($_GET['id'] == 92)?" checked='checked'":"";
$SendMail .= "name='OrderType' ID='Type2'><b>produkt2</b><br>";
$SendMail .= "<input type='radio' value='produkt1' ";
$SendMail .= ($_GET['id'] == 94)?" checked='checked'":"";
$SendMail .= "name='OrderType' ID='Type3'><b>produkt3</b><br>";
$SendMail .= "<input type='radio' value='produkt1' ";
$SendMail .= ($_GET['id'] == 96)?" checked='checked'":"";
$SendMail .= "name='OrderType' ID='Type4'><b>produkt4</b><br>";
Avatar billede wiper Nybegynder
09. august 2007 - 14:55 #37
funker ikke... måske jeg kan lægge en anden værdi ind i linken på siden den kommer fra som så hentes ind i siden med id 90
Avatar billede wiper Nybegynder
09. august 2007 - 14:57 #38
id bruger den vel til at indlæse siden fra DB'en ...
Avatar billede jakobdo Ekspert
09. august 2007 - 15:00 #39
Hvis du også bruge den til det, så kunne det da være en god ide at bruge endnu en variabel ja! :o)
Avatar billede wiper Nybegynder
09. august 2007 - 18:34 #40
så det vil sige at på produktsiden skal jeg angive:
side.php?id=70?prod=70

og så på formular siden lave:

$SendMail .= ($_GET['prod'] == 70)?" checked='checked'":"";

er det korrekt ?
Avatar billede nielle Nybegynder
09. august 2007 - 18:47 #41
Kun ?-tegn den 1. gang:

side.php?id=70&prod=70

Ellers er det rigtigt. :^)
Avatar billede wiper Nybegynder
09. august 2007 - 19:38 #42
suverent - så virker det - tusind tak for hjælpen !!

kan i dele point ?
Avatar billede nielle Nybegynder
09. august 2007 - 19:45 #43
Sure :^)
Avatar billede jakobdo Ekspert
09. august 2007 - 19:50 #44
Jeg tror nielle har fortjent dem.
Jeg kørte bare med på sidevognen...
Avatar billede wiper Nybegynder
09. august 2007 - 20:07 #45
ok så.. men tak for hjælpen til jer begge.... ;0)
Avatar billede nielle Nybegynder
09. august 2007 - 21:09 #46
Jeg siger tak, men synes nok at 200 point er en smule i overkanten for spørgsmålets sværhedsgrad. :^)
Avatar billede wiper Nybegynder
10. august 2007 - 05:10 #47
det var svært for mig ...;0)
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



IT-JOB