[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Куда вставить код результата?
linf
В общем все сделано, все работает идеально, но остался один вопросик: "КУда вставить код, что бы при удалении (тоесть выполнения процедуры) перенаправило на одну страничку,а при НЕудалении, тоесть если условие не соблюдено, на другую?"

КОД:

PHP
<?php
header
("Content-Type: text/html; charset=utf-8");

// уточняем переменные
$region basename($_POST['region']);
$mail = isset($_POST['mail'])?$_POST['mail']:null;
$code = isset($_POST['code'])?$_POST['code']:null;

$file File("base/$region.csv"FILE_IGNORE_NEW_LINES FILE_SKIP_EMPTY_LINES);
    for (
$i =0$i <= count($file); $i++) {

    
$out explode('^'$file[$i]);

    
//удаляем лишние символы
    
$out str_replace("#"""$out);

    if ((
$mail == $out[7]) and ($code == $out[8])) { $line $i+1;  break;}}

// блок удаления.

$file "base/$region.csv"// файл из которого удаляем строку
$fule file($file); //загоняем файл в массив $fule
$count count($fule); //подсчитываем количество строк до удаления
$fp fopen($file,"w");//очищаем файл
for($i=0;$i<$count;$i++) //создаём цикл, кол-во оборотов равно количиству строк в файле
{
if(
$i!=$line-1//если номер оборота не равен строке перезаписываем
{
fwrite($fp,$fule[$i]);
}
else {} 
//если равен ничего не делаем
}
fclose($fp);



А ВОТ ЭТО НАДО КУДА ТО ВСТАВИТЬ:
PHP
// удалилось или нет?
header('Location: /ok.php?ok=2'); // все ок.
header('Location: /error.php?error=53'); //не удалено.




Спустя 15 минут, 51 секунда (12.07.2009 - 00:37) twin написал(а):
а где условие то?

Спустя 28 минут, 16 секунд (12.07.2009 - 01:05) PandoraBox2007 написал(а):
ужас O_o

Спустя 1 час, 11 минут, 6 секунд (12.07.2009 - 02:16) linf написал(а):
PandoraBox2007

PHP
if (($mail == $out[7]) and ($code == $out[8]))

Если найдены данные строки файла, удовлетворяющие этому условию, то останавливаем сканирование базы (тоесть стоп цикл), получаем значение переменной $line, далее включается блок удаления, выполняем его, и переходим на страницу:
PHP
header('Location: /ok.php?ok=2'); // все ок.


ежели не одной строке в базе, где данное условие удовлетворяется, то перенаправляем на:
PHP
header('Location: /error.php?error=53'); //не удалено.


Спустя 26 минут (12.07.2009 - 02:42) PandoraBox2007 написал(а):
PHP
<?php

 header
("Content-Type: text/html; charset=UTF-8");

 // уточняем переменные
 $change_lines = (boolean) false;
 $region = basename($_POST['region']);
 $mail = isset($_POST['mail'])?$_POST['mail']:null;
 $code = isset($_POST['code'])?$_POST['code']:null;

  $file = "base/$region.csv"; // файл из которого удаляем строку
  if (!file_exists($file))
    die("File: $file not found.");
 
 $file 
= File($file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
 for ($i =0; $i <= count($file); $i++)
 {
      $out = explode('^', $file[$i]);
      //удаляем лишние символы
      $out = str_replace("#", "", $out);
      if (($mail == $out[7]) && ($code == $out[8])) {
         $line = $i+1;
         break;
      }
 }

  // блок удаления.
  $file = "base/$region.csv"; // файл из которого удаляем строку
  if (!file_exists($file))
    die("File: $file not found.");

  $fule = file($file); //загоняем файл в массив $fule
  $count = count($fule); //подсчитываем количество строк до удаления
  $fp = fopen($file, "w");//очищаем файл
  for($i = 0; $i < $count; $i++) //создаём цикл, кол-во оборотов равно количиству строк в файле
  {
       if ($i != $line-1) //если номер оборота не равен строке перезаписываем
       {
        $change_lines = (boolean) true;
        fwrite($fp,$fule[$i]);
       } 
       
//если равен ничего не делаем
  }
  fclose($fp);
  if ($change_lines) {
    header('Location: /ok.php?ok=2'); // все ок.
  } else {
    header('Location: /error.php?error=53'); //не удалено.
  }

Спустя 15 часов, 19 минут, 18 секунд (12.07.2009 - 18:01) linf написал(а):
Логично.... но все равно, даже если $code (вводимый через форму) не тот, переводит на страницу, что все нормально удалено:
PHP
header('Location: /ok.php?ok=2'); // все ок.


хотя как и положено сообщение не удаляется, потому что условие не выполнено.

Спустя 4 часа, 23 минуты, 9 секунд (12.07.2009 - 22:24) twin написал(а):
Ну что за мучения такие... Kirik же намекал на serialise(), зачем эти извращения то? Жалко букавок? Если будешь жалеть дерьмовый код, толку никогда не выйдет. Всегда нужно оптимизировать, если есть хоть малейшая возможность.
Ну с массивом работать ведь гораздо приятнее и надежнее, чем с этими извратными разделителями. И вопросов с условиями не возникнет.

Спустя 12 минут, 29 секунд (12.07.2009 - 22:37) linf написал(а):
twin мне не жалко, я бы уменьшил, я люблю унифицировать =)))

главное покажи как, тока с коментами, так как цель не просто сделать но и разобраться как работают функции... потому что сначала у меня в голове алгоритм, а уже потом реализация его на PHP...

помоги пожалуйста разобраться =)))

Спустя 4 минуты, 5 секунд (12.07.2009 - 22:41) twin написал(а):
Ну если хочешь разобраться, то продумай сначала алгоритм, как бы ты сделал это всё, имея простой массив, а не файл. Напиши его статично, прямо в скрипт, и обработай. А засунуть и высунуть в файл и обратно - дело трёх секунд. Я сам писать ничего не буду, могу только подсказывать. Если будет затык - выкладывай что сделал.

Спустя 9 минут, 4 секунды (12.07.2009 - 22:50) linf написал(а):
=((( не совсем понимаю... я просто PHP знаю всего 2 - 3 недели и пока могу тока так

Спустя 15 минут, 39 секунд (12.07.2009 - 23:06) twin написал(а):
Какая разница, две недели или год. На выработку алгоритма это не влияет.
Я не пойму целей и задач этого скрипта, не ясно еще и расширение .csv потому что форматирование тут совсем не по правилам. На сколько я понял, есть код и относящийся к нему E-mail. И по первому нужно удалить и то и другое.
Если так, то первый шаг.

PHP
$arr = array(
            
'000001' => 'mail@mail.ru',
            
'000002' => 'mail@mail.ru'
            '000003' 
=> 'mail@mail.ru'
            '000004' 
=> 'mail@mail.ru'
            
);

Вот тестовый массив. Теперь нужно удалить из него элемент с нужным ключем.
Go manual

Спустя 14 минут, 29 секунд (12.07.2009 - 23:20) linf написал(а):
не не не... задача в том, что есть база в CSV файле. в нем есть много строк... на каждой строке есть поля. Два из них имеют соответсвенно код, и майл. Есть страница, на которой пользователь вводит код и мал, если такая строка существует, то она вся удаляется... (тоесть файл перезаписывается)

мануал читаю, и PHP в примерах читаю, но не могу понять.

то, что ты предлагаешь, я понял, тоесть сделать из содержимого файла массив, удалить в нем то, что нужно, и запистаь заново... НО КАК??? (а если в файле 1000строк?)

Спустя 13 минут, 1 секунда (12.07.2009 - 23:33) twin написал(а):
Тогда я не понял этого движения:

PHP
$out explode('^'$file[$i]);

CSV форматируется точками с запятой, а не этой бракозяблой. А если там действительно CSV, то и разбирать лучше соответствующей функцией fgetcsv()
Все равно, как не крути, лучше и надежнее обработать массив, чем перезаписывать построчно, выхватывая куски. А потом целиком его записать одним махом.

Спустя 16 часов, 20 минут, 54 секунды (13.07.2009 - 15:54) linf написал(а):
разделитель ^ для того, что бы пользователь случайно не ввел символ раздления полей, а лишать пользователя ввода кавычек или точки с запятой я не хочу...

Задача лишь в том, куда вставить перенаправления зависимые от результатов?

Спустя 27 минут, 45 секунд (13.07.2009 - 16:22) twin написал(а):
Ну а сюда?

PHP
//удаляем лишние символы
      
$out str_replace("#"""$out);
      if ((
$mail == $out[7]) && ($code == $out[8])) {
         
$line $i+1;
        
$change_lines = (boolean) true;
         break;
      }

Спустя 1 час, 40 минут, 58 секунд (13.07.2009 - 18:03) linf написал(а):
twin, теерь все наоборот, строка стирается если код верный, но перенаправляет на стриницу код не верный!

Спустя 15 минут, 38 секунд (13.07.2009 - 18:18) twin написал(а):
ну дык поменяй редирикты местами)))

Спустя 9 часов, 54 минуты, 41 секунда (14.07.2009 - 04:13) linf написал(а):
twin да не, ты не понял...

Я сделал... суть в том, что нужно было просто break; поставить после выполнения перезаписи и все заработало.


_____________
Live in new format =)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.