Сохранить 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, время: 11:34. |