Сохранить id в ссылке javascript
Здраствуйте я не силен в Java и прошу вас помочь мне.Вопрос заключается в следующем,как сохранить данные в cookies при переходе по ссылке?
Пробывал 3 способа но все не работает...помогите пожалуйста найти ошибку. пробую записать в cookies id , который взял из базы данных... вот мой код echo("<a href=\"detals.php\" onclick=\"document.cookie = 'CookieName = " . $row['id'] . "'><div class="detals"> подробно </a></div>"); |
Цитата:
Цитата:
Как я понял, вам нужно что-то вроде этого?) echo('<a href="detals.php" onclick="setCookie(\'CookieName\', ' . $row['id'] . ');">подробно</a>'); // взято с этого сайта function setCookie(name, value, props) { props = props || {} var exp = props.expires if (typeof exp == "number" && exp) { var d = new Date() d.setTime(d.getTime() + exp*1000) exp = props.expires = d; } if(exp && exp.toUTCString) props.expires = exp.toUTCString(); value = encodeURIComponent(value) var updatedCookie = name + "=" + value for(var propName in props){ updatedCookie += "; " + propName var propValue = props[propName] if(propValue !== true){ updatedCookie += "=" + propValue } } document.cookie = updatedCookie; } |
Спасибо, сделал так echo('<a href="detals.php" onclick="setCookie(\'CookieName\', ' . $row['id'] . ');">подробно</a>');
На следующей странице ("detals.php" ) вставляю вот этот код <?php $ValueVariable = $_COOKIE['CookieName']; ?> но мне выдает ошибку Notice: Undefined index: CookieName in C:\xampp\htdocs\pages\detals.php on line 2 В чем может быть проблема? |
время жизни куки поставь
setCookie('CookieName', 'blablah', {expires: 600}); // время в секундах |
Сделал так,стого по инструкции как вы сказали уважаемые прогаммисты:)
на первой странице поставил вот это: echo('<a href="detals.php" onclick="setCookie(\'CookieName\', ' . $row['id'] . ',time()+3600);"><div class="detals">подробно </div></a>'); а на второй в самом начале вот это: <?php $value = setCookie('CookieName', 'id', {expires: 600}); ?> а потом в середине вот это: <?php $result=mysql_query("SELECT * FROM products WHERE id == $value"); while ($row = mysql_fetch_array($result)) { echo('<div class="infob_conteiner">'); echo('<div class="photo">'); echo('<p><img src="../images/products/'.$row['image'].'" width="150" height="100" /></p>'); echo('<p> </p>'); echo('</div>'); echo('<div class="information_block">'); echo('<p>'.$row['name'].' '.$row['model'].'</p>'); echo('</div>'); echo('</div>'); } ?> И опять ничего:cray: уже 3ий день пытаюсь сделать..... |
,time()+3600)Откуда в JavaScript функция time() ??? время нужно указать просто цифру в секундах, тоесть время хранения куки, прибавлять при этом текущую дату не нужно, нужно так: echo('<a href="detals.php" onclick="setCookie(\'CookieName\', '.$row['id'].', 3600 );"><div class="detals">подробно </div></a>'); а это что за конструкция? <?php $value = setCookie('CookieName', 'id', {expires: 600}); ?>В PHP функция setCookie принимает совсем иные параметры. |
на первую страницу ставь:
echo('<a href="detals.php" onclick="setCookie(\'CookieName\', ' . $row['id'] . ', 3600 );"><div class="detals">подробно </div></a>'); на вторую страницу: <?php $value = isset( $_COOKIE['CookieName'] ) ? intval( $_COOKIE['CookieName'] ) : 0; $result = mysql_query("SELECT * FROM `products` WHERE `id`=$value"); while( $row = mysql_fetch_array( $result ) ) { echo('<div class="infob_conteiner">'); echo('<div class="photo">'); echo('<p><img src="../images/products/'.$row['image'].'" width="150" height="100" /></p>'); echo('<p> </p>'); echo('</div>'); echo('<div class="information_block">'); echo('<p>'.$row['name'].' '.$row['model'].'</p>'); echo('</div>'); echo('</div>'); } ?> |
Спасибо огромное!:thanks: Заработало!!! но...на второй странице выходит все куков, а не определенный id...может быть необходимо создать каждый раз спецальный куки,наподобие CookieName1,CookieName2.....?
может это происходит из-за этого цикла: <?php $result=mysql_query("SELECT * FROM products WHERE category='Laptop'"); while ($row = mysql_fetch_array($result)) { echo('<div class="infob_conteiner">'); echo('<div class="photo">'); echo('<p><img src="../images/products/'.$row['image'].'" width="150" height="100" /></p>'); echo('<p> </p>'); echo('</div>'); echo('<div class="information_block">'); echo('<p>'.$row['name'].' '.$row['model'].'</p>'); echo('</div>'); echo('<div class="price_block_2">'); echo('Цена :'); echo('</div>'); echo('<div class="price_block">'); echo(''.$row['price'].'€'); echo('</div>'); echo('<a href="detals.php" onclick="setCookie(\'CookieName\', ' . $row['id'] . ', 3600 );"><div class="detals">подробнее</div></a>'); echo('</div>'); } ?> это первая страница,на которой мы выбираем определенный товар... |
вообще любопытно, зачем вам вообще нужна кука?
почему не сделать так: первая страница: <?php $result = mysql_query("SELECT * FROM `products` WHERE `category`='Laptop'"); while( $row = mysql_fetch_array( $result ) ) { echo('<div class="infob_conteiner">'); echo('<div class="photo">'); echo('<p><img src="../images/products/'.$row['image'].'" width="150" height="100" /></p>'); echo('<p> </p>'); echo('</div>'); echo('<div class="information_block">'); echo('<p>'.$row['name'].' '.$row['model'].'</p>'); echo('</div>'); echo('<div class="price_block_2">'); echo('Цена :'); echo('</div>'); echo('<div class="price_block">'); echo(''.$row['price'].'€'); echo('</div>'); echo('<a href="detals.php?id='.$row['id'].'"><div class="detals">подробнее</div></a>'); echo('</div>'); } ?> вторая страница: <?php $value = isset( $_GET['id'] ) ? intval( $_GET['id'] ) : 0; $result = mysql_query("SELECT * FROM `products` WHERE `id`=$value"); while( $row = mysql_fetch_array( $result ) ) { echo('<div class="infob_conteiner">'); echo('<div class="photo">'); echo('<p><img src="../images/products/'.$row['image'].'" width="150" height="100" /></p>'); echo('<p> </p>'); echo('</div>'); echo('<div class="information_block">'); echo('<p>'.$row['name'].' '.$row['model'].'</p>'); echo('</div>'); echo('</div>'); } ?> |
у меня спина от такого количества echo зачесалась.;)
это же можно было заменить на один echo с большой строкой (с одинарными кавычками или heredoc) |
Часовой пояс GMT +3, время: 09:07. |