Martiny Posted June 1, 2011 Report Share Posted June 1, 2011 (edited) Reizēm pazūd SESIJAS mainīgā vērtības. Koda fragments bez pārdaužu bloka session_start(); if (isset($_GET['step'])) { // STEP=1 if ($_GET['step']==1) { echo '<form action="index.php?step=2" method="post">'; $sql2 = "SELECT * FROM co2table"; $result2 = mysql_query($sql2, $conn) or die ("Neizdodas iegūt CO2 koeficientu."); $iezime=true; echo '<SELECT name="co2">'; while ($row2 = mysql_fetch_row($result2)) { if ($iezime) { echo '<OPTION value="'.$row2[2].'" selected="selected">'.$row2[1].'</OPTION>'; $iezime=false; } else { echo '<OPTION value="'.$row2[2].'">'.$row2[1].'</OPTION>'; } } echo '</SELECT>'; echo '</form>'; } // STEP=2 elseif ($_GET['step']==2) { $_SESSION['co2'] = $_POST['co2']; // Pārbaudu vai iepriekšējā solī visa nepieciešamā informācija aizpildīta if ($info == OK) { echo $_SESSION['co2'].'<br/>'; echo '<form action="index.php?step=3" method="post">'; echo '<input type="submit" value="Turpināt">'; echo '</form>'; else { echo 'Nav ievadīta informācija kādā no obligātajiem laukiem.'; echo '<form action="index.php?step=2" method="post">'; $sql2 = "SELECT * FROM co2table"; $result2 = mysql_query($sql2, $conn) or die ("Neizdodas iegūt CO2 koeficientu."); $iezime=true; echo '<SELECT name="co2">'; while ($row2 = mysql_fetch_row($result2)) { if ($iezime) { echo '<OPTION value="'.$row2[2].'" selected="selected">'.$row2[1].'</OPTION>'; $iezime=false; } else { echo '<OPTION value="'.$row2[2].'">'.$row2[1].'</OPTION>'; } } echo '</SELECT>'; echo '</form>'; } } // STEP=3 elseif ($_GET['step']==3) { echo $_SESSION['co2'].'<br/>'; } else { } Situācija tāda, ka STEP 3 blokā reizēm pazūd $_SESSION['co2'] mainīgā vērtība, bet man šī vērtība nepieciešama arī STEP 8 blokā. Kur varētu būt problēma? Sesijas noilgums vai kāda cita vaina? Pēc manas saprašanas session_start(); ir katrā lapā pieejams. Edited June 2, 2011 by Martiny Quote Link to comment Share on other sites More sharing options...
Faks Posted June 1, 2011 Report Share Posted June 1, 2011 (edited) problēma sekojoša tu viņu pārverti par post tas nozīme tikai vienu reizi izmanot var izmantot assosativo masivu lai viņa ievietot vērtību vai mainīgo ja ne var cita sesijas mainigaja iebazt :) ! Piemeri $x = array(); 1.x['ab'] = $_SESSION['co2']; 2.$abc = $_SESSION['co2']; 3.$_SESSION['co2'] = $_SESSION['ab']; Edited June 1, 2011 by Faks Quote Link to comment Share on other sites More sharing options...
Martiny Posted June 2, 2011 Author Report Share Posted June 2, 2011 Vari mazliet precīzāk man apskaidrot to lietu? Quote Link to comment Share on other sites More sharing options...
Martiny Posted June 2, 2011 Author Report Share Posted June 2, 2011 Gribat teikt, ka defekts jāmeklē šajā rindā -> $_SESSION['co2'] = $_POST['co2']; Quote Link to comment Share on other sites More sharing options...
Faks Posted June 3, 2011 Report Share Posted June 3, 2011 Gribat teikt, ka defekts jāmeklē šajā rindā -> $_SESSION['co2'] = $_POST['co2']; tieši tā :) ! Quote Link to comment Share on other sites More sharing options...
Martiny Posted June 7, 2011 Author Report Share Posted June 7, 2011 Vai ātrumā neizglītosi arī pie viena, Faks? Quote Link to comment Share on other sites More sharing options...
daGrevis Posted June 7, 2011 Report Share Posted June 7, 2011 tieši tā :) ! Nav tur defektu... tas nav best-practice; tā darīt, bet ietu! Quote Link to comment Share on other sites More sharing options...
Val Posted June 7, 2011 Report Share Posted June 7, 2011 (edited) 1. Defekts kaut vai tāds, ka viņš ļauj sesijā saglabāt co2 pa taisno no $_POST. Vajadzētu vismaz pēc $info==OK pārbaudes (laikam koda daļa ir izņemta, lai nebūtu vēl jautājumi). 2. Kāpēc vajadzīgas 2 vienādas formas iekš step#1 un step#2, ja var pie nepareizas ievadītās infas cilvēku pārsviest uz index.php?step=1, lai nebūtu jādublē kods. Labi vien, ka nav redzams viss pārējais kods līdz step#8 :) Edited June 7, 2011 by Val Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.