webForumDet fria alternativet

Problem med if satser.

PHPur PHP

14 svar · 371 visningar · startad av jiggan

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

Ja, jag har fått ett litet problem med mina if satser. De är till för att kontrollera ett par formulär innan informationen sparas.
Ibland fungerar dem men ibland verkar det som att dem bara hoppas över på något vis. De ser ut så här:

if ($_POST['y'] == "0")
{
	header("Location:index.php?section=regga&y=fel");
}
if ($_POST['m'] == "0")
{
	header("Location:index.php?section=regga&m=fel");
}
if ($_POST['d'] == "0")
{
	header("Location:index.php?section=regga&d=fel");
}
if ($_POST['lan'] == "0")
{
	header("Location:index.php?section=regga&lan=fel");
}

Någon som vet varför det inte fungerar ibland?

Medlem sedan okt. 2004392 inlägg
#2

1. Vad är dem för fält?
2. Vilka fungerar vilka inte....
3. Felmeddelande?
4. Testa med:

if (strlen($_POST['y']) == 0)
{
    header("Location:index.php?section=regga&y=fel");
}
if (strlen($_POST['m']) == 0)
{
    header("Location:index.php?section=regga&m=fel");
}
if (strlen($_POST['d']) == 0)
{
    header("Location:index.php?section=regga&d=fel");
}
if (strlen($_POST['lan']) == 0)
{
    header("Location:index.php?section=regga&lan=fel");
}

Det borde kanske funka!

Medlem sedan mars 2003429 inlägg
#3

jag håller nog med snakes... just nu kolla scriptet ifall man skrivit 0 inte ifall den är "noll"...
Om du upplever problem med att den fortsätter och reggar datan i databasen kan du ju köra en exit för att vara på säkra sidan att den inte utför något mer...

Medlem sedan juni 2003175 inlägg
#4

Asså det är ett sånt är Select formulär där value = 0 om man inte har ändrat. Kotrollen funkar ibland och man kommer tillbaka och får ett felmeddelande men inte alltid.

Medlem sedan okt. 2004392 inlägg
#5

Testa att byta 0 till nåt annat, typ "noll"...

if ($_POST['y']] == "noll")
{
    header("Location:index.php?section=regga&y=fel");
}
if ($_POST['m'] == "noll")
{
    header("Location:index.php?section=regga&m=fel");
}
if ($_POST['d'] == "noll")
{
    header("Location:index.php?section=regga&d=fel");
}
if ($_POST['lan'] == "noll")
{
    header("Location:index.php?section=regga&lan=fel");
}
Medlem sedan juni 2003175 inlägg
#6

Snakes snackar du i nattmössan nu eller? :P
<select name="y">
<option value="0">År
<option value="1990">1990
Ja osv...Så default blir det ju 0 om man inte ändrat. Men varför fungerar det ibland?

Medlem sedan okt. 2004392 inlägg
#7

byt
<option value="0">År
mot
<option value="noll">År

och kör scriptet där uppe

Medlem sedan juni 2003175 inlägg
#8

Funkar tyvärr inte ändå. Några andra tips?

Medlem sedan okt. 2004392 inlägg
#9

Alltså hur menar du funkar inte?.... ge gärna länk....

Menar du kanske att den säger att bara 1 är fel eller hur menar du?

Medlem sedan juni 2003175 inlägg
#10

Ska vi se nu...Hela koden som ska spara sakerna ser ut så här:

if ($_POST['pass'] != $_POST['pass2'])
{
	header("Location:index.php?section=regga&pass=fel");
}
if ($_POST['y'] == "noll")
{
	header("Location:index.php?section=regga&y=fel");
}
if ($_POST['m'] == "noll")
{
	header("Location:index.php?section=regga&m=fel");
}
if ($_POST['d'] == "noll")
{
	header("Location:index.php?section=regga&d=fel");
}
if ($_POST['lan'] == "noll")
{
	header("Location:index.php?section=regga&lan=fel");
}
else
{
	$link = mysql_connect("XXXXX", "XXXXX", "XXXX");
	mysql_select_db("free58819", $link);
	$reg_y = date('Y');
	$reg_m = date('m');
	$reg_d = date('d');
	$sql = "SELECT nick FROM members WHERE nick = '". $_POST['nick'] ."'";
	$resultat = mysql_query($sql, $link) or die (mysql_error());
	if(mysql_num_rows($resultat)==0)
	{
		$insert="INSERT INTO members (nick, pass, fnamn, enamn, y, m, d, lan, epost, visa_epost, reg_y, reg_m, reg_d) VALUES
		('" . $_POST['nick'] ."', '" . $_POST['pass'] ."', '" . $_POST['fnamn'] ."', '" . $_POST['enamn'] ."',
		 '" . $_POST['y'] ."', '" . $_POST['m'] ."', '" . $_POST['d'] ."', '" . $_POST['lan'] ."',
		  '" . $_POST['epost'] ."', '" . $_POST['visa_epost'] . "', '" . $reg_y . "', '" . $reg_m ."', '" . $reg_d . "')";
		$resultat2 = mysql_query($insert, $link) or die (mysql_error());
		header("Location: index.php?section=regga&reg=true");
	}
	else
	{
		header("Location: index.php?section=regga&anv=fel");
	}
}

Kontrollen av lösenorden fungerar alltid, ibland också någon av de andra if satserna, men ibland verkar den hoppa över dem och gå direkt dit där det sparas.

Medlem sedan okt. 2004392 inlägg
#11

Testa att skriva År, värdelöst <option>År</option>

if (empty($_POST['y']))
{
    header("Location:index.php?section=regga&y=fel");
    exit;
}
if (empty($_POST['m']))
{
    header("Location:index.php?section=regga&m=fel");
    exit;
}
if (empty($_POST['d']))
{
    header("Location:index.php?section=regga&d=fel");
    exit;
}
if (empty($_POST['lan']))
{
    header("Location:index.php?section=regga&lan=fel");
    exit;
}
Medlem sedan juni 2003175 inlägg
#12

Tyvärr funkar inte det heller. Måste du lösa detta...Förstår inte hur den bara kan komma över alla satserna ibland och ibland reagerar den!

Medlem sedan okt. 2004392 inlägg
#13

1. "Måste du lösa detta", var det en stick härifrån eller en hjälp mig?
2. En sista "Testa med detta"

if ($_POST['pass'] != $_POST['pass2'])
{
    header("Location:index.php?section=regga&pass=fel");
}
elseif (empty($_POST['y']))
{
    header("Location:index.php?section=regga&y=fel");
    exit;
}
elseif (empty($_POST['m']))
{
    header("Location:index.php?section=regga&m=fel");
    exit;
}
elseif (empty($_POST['d']))
{
    header("Location:index.php?section=regga&d=fel");
    exit;
}
elseif (empty($_POST['lan']))
{
    header("Location:index.php?section=regga&lan=fel");
    exit;
}
else
{
    $link = mysql_connect("XXXXX", "XXXXX", "XXXX");
    mysql_select_db("free58819", $link);
    $reg_y = date('Y');
    $reg_m = date('m');
    $reg_d = date('d');
    $sql = "SELECT nick FROM members WHERE nick = '". $_POST['nick'] ."'";
    $resultat = mysql_query($sql, $link) or die (mysql_error());
    if(mysql_num_rows($resultat)==0)
    {
        $insert="INSERT INTO members (nick, pass, fnamn, enamn, y, m, d, lan, epost, visa_epost, reg_y, reg_m, reg_d) VALUES
        ('" . $_POST['nick'] ."', '" . $_POST['pass'] ."', '" . $_POST['fnamn'] ."', '" . $_POST['enamn'] ."',
         '" . $_POST['y'] ."', '" . $_POST['m'] ."', '" . $_POST['d'] ."', '" . $_POST['lan'] ."',
          '" . $_POST['epost'] ."', '" . $_POST['visa_epost'] . "', '" . $reg_y . "', '" . $reg_m ."', '" . $reg_d . "')";
        $resultat2 = mysql_query($insert, $link) or die (mysql_error());
        header("Location: index.php?section=regga&reg=true");
    }
    else
    {
        header("Location: index.php?section=regga&anv=fel");
    }
}
Medlem sedan juni 2003175 inlägg
#14

Jag löste det. Nu funkar det. Jag ändrade bara det jag hade från början och lade till else if efter varje sats så det såg ut så här:

if ($_POST['pass'] != $_POST['pass2'])
{
    header("Location:index.php?section=regga&pass=fel");
}
else if ($_POST['y'] == "noll")
{
    header("Location:index.php?section=regga&y=fel");
}
else if ($_POST['m'] == "noll")
{
    header("Location:index.php?section=regga&m=fel");
}
else if ($_POST['d'] == "noll")
{
    header("Location:index.php?section=regga&d=fel");
}
else if ($_POST['lan'] == "noll")
{
    header("Location:index.php?section=regga&lan=fel");
}

Tack för hjälpen ändå Snakes!

Medlem sedan okt. 2004392 inlägg
#15

Inga problem.... Men i sista inlägget sa jag att du skulle lägga elseif..... glöm det...

Kan du vara snäll och markera ditt inlägg som löst?

143 ms totalt · 3 externa anrop · v20260731065814-full.55e59744
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)