webForumDet fria alternativet

Olika options, olika tabeller. Hur?

PHP

13 svar · 577 visningar · startad av tranceformer

Medlem sedan juni 2004128 inlägg
Frågan#1

Trött och stressig hjärna, så jag får be om ursäkt om det är idiotiska frågor jag kommer med, men jag ställer dom hellre i förhoppning om att någon vänlig själ kan hjälpa mig än att gräva ner mig ännu djupare.

Jag har ett formulär där man först ska välja ett alternativ i en dropdown-meny och sen fylla på med resten av uppgifterna. Beroende på vad man valde i dropdown-menyn så ska uppgifterna in i olika tabeller, hur löser man det?
Kan man köra någon if-sats som kollar vilket "value" option har, eller får man gå tillväga på något annat sätt?

Som sagt, ursäkta min stupiditet. :)

Medlem sedan juni 20006 031 inlägg
#2

Ja, du måste kolla med en if sats eller en switch sats.

switch ($_POST['mindropdown']){
case 'alt1':
    // alternativ 1 är valt, gör det du ska...
    break;
case 'alt2':
    // alternativ 2 är valt, gör det du ska...
    break;
default:
    // Inget alternativ valt som stämmer med dina case
}
Medlem sedan juni 2004128 inlägg
#3

Pedda skrev:

Ja, du måste kolla med en if sats eller en switch sats.

switch ($_POST['mindropdown']){
case 'alt1':
    // alternativ 1 är valt, gör det du ska...
    break;
case 'alt2':
    // alternativ 2 är valt, gör det du ska...
    break;
default:
    // Inget alternativ valt som stämmer med dina case
}

Vad är det jag ska skriva i 'alt1' och 'alt2'? För oavsett om jag skriver vad jag har satt för value på valet eller innehållet i den så hoppar switch-satsen till default.

Medlem sedan juni 20006 031 inlägg
#4

mindropdown byter du ut till namnet på din dropdown
alt1 och alt2 byter du ut till dina olika values

Medlem sedan juni 2004128 inlägg
#5

Då måste jag göra något annat fel.
Jag har lagt in switch-satsen i sidan som tar emot och läser in formuläret, efter att jag har lagt in resultaten i variabler. Ska den ligga någon annanstans?

Medlem sedan juni 20006 031 inlägg
#6

Posta koden för formuläret och även din switch sats så vi får se hur du har gjort, så ska vi nog hitta felet enklare.

Medlem sedan juni 2004128 inlägg
#7

Absolut. :)
Här är dropdown-menyn i formuläret

<select name="val" id="val">
<option value="ett" name="ett"> val1 </option>
<option value="tva" name="tva"> val2 </option>
</select>

Här är sidan som tar emot och skickar vidare till databasen.

$val = mysql_real_escape_string($_POST["val"]);
$namn = mysql_real_escape_string($_POST["namn"]);
$gatuadress = mysql_real_escape_string($_POST["gatuadress"]);
$postnummer = mysql_real_escape_string($_POST["postnummer"]);
$ort = mysql_real_escape_string($_POST["ort"]);
$tel = mysql_real_escape_string($_POST["tel"]);
$epost = mysql_real_escape_string($_POST["epost"]);
$meddelande = mysql_real_escape_string($_POST["meddelande"]);

switch ($_POST["val"]){
case 'ett':
    $nykund = mysql_query("INSERT INTO blabla (det här vet jag att det fungerar) 
VALUES(det här vet jag att det fungerar)")
		
or die("Kunde inte lägga till kund:<br />" . mysql_error());
break;
case 'tva':
    $nykund = mysql_query("INSERT INTO blablatva (det här vet jag att det fungerar) 
VALUES(det här vet jag att det fungerar)")
		
or die("Kunde inte lägga till kund:<br />" . mysql_error());
break;
default:
echo "<p>Du måste välja ett val.</p><br />";
}

Det är inga problem med koden som lägger till infon i tabellen, för det fungerade innan jag la in switch-satsen.

Medlem sedan juni 20006 031 inlägg
#8

Ser rätt ut, det enda jag kan tänka mig är att du skickar ditt formulär med GET istället för POST.

Medlem sedan juni 2004128 inlägg
#9

Nej tyvärr. :l

Jag har även testat att skriva

switch ($camp){...}

men det fungerade inte heller.

Medlem sedan juli 20023 617 inlägg
#10

Prova att skriva ut "val" innan switch-satsen för att se om du skickar med något överhuvudtaget.

print $_POST['val'];
Medlem sedan juni 2004128 inlägg
#11

fiddler skrev:

Prova att skriva ut "val" innan switch-satsen för att se om du skickar med något överhuvudtaget.

print $_POST['val'];

Ja den skriver ut rätt val.

Men följer value="ett" med när skriver ($_POST['val'])? Måste man inte säga till att den ska ta med "value"?
Vet inte hur sånt där fungerar tyvärr.

Medlem sedan juni 20006 031 inlägg
#12

Har formuläret metoden POST så får du värdena i variabeln $_POST['namnet']
Använder du metoden GET så får du använda $_GET['namnet'] istället. Och du ser även variablerna och värdena i adressfältet om du använder GET. (t.ex https://www.minsida.com/sidan.php?namn=värde)

Jag ser faktiskt inget fel i din kod.
Funkar inte den här switch satsen heller om du sparar den i en ny fil?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Untitled 1</title>
</head>

<body>
<?php
switch ($_POST["val"])
{
	case 'ett':
	    echo 'ett';
		break;
	case 'tva':
	    echo 'två';
		break;
	default:
		echo "<p>Du måste välja ett val.</p><br />";
}  
?>
<form method="post">
	<select name="val">
		<option value="ett">val1</option>
		<option value="tva">val2</option>
	</select>
	<input name="Button1" type="submit" value="button" />
</form>
</body>

</html>
Medlem sedan juni 2004128 inlägg
#13

Pedda skrev:

Funkar inte den här switch satsen heller om du sparar den i en ny fil?

Jo den fungerade. Blir aningens frustrerad.

Jag är väldigt tacksam över att ni hjälper mig!

Medlem sedan juni 2004128 inlägg
#14

Nu funkar det, antar att den inte hade uppdaterats som den skulle. :r

Tack så hemskt mycket för hjälpen! :)

262 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)