PDA

Просмотр полной версии : обработка строк php


Americanets
25.08.2006, 18:47
вобщем такие дела : пишу
<?
if ($submit) {
$fd = fopen("config.php", "w");

$pass = str_replace("|", "", $pass);

$user_row = $title."|".$pass."|".$keyword."|".$desk."";

fwrite($fd, $user_row) or die("не записалось!");

fclose($fd);

echo "<SCRIPT language=JavaScript>
alert('OK');
</script>";

}
?>

после чего в файле получаю:
заголовок|пароль |кл слова|описание

проблема в том, что нужно чтоб эти данные из файла можно было "выцарапать" и вставить в требуемые соответственно переменные, хотябы для того, чтоб после сохранения они вставлялись в input"ы html страницы, чтоб их можно было менять, зная что менять
Можете что-нибудь посоветовать?

etc
25.08.2006, 18:55
serialize/unserialize

Americanets
25.08.2006, 19:17
можно немного по подробнее, что-то не понял, как именно с помощью этого вытащить нужные переменные
Заранее спасибо

etc
25.08.2006, 20:17
Надо модераторам за "заранее спасибо" в постах ставить плюсы.

http://php.net/serialize
http://php.net/unserialize

Americanets
25.08.2006, 20:47
Пошел немного другим путем, по идее он такие строки делит, но скорее всего не правильно написал код, вобщем может посмотрите


<?
if ($submit) {
$fd = fopen("config.php", "w");

$pass = str_replace("|", "", $pass);

$user_row = $title."|".$pass."|".$keyword."|".$desk."";

fwrite($fd, $user_row) or die("Could not write to file!");

fclose($fd);

echo "<SCRIPT language=JavaScript>
alert('OK');
</script>";
}
else{
$user_file="config.php";
while ($line = fgets ($user_file. 4096)) ;
list ($title, $pass, $keyword, $desk) = split( "|", $line);
}
?>
<form name="form1" method="post" action="proba.php">
<p>заголовок
<input name="title" type="text" id="title">
</p>
<p> пароль
<input name="pass" type="text" id="pass" value="<? $pass?>">
</p>
<p>кл сл
<input name="keyword" type="text" id="keyword">
</p>
<p>описание
<input name="desk" type="text" id="desk">
</p>
<p>
<input type="submit" name="submit" value="submit">
</p>
</form>

etc
25.08.2006, 21:24
Надо <? echo $pass; ?> вместо <? $pass?>

Americanets
25.08.2006, 22:02
спасибо, все работает , но с одной неприятностью, после сохранения все показывает, но если закрыть браузер, а потом снова пустить файл пишет:

Warning: fgets(): supplied argument is not a valid stream resource

Warning: split(): REG_EMPTY

и соответственно ничего не выводит

etc
25.08.2006, 23:40
Значит в файл ничего не записывается

Constantine
26.08.2006, 15:07
Надо <? echo $pass; ?> вместо <? $pass?><?=$pass?> :away:
А что вообще эта строка делает? while ($line = fgets ($user_file. 4096)) ;
Тем более с точкой... Потом, выключи, наконец, register_globals -- привыкнешь ещё...

Americanets
26.08.2006, 16:07
А что вообще эта строка делает? while ($line = fgets ($user_file. 4096)) ;
Тем более с точкой... Потом, выключи, наконец, register_globals -- привыкнешь ещё...

while ($line = fgets ($user_file. 4096)) ;

подчерпнул из http://library.hosting-design.net/28/006/article/

// Читать строки, пока не будет достигнут конец файла

while ($line = fgets ($user_file. 4096)) :

// Разделить строку функцией split( ).

// Компоненты присваиваются переменным Sname. $occupation и Scolor.

list ($name, $occupation, $color) = split( "|", $line);

с register_globals понятно, выключил, но также не работает

Может подскажете способ решения данной проблемы
ПЛЗ

Constantine
26.08.2006, 16:32
Аргументы функций разделяются запятыми, ошибка там ;)
http://www.php.net/manual/en/function.fgets.php

Americanets
26.08.2006, 16:46
да, одну ошибку убрало, осталось split(): REG_EMPTY , посмотрел http://www.php.net/manual/en/function.split.php все также, не пойму что не так:(

Constantine
26.08.2006, 16:53
Вместо split explode и будет счастье ;)

Americanets
26.08.2006, 17:01
ошибку не выдает, но и прогрес не наступил, при первичном открытии данные не поступают в формы, те все работает только после того, как ввели данные=> сохранили, потом все нормально, но как быть с первичным открытием, может посмотрите?

Skubent
28.08.2006, 12:43
во-первых, при выключенных глобалах $submit у тебя никогда не определен.
во-вторых, при первом запуске у тебя, вероятно, файла нет, в чем проблема-то ?
в-третьих, в твоей конструкции
while ($line = fgets ($user_file, 4096));
list($title, $pass, $keyword, $desk) = explode( "|", $line);
$line во второй строке ВСЕГДА bool(false). Доказательство этого утверждения попробуй проделать сам.

Americanets
28.08.2006, 13:19
с submit все понятно, при первом запуске файл есть, а вот про третье что-то не понял :(

Skubent
28.08.2006, 14:20
Читай мануал про fgets, while, выражения в php, много думай.

Americanets
30.08.2006, 21:05
спасибо