Передать большой объем данных не через POST

nocturne

квантовая нелокальность
Учусь и пишу гостевую книгу. Столкнулся с такой проблемой. Делаю в цикле вывод записей из БД, сделал линк "редактировать":

PHP:
"<a href = 'edit.php?id=" . $row['id_user'] . " ' >| редактировать |<a/>"
$row['id_user'] - это id записи из бд.

Если добавить и отправить через GET значение (дописать
PHP:
<a href = 'edit.php?id=".$row['id_user']."&name=".$row['name']."&message=".$row['message']."'>| редактировать |<a/>"
)

затем в edit.php заполнить форму переменными переданными через GET, все работает.

Но в GET есть ограничение на количество переданной информации.

Вопрос: Как передать эту информацию через другой метод, не используя форму метода POST.

P.S. Пробовал передавать через сессии, но в этом случаи неверно почему то определяет, какую запись редактировать и выводит данные с наименьшим значением id_user, например 1.
 

weregod

unserializer
очевидно, что по переданному в GET-запросе id записи скрипт должен подгруизить данные из хранилища, сохранение же данных нужно организовать POST-запросом
 

nocturne

квантовая нелокальность
очевидно, что по переданному в GET-запросе id записи скрипт должен подгруизить данные из хранилища, сохранение же данных нужно организовать POST-запросом
Я понимаю. И сохраняются они у меня через POST. Но через GET не передает большое количество данных. Может быть друг друга не поняли, для наглядности кусок кода:

PHP:
// Выводим записи из базы: 
		if ($result = $db_conn->query('SELECT name, DATE_FORMAT(date,"%d.%m.%Y<br />%T") AS date, message, id_user FROM gb ORDER BY id_user DESC')) { 
			/* Выбираем результаты запроса: */ 	
			while( $row = $result->fetch_assoc() ){ 	
	
				$_SESSION['id'] = $row['id_user']; 
				$_SESSION['message'] = $row['message'];  
				$_SESSION['name'] = $row['name']; 

					printf(					"<div id='s_size'>" 
											  . "<div id='s_bar_buttons'>" 
											 //."<a href = 'edit.php?id=" . $row['id_user'] . " ' >| редактировать |&nbsp;&nbsp;<a/>" 
											  ."<a href = 'edit.php' >| редактировать |&nbsp;&nbsp;<a/>" 
											  . "<a href = 'delete.php?id=" . $row['id_user'] ."' >удалить |<a/>" 
											  . "</div>"
											  . "<span id='s_name'>" . $row['name'] . "</span>" 
											  . "<span id='s_date'>". $row['date'] . "</span>" 
											  . "<br />"
											  . "<span id=s_message>" .$row['message'] . "</span>" 
											  . "</div>");
			} 
		}
Далее данные попадают в эту форму, где можно произвести редактирование:

PHP:
$id = $_SESSION['id']; 
			$name = trim($_SESSION['name']); 
			$message = $_SESSION['message']; 
			
			echo $id;	
			echo $name;
			//echo $message;
			
			echo   '<span id=s_mess>
						<form action="update.php" method="post">
						<h2>Редактирование:</h2>
						<b>Имя</b><br />
						<input type="text" name="name" value="'. $name .'"><br />
						<b>Сообщение</b><br />
						<textarea name="message" rows=5 value="Сообщение">'. $message .'</textarea><br />
						<input type="hidden" name="id" value="'.$id.'">
						<input class="button" type="submit" value="сохранить">
						</form></span>';
Нажимаю сохранить и идем в обработчик:

PHP:
                        $name=strip_tags($_POST['name']);	
			$message=strip_tags($_POST['message']);		
			$id=($_POST['id']);				

			$mysqli->query("UPDATE gb SET name = ' ".$name." ',message = ' ".$message." ' WHERE id_user = ' " .$id. " ' ");  
			printf("Записей обновленно: %d\n", $mysqli->affected_rows);
 

С.

Продвинутый новичок
Пробовал передавать через сессии
Данные сессии находятся на сервере и никогда его не покидают. А отредактированные данные -- в браузере у пользователя. Как можно их передать через сессии не используя телепортацию или HTTP?
 

nocturne

квантовая нелокальность
Данные сессии находятся на сервере и никогда его не покидают. А отредактированные данные -- в браузере у пользователя. Как можно их передать через сессии не используя телепортацию или HTTP?
Откопал на этом форме:
http://www.masterwebs.ru/index.php?showtopic=3509

PHP:
<?php
session_start(); // Объявили о том что мы будем использровать сессию

/* заносим значения в сессию */

$_SESSION["param1"] = [Значение_1]; // С помощью глобального массива
$_SESSION["param2"] = [Значение_2]; // С помощью глобального массива


?>

Пока вы не закроете браузер вы можете использовать данные переменные на всём сайте, на котором они были зарегистрированны
Код
<?php
session_start(); // Объявили о том что мы будем использровать сессию

echo $_SESSION["param1"]; //Выведет [Значение_1]
echo $_SESSION["param2"]; //Выведет [Значение_2]
?>
 

Lirik

Новичок
nocturne
Возьмите книгу нормальную по PHP5, прочитайте ее минимум 2-3раза, будет полезней чем спрашивать по каждой мелочи на форуме. Вы не понимаете основ.
 

nocturne

квантовая нелокальность
Возьмите книгу нормальную по PHP5, прочитайте ее минимум 2-3раза, будет полезней чем спрашивать по каждой мелочи на форуме. Вы не понимаете основ.
Читаю книги. Форум для того и существует, что бы задавать вопросы. В книге написано про метод GET и POST. Я пользуюсь этими методами. Если для вас это мелочи, объясните.
 

С.

Продвинутый новичок
Ты не можешь по ID вытащить данные. Ну так разберись с этим. При чем тут ПОСТ и сессии? Замена одно на другое не поможет тебе избавиться от ошибки совсем в другом месте.
 

nocturne

квантовая нелокальность
Ты не можешь по ID вытащить данные.
В каком месте ошибка? Как это называется? Передача данных между страницами? или как то по другому?

Мне не совсем понятна логика. Если я нажму на ссылку "удалить" выполняется обработчик:

PHP:
$id=($_GET['id']);
$db_conn->query("DELETE FROM gb WHERE id_user = " .$id. " ");  
printf("Записей удалено: %d\n", $db_conn->affected_rows);
Удаляет то он запись верную.
 

nocturne

квантовая нелокальность
уже давным давно можно передавать огромные строки через GET
в протоколе длина никак не ограничена а в реальности браузеры позволяют отправлять чутли не до 65000 символов
Пробовал, вот так:
PHP:
<a href = 'edit.php?id=".$row['id_user']."&name=".$row['name']."&message=".$row['message']."'>| редактировать |<a/>"
В форму передается все кроме переменной message. Из за длинны. Или есть другой способ?
 

AmdY

Пью пиво
Команда форума
у тебя проблема не только в длинне, но и в самих данных, например, что будет если в massage будет текст с одинарной кавычкой?

твоя ссылка должна быть edit.php?id=666 а там уже достаются данные, сторится форма POST и уже при редактировании эти данные меняются.
 

nocturne

квантовая нелокальность
AmdYЗначит в самом обработчике edit.php должен быть mysql запрос, где заполняется форма переменными. Верно?
 

nocturne

квантовая нелокальность
Всем спасибо разобрался! Отдельное спасибо AmdY
 
Сверху