Frustrerad av $_SESSION problem

Permalänk
Medlem

Frustrerad av $_SESSION problem

Har ett problem.
Vill spara checkbox i en session så att när sidan uppdaterats eller en sparning har gjorts i mysql så ska det se ut som innan.

Har försökt med massa olika men det fungerar bara om endast en är checked, är fler checked så blir antingen alla eller ingen checkad beroende på mina kodningsförsök.

Här skapar jag checkarna(, hämtas från en textfil där varje ny rad e en ny kategori)

$fh = fopen("arendelogg_kategorier.txt","r"); $i=1; while(!feof($fh)){ $line=fgets($fh); if(/* ~~ HÄR BESTÄMMS DET OM CHECKAD ELLER EJ ~~ */){ echo "<input type=\"checkbox\" name=\"ftagg[".$i."]\" value=\"$line\" checked/>$line<br />"; } else { echo "<input type=\"checkbox\" name=\"ftagg[".$i."]\" value=\"$line\" />$line<br />"; } $i++; } fclose($fh);

Jag blir så frustrerad för jag vill ha någon form av array som kollar om raden i lopen finns i min checked array och om den gör det så ska den bli checked. Vill helst andvända $_SESSION
Men jag blir galen för jag är lite av en hobbysnickare när det kommer till kodning och jag fattar inte hur jag ska göra.

Här skapar jag session för att få fram mitt sökresultat

if(!isset($_SESSION['ftagg']) || isset($_REQUEST['submit'])){ if(isset($_POST['ftagg'])){ $_SESSION['ftagg']=$_POST['ftagg']; } else { unset($_SESSION['ftagg']); } } $str = '1=1'; if(isset($_SESSION['ftagg']) && count($_SESSION['ftagg']) > 0){ $ftagg=implode('\' OR tagg = \'',$_SESSION['ftagg']); $str.=' AND tagg = \''.$ftagg.'\''; }

Visa signatur
Permalänk
Inaktiv

Har du session_start(); överst på alla sidor som använder sig av sessioner?

Permalänk
Medlem
Skrivet av anon150287:

Har du session_start(); överst på alla sidor som använder sig av sessioner?

Jo det har jag. Problemet är att jag behöver skapa en array och läsa in arrayen som

if ($line==array[1] || $line==array[2]

tills arrayen tar slut.

Skickades från m.sweclockers.com

Visa signatur
Permalänk
Medlem

du har använt dig av <?php och ?> för att öppna och stänga koder hoppas jag

EDIT: testade din kod, och ändrade "r" till "w" i $fh

fick ganska många "rutor"

Visa signatur

CPU: i5-2500K | RAM: 4gb XMS3 1333mhz | Grafikkort: XFX Radeon 5770 | Mobo: MSI P67A c45 | HDD: WD Black 500GB | Chassi: NZXT Lexa S |PSU: XFX XXX Edition 750W

Permalänk
Medlem
Skrivet av chila:

Har ett problem.
Vill spara checkbox i en session så att när sidan uppdaterats eller en sparning har gjorts i mysql så ska det se ut som innan.

Har försökt med massa olika men det fungerar bara om endast en är checked, är fler checked så blir antingen alla eller ingen checkad beroende på mina kodningsförsök.

Här skapar jag checkarna(, hämtas från en textfil där varje ny rad e en ny kategori)

$fh = fopen("arendelogg_kategorier.txt","r"); $i=1; while(!feof($fh)){ $line=fgets($fh); if(/* ~~ HÄR BESTÄMMS DET OM CHECKAD ELLER EJ ~~ */){ echo "<input type=\"checkbox\" name=\"ftagg[".$i."]\" value=\"$line\" checked/>$line<br />"; } else { echo "<input type=\"checkbox\" name=\"ftagg[".$i."]\" value=\"$line\" />$line<br />"; } $i++; } fclose($fh);

Jag blir så frustrerad för jag vill ha någon form av array som kollar om raden i lopen finns i min checked array och om den gör det så ska den bli checked. Vill helst andvända $_SESSION
Men jag blir galen för jag är lite av en hobbysnickare när det kommer till kodning och jag fattar inte hur jag ska göra.

Här skapar jag session för att få fram mitt sökresultat

if(!isset($_SESSION['ftagg']) || isset($_REQUEST['submit'])){ if(isset($_POST['ftagg'])){ $_SESSION['ftagg']=$_POST['ftagg']; } else { unset($_SESSION['ftagg']); } } $str = '1=1'; if(isset($_SESSION['ftagg']) && count($_SESSION['ftagg']) > 0){ $ftagg=implode('\' OR tagg = \'',$_SESSION['ftagg']); $str.=' AND tagg = \''.$ftagg.'\''; }

det du vill göra är (rätta mig om jag har fel)
1. göra en "quiz"
2. du har två "boxar"
Fråga 1. gillar du datorer?
[X] JA
[ ] NEJ
3. på nästa fråga vill du att "boxarna" ska vara tomma
fråga 2. har jag rätt
[ ] JA
[ ] NOPE

kanske underlättar lite för dom som är bra på php, jag läste en B kurs i php på en vecka och fick MVG, men det mest avancerade jag gjorde var sista uppgiften, göra en gästbok där användaren skriver till en databas. men men... om inte jag kan hjälpa kanske någon annan kan ^^

Visa signatur

CPU: i5-2500K | RAM: 4gb XMS3 1333mhz | Grafikkort: XFX Radeon 5770 | Mobo: MSI P67A c45 | HDD: WD Black 500GB | Chassi: NZXT Lexa S |PSU: XFX XXX Edition 750W

Permalänk
Medlem
Skrivet av x3onz:

det du vill göra är (rätta mig om jag har fel)
1. göra en "quiz"
2. du har två "boxar"
Fråga 1. gillar du datorer?
[X] JA
[ ] NEJ
3. på nästa fråga vill du att "boxarna" ska vara tomma
fråga 2. har jag rätt
[ ] JA
[ ] NOPE

kanske underlättar lite för dom som är bra på php, jag läste en B kurs i php på en vecka och fick MVG, men det mest avancerade jag gjorde var sista uppgiften, göra en gästbok där användaren skriver till en databas. men men... om inte jag kan hjälpa kanske någon annan kan ^^

Tänkt använda det för att söka i min databas.
Som ett litet filter.

Denna bild kanske hjälper att förstå:

Har en bunt med checkboxes som man bockar i för vilka kategorier man vill visa i tabellen.
Sen kan jag redigera dom efter filtrering. Har session så att den kommer ihåg senaste sökningen så om jag uppdaterar sidan så har jag fortfarende samma resultat. Men för att veta vad jag har filtrerat fram och lättare kunna ändra på det filtret så vill jag att checkboxarna som jag checkade i för att söka även skall vara checkade efter uppdatering av sidan.

Visa signatur
Permalänk
Medlem

ahh, nu fattar jag (tror jag) när man svarar på sweclockers och går avancerat så får du 3 boxar
[x] Visa din sign
[x] gör url till en länk
[ ] stäng av smilies

är det något sånt du vill göra?

Visa signatur

CPU: i5-2500K | RAM: 4gb XMS3 1333mhz | Grafikkort: XFX Radeon 5770 | Mobo: MSI P67A c45 | HDD: WD Black 500GB | Chassi: NZXT Lexa S |PSU: XFX XXX Edition 750W

Permalänk
Medlem
Skrivet av x3onz:

ahh, nu fattar jag (tror jag) när man svarar på sweclockers och går avancerat så får du 3 boxar
[x] Visa din sign
[x] gör url till en länk
[ ] stäng av smilies

är det något sånt du vill göra?

Precis och dom ska sparas i en session så att valen blir ihågkommna.
Ser att bilden inte fungerar... ser till att den gör det.

Visa signatur
Permalänk
Medlem

går det inte att gör en fil som heter boxes.php, och använd den som "default" settings för dina boxar, och sedan sätter du ett namn på som som också sparas i databasen. ex. name="box1" checked, name="box2" (inte checked). så kan du bara köra på include ('boxes.php');

Visa signatur

CPU: i5-2500K | RAM: 4gb XMS3 1333mhz | Grafikkort: XFX Radeon 5770 | Mobo: MSI P67A c45 | HDD: WD Black 500GB | Chassi: NZXT Lexa S |PSU: XFX XXX Edition 750W

Permalänk
Medlem

borde inte detta funka?

$fh = fopen("arendelogg_kategorier.txt","r"); $i=1; while(!feof($fh)){ $line=fgets($fh); if($_SESSION['ftagg'][$i] == "on"){ echo "<input type=\"checkbox\" name=\"ftagg[".$i."]\" value=\"$line\" checked/>$line<br />"; } else { echo "<input type=\"checkbox\" name=\"ftagg[".$i."]\" value=\"$line\" />$line<br />"; } $i++; } fclose($fh);

Visa signatur

ASRock p67 extreme 4 | OCZ 240gb SSD + 320GB WDC + 1TB WDC GP | Intel Core i7 2600k | Nvidia Geforce GTX970 | 16gb Crucial Ballistix | Antec HC pro 1200w | Fractal define R2

Permalänk
Medlem
Skrivet av Lofman:

borde inte detta funka?

$fh = fopen("arendelogg_kategorier.txt","r"); $i=1; while(!feof($fh)){ $line=fgets($fh); if($_SESSION['ftagg'][$i] == "on"){ echo "<input type=\"checkbox\" name=\"ftagg[".$i."]\" value=\"$line\" checked/>$line<br />"; } else { echo "<input type=\"checkbox\" name=\"ftagg[".$i."]\" value=\"$line\" />$line<br />"; } $i++; } fclose($fh);

Åhhhh... sjukt mycket tack...

Löste det såhär:

$fh = fopen("arendelogg_kategorier.txt","r"); $i=1; while(!feof($fh)){ $line=fgets($fh); if(isset($_SESSION['ftagg'][$i])){ echo "<input type=\"checkbox\" name=\"ftagg[".$i."]\" value=\"$line\" checked/>$line<br />"; } else { echo "<input type=\"checkbox\" name=\"ftagg[".$i."]\" value=\"$line\" />$line<br />"; } $i++; } fclose($fh);

Visa signatur
Permalänk
Medlem
Skrivet av chila:

Åhhhh... sjukt mycket tack...

Löste det såhär:

$fh = fopen("arendelogg_kategorier.txt","r"); $i=1; while(!feof($fh)){ $line=fgets($fh); if(isset($_SESSION['ftagg'][$i])){ echo "<input type=\"checkbox\" name=\"ftagg[".$i."]\" value=\"$line\" checked/>$line<br />"; } else { echo "<input type=\"checkbox\" name=\"ftagg[".$i."]\" value=\"$line\" />$line<br />"; } $i++; } fclose($fh);

Det var så lite så

Visa signatur

ASRock p67 extreme 4 | OCZ 240gb SSD + 320GB WDC + 1TB WDC GP | Intel Core i7 2600k | Nvidia Geforce GTX970 | 16gb Crucial Ballistix | Antec HC pro 1200w | Fractal define R2

Permalänk
Medlem

för att göra det mer "korrekt" borde det vara checked="checked" i input elementet.

Permalänk
Medlem

Att tänka på med ISSET() är att den kontrollerar ifall variabeln har något värde SATT.
Oavsett värdet. Om det finns ett värde närvarande så blir det TRUE om inte så blir det FALSE.

http://se.php.net/manual/en/function.isset.php

Det innebär att om man nu skulle ta detta exempel

$fh = fopen("arendelogg_kategorier.txt","r"); $i=1; while(!feof($fh)){ $line=fgets($fh); if(isset($_SESSION['ftagg'][$i])){ echo "<input type=\"checkbox\" name=\"ftagg[".$i."]\" value=\"$line\" checked/>$line<br />"; } else { echo "<input type=\"checkbox\" name=\"ftagg[".$i."]\" value=\"$line\" />$line<br />"; } $i++; } fclose($fh);

Så om:

$_SESSION['ftagg'][$i] = 'on' eller = '1' eller ='0'

Så skulle dom anses vara TRUE för ISSET().

Så det är bättre att kolla ifall

if($_SESSION['ftagg'][$i] === '') { /* kör kod ifall det inte finns något värde i array nyckeln */ } Else { /* Kör ifall värdet finns */ }

Så om vi remixar din kod med min variant blir det:

$fh = fopen("arendelogg_kategorier.txt","r"); $i=1; while(!feof($fh)){ $line=fgets($fh); if($_SESSION['ftagg'][$i] === '') { /* Ifall inget värde finns satt */ echo "<input type=\"checkbox\" name=\"ftagg[".$i."]\" value=\"$line\" />$line<br />"; } Else { /* om värdet finns */ echo "<input type=\"checkbox\" name=\"ftagg[".$i."]\" value=\"$line\" checked=\"checked\" />$line<br />"; } $i++; } fclose($fh);

Ursäkta Indenteringen som försvann i webformuläret.
Men jag tror du följer med hur jag tänker.

Visa signatur

Fractal Design Arc Svart | MSI Z68A-GD55 G3 REV B3 | Intel® Core i7 2600K, 3.4GHz, 8MB | Corsair 16GB (4x4096MB) CL9 1600Mhz VENGEANCE LP | MSI GeForce GTX 670 | Phanteks PH-TC14PE CPU Cooler (vit) | Corsair Power Supply 650W TX M, Modular, ATX, PS/2 | SSD (okänd tillverkare) + 2 äldre SATA2 diskar på 750 Gb, 350 gb. | OS: Microsoft Windows 10 home.