Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сохранить id в ссылке javascript (https://javascript.ru/forum/misc/23755-sokhranit-id-v-ssylke-javascript.html)

paul_ag 04.12.2011 23:11

Сохранить id в ссылке javascript
 
Здраствуйте я не силен в Java и прошу вас помочь мне.Вопрос заключается в следующем,как сохранить данные в cookies при переходе по ссылке?
Пробывал 3 способа но все не работает...помогите пожалуйста найти ошибку.

пробую записать в cookies id , который взял из базы данных...

вот мой код

echo("<a href=\"detals.php\" onclick=\"document.cookie = 'CookieName = " . $row['id'] . "'><div class="detals"> подробно </a></div>");

Maxman 04.12.2011 23:52

Цитата:

Сообщение от paul_ag (Сообщение 140765)
я не силен в Java

Если вам нужен Java, то вы ошиблись форумом, здесь программируют на JavaScript.

Цитата:

Сообщение от paul_ag (Сообщение 140765)
вот мой код

Зачем там внутри 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;
}

paul_ag 05.12.2011 00:38

Спасибо, сделал так 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

В чем может быть проблема?

devote 05.12.2011 01:13

время жизни куки поставь

setCookie('CookieName', 'blablah', {expires: 600}); // время в секундах

paul_ag 05.12.2011 18:47

Сделал так,стого по инструкции как вы сказали уважаемые прогаммисты:)

на первой странице поставил вот это:

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>&nbsp;</p>');
echo('</div>');

echo('<div class="information_block">');
echo('<p>'.$row['name'].' '.$row['model'].'</p>');
echo('</div>');

echo('</div>');


}

?>

И опять ничего:cray: уже 3ий день пытаюсь сделать.....

devote 05.12.2011 19:19

,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 принимает совсем иные параметры.

devote 05.12.2011 19:27

на первую страницу ставь:

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>&nbsp;</p>');
        echo('</div>');
        echo('<div class="information_block">');
        echo('<p>'.$row['name'].' '.$row['model'].'</p>');
        echo('</div>');
        echo('</div>');
    }
?>

paul_ag 05.12.2011 21:10

Спасибо огромное!: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>&nbsp;</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>');


}

?>

это первая страница,на которой мы выбираем определенный товар...

devote 05.12.2011 21:19

вообще любопытно, зачем вам вообще нужна кука?

почему не сделать так:

первая страница:
<?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>&nbsp;</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>&nbsp;</p>'); 
        echo('</div>'); 
        echo('<div class="information_block">'); 
        echo('<p>'.$row['name'].' '.$row['model'].'</p>'); 
        echo('</div>'); 
        echo('</div>'); 
    } 
?>

melky 05.12.2011 21:24

у меня спина от такого количества echo зачесалась.;)
это же можно было заменить на один echo с большой строкой (с одинарными кавычками или heredoc)


Часовой пояс GMT +3, время: 03:42.