Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Опять про вывод строк из файла, а все таки как сделать...
 
 автор: zavragnov   (25.10.2005 в 11:59)   письмо автору
 
 

Есть такой скриптик


 <?php 
  $arr 
file("base/index.txt"); 
  
// В цикле обходим массив $arr 
  
foreach($arr as $line)   
      { 
     list(
$msg$cont) = explode('|',$line); 
     echo 
"$msg ---- $cont<br>"
     
//echo "<a href=$cont>$msg</a><br>";
     

?>


Как сделать правильно ссылку


 "<a href=$cont>$msg</a><br>";


чтобы выводилось содержимое переменной $cont в браузер, после нажатия на ссылку?

   
 
 автор: Loki   (25.10.2005 в 12:09)   письмо автору
 
   для: zavragnov   (25.10.2005 в 11:59)
 

Либо перезагружаете страницу, передавая значение этой переменной через get, либо передаете положение элемента в массиве.

   
 
 автор: zavragnov   (25.10.2005 в 12:25)   письмо автору
 
   для: Loki   (25.10.2005 в 12:09)
 

а как через get

   
 
 автор: zavragnov   (25.10.2005 в 13:15)   письмо автору
 
   для: zavragnov   (25.10.2005 в 12:25)
 

Делаю вот так, он выводит только из последний строки, помогите подправьте код.
Я понимаю сам что не правильно, но как правильно не знаю!


<?php 
  
  $selfile 
"index.txt";
  
$arr file("$selfile"); 
  
// В цикле обходим массив $arr 
  
foreach($arr as $line)   
      { 
     list(
$msg$cont) = explode('|',$line); 
     
//echo "$msg ---- $cont<br>"; 
     
echo "<a href='show3.php?selfile=$selfile'>$msg</a><br>";
     } 
?> 

<? 
if(isset($_GET['selfile'])) { 
    
$filename $_GET['selfile']; 
    if(
file_exists($filename)) { 
    
$arr file("$filename"); 
  
// В цикле обходим массив $arr 
  
foreach($arr as $line)   
      { 
     list(
$msg$cont) = explode('|',$line); 
     }
        echo 
"<br><br>$cont<br>"
    } 

?> 

   
 
 автор: cheops   (25.10.2005 в 13:21)   письмо автору
 
   для: zavragnov   (25.10.2005 в 11:59)
 

А что в переменной $cont? Адрес ссылки или значение?
Для ссылки
<a href=$_SERVER[PHP_SELF]?cont=$cont>$msg</a><br>

Получить значение параметра cont можно при помощи следующего кода
<?php
  
echo $_GET['cont'];
?>

   
 
 автор: zavragnov   (25.10.2005 в 13:34)   письмо автору
 
   для: cheops   (25.10.2005 в 13:21)
 

Это скрипт вывода информации из файла в браузер

Вот содержимое файла index.txt

1111111111|11111111111
222222222|2222222222222222
3333333333333|33333333333333333


в переменной $cont содержиться то чо стоит после разделителя "|"


И вот что получилось


<?php 
  
  $selfile 
"index.txt";
  
$arr file("$selfile"); 
  
// В цикле обходим массив $arr 
  
foreach($arr as $line)   
      { 
     list(
$msg$cont) = explode('|',$line); 
     
//echo "$msg ---- $cont<br>"; 
     //echo "<a href='show3.php?selfile=$selfile'>$msg</a><br>";
     
     
echo "<a href=$_SERVER[PHP_SELF]?cont=$cont>$msg</a><br>";
     } 
?> 
<br><br><br>
<? 
if(isset($_GET['cont'])) {
echo 
$_GET['cont']; 
}
?> 

   
 
 автор: zavragnov   (25.10.2005 в 13:58)   письмо автору
 
   для: zavragnov   (25.10.2005 в 13:34)
 

А как быть, если я хочу передать не только одну переменную $cont

И файл будет выглядеть так


1111111111|ааааааааааааааааааа|1212121212
222222222|вввввввввввввввв|232323232323
3333333333333|ммммммммммммммммм|3434343434343



а в скритпе следователно


<?php 
  $selfile 
"index.txt"
  
$arr file("$selfile"); 
  
// В цикле обходим массив $arr 
  
foreach($arr as $line)    
     { 
     list(
$msg$cont$ohter) = explode('|',$line); 
        
     echo 
"<a href=$_SERVER[PHP_SELF]?cont=$cont>$msg</a><br>"
     } 
?> 
<br><br><br> 
<? 
if(isset($_GET['cont'])) { 
echo 
$_GET['cont']; 

?> 


А вот как передать все переменные $msg, $cont, $ohter, чтобы отобразить их в браузере?

   
 
 автор: cheops   (25.10.2005 в 14:15)   письмо автору
 
   для: zavragnov   (25.10.2005 в 13:58)
 

1) Если будут русские буквы, то содержимое $cont следует пропускать через urlencode(), так как национальные символы в URL недопустимы.

2) Хм... ну так и делайте
<?php 
  $selfile 
"index.txt"
  
$arr file("$selfile"); 
  
// В цикле обходим массив $arr 
  
foreach($arr as $line)     
     { 
     list(
$msg$cont$ohter) = explode('|',$line); 
         
     echo 
"<a href=$_SERVER[PHP_SELF]?cont=".urlencode($cont)."&ohter=".urlencode($ohter).">$msg</a><br>"
     } 
?> 
<br><br><br> 
<? 
if(isset($_GET['cont'])) { 
echo 
$_GET['cont']; 

?>

Или у вас в файлах произвольное число столбцов?

   
 
 автор: zavragnov   (25.10.2005 в 15:16)   письмо автору
 
   для: cheops   (25.10.2005 в 14:15)
 

А как осуществить такое, изменение выбранной строки

То что я написал сохраняет только одну строку и убивает все остальные


<?php 
  $selfile 
"index.txt"
  
$arr file("$selfile"); 
  
// В цикле обходим массив $arr 
  
foreach($arr as $line)    
     { 
     list(
$msg$cont$ohter) = explode('|',$line); 
     echo 
"<a href=$_SERVER[PHP_SELF]?msg=".urlencode($msg)."&cont=".urlencode($cont)."&ohter=".urlencode($ohter).">$msg</a><br>";  
     } 
?> 
<br><br><br> 
<? 
if(isset($_GET['msg'])) 


$a $_GET['msg'];
$b $_GET['cont'];
$c $_GET['ohter'];


?> 

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<br>
<form name="form" method="post" action="addc.php">
<input name="selfile" type="hidden" value="<?php echo  $selfile?>">
  <label> <br>
  <textarea name="q" cols="80"><?php echo $a ?></textarea>
  </label>
  <p>
    <label>
    <textarea name="w" cols="80"><?php echo $b ?></textarea>
    </label>
</p>
  <p>
    <label>
    <textarea name="e" cols="80"><?php echo $c ?></textarea>
    </label>
</p>
  <p>
    <label>
    <input type="submit" name="Submit" value="Submit">
    </label>
  </p>
</form>



обработчик addc.php


<?php 
// Открываем файл 
$filename "$selfile";
$fd fopen("$filename","w"); 
// Записываем содержимое текстовых областей 
fwrite($fd$_POST['q']."|".$_POST['w']."|".$_POST['e']); 
// Закрываем файл 
fclose($fd); 
?> 

   
 
 автор: cheops   (25.10.2005 в 17:26)   письмо автору
 
   для: zavragnov   (25.10.2005 в 15:16)
 

Нет, в обработчике addc.php необходимо по-новой открывать файл (file) искать строку которую вы заменяет и заменять эту строку, потом собирать содержимое файла из массива при помощи implode - и перезаписывать всё содержимое файла при помощи описанного вами кода. Для этого в строке файла должен быть уникальный участок, который не подвергается изменению и по которому строку всегда можно найти.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования