Просмотр полной версии : обработка строк 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 страницы, чтоб их можно было менять, зная что менять
Можете что-нибудь посоветовать?
Americanets
25.08.2006, 19: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>
Надо <? echo $pass; ?> вместо <? $pass?>
Americanets
25.08.2006, 22:02
спасибо, все работает , но с одной неприятностью, после сохранения все показывает, но если закрыть браузер, а потом снова пустить файл пишет:
Warning: fgets(): supplied argument is not a valid stream resource
Warning: split(): REG_EMPTY
и соответственно ничего не выводит
Значит в файл ничего не записывается
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
ошибку не выдает, но и прогрес не наступил, при первичном открытии данные не поступают в формы, те все работает только после того, как ввели данные=> сохранили, потом все нормально, но как быть с первичным открытием, может посмотрите?
во-первых, при выключенных глобалах $submit у тебя никогда не определен.
во-вторых, при первом запуске у тебя, вероятно, файла нет, в чем проблема-то ?
в-третьих, в твоей конструкции
while ($line = fgets ($user_file, 4096));
list($title, $pass, $keyword, $desk) = explode( "|", $line);
$line во второй строке ВСЕГДА bool(false). Доказательство этого утверждения попробуй проделать сам.
Americanets
28.08.2006, 13:19
с submit все понятно, при первом запуске файл есть, а вот про третье что-то не понял :(
Читай мануал про fgets, while, выражения в php, много думай.
Americanets
30.08.2006, 21:05
спасибо
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.