[php] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. Alekzzzander

    Alekzzzander Elder - Старейшина

    Joined:
    5 Sep 2007
    Messages:
    278
    Likes Received:
    36
    Reputations:
    0
    у меня два вопроса.
    1. у меня есть файл в котором хранится список строк в формате 1:2 как скаделать что бы при добавлении в этот файл строки, небыло повторов

    2. требуется переменной присвоить порядковый номер (1, 2, 3...) и так же запись ведется в файл
     
  2. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Alekzzzander не использовать для этого файлы. А если хочется костыль - то придется считывать весь файл (или построчно или полностью) и сверять есть ли такая строка или нет

    2) http://php.net/array
     
    _________________________
  3. roxblnfk

    roxblnfk Elder - Старейшина

    Joined:
    6 Feb 2010
    Messages:
    189
    Likes Received:
    42
    Reputations:
    19
    вот когда fann нашёл, мне его не удлось собрать...
     
  4. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    roxblnfk, freshman https://forum.antichat.ru/thread210851-fann.html
     
    _________________________
  5. Andres

    Andres Elder - Старейшина

    Joined:
    4 Apr 2008
    Messages:
    320
    Likes Received:
    119
    Reputations:
    0
    Нене это в админ-панели)
    ...
    а с другой стороны, как вывести сообщение, что информация добавлена?
    если условием
    иф резалт=тру
    выводи "информация добавлена"

    но если редирект будет стоять в 0 мс то его никто не заметит, верно?
     
    #16325 Andres, 23 Aug 2010
    Last edited: 23 Aug 2010
  6. Darth Padla

    Darth Padla Member

    Joined:
    21 Jun 2010
    Messages:
    141
    Likes Received:
    25
    Reputations:
    8
    Юзай get.
    типа редирект так:
    <meta http-equiv='refresh' content='0,страница_формы.php?result=true'>
    а в страницу формы вставить
    <?if($_GET['result']){?><script>alert('Информация добвалена');</script><?}?>
     
    #16326 Darth Padla, 23 Aug 2010
    Last edited: 23 Aug 2010
    2 people like this.
  7. Andres

    Andres Elder - Старейшина

    Joined:
    4 Apr 2008
    Messages:
    320
    Likes Received:
    119
    Reputations:
    0
    thank's, dude
     
  8. phpdreamer

    phpdreamer Member

    Joined:
    26 Jul 2009
    Messages:
    522
    Likes Received:
    86
    Reputations:
    19
    1)кодировки не совпадают...
    сравни какая у тебя кодировка в phpMyAdmin и в таблице
    2)информация о порядке записей не сохраняется без ключа
     
  9. Edward

    Edward Banned

    Joined:
    11 Feb 2010
    Messages:
    329
    Likes Received:
    21
    Reputations:
    -1
    Т.е. PRIMARY KEY нужно указать?
     
  10. spamoney

    spamoney Elder - Старейшина

    Joined:
    26 Dec 2006
    Messages:
    120
    Likes Received:
    7
    Reputations:
    1
    Здравствуйте, требуется перекодировать все значения массива POST и затем вернуть эти значения обратно в POST, для одномерными массива делаю так:

    Code:
    foreach ($_POST as $a=>$b) $c[$a]=iconv('utf-8','windows-1251',$b);
    $_POST=$c;
    
    А как сделать, если у меня массив $_POST - многомерный масив вида:

    Code:
    $_POST['a']='1';
    $_POST['a']['c']='1-2';
    $_POST['a']['b']['c']['d']='1-1-1-1';
    и т.д
     
    #16330 spamoney, 24 Aug 2010
    Last edited: 24 Aug 2010
  11. Gvidion

    Gvidion Elder - Старейшина

    Joined:
    11 Sep 2009
    Messages:
    79
    Likes Received:
    43
    Reputations:
    28
    как вывести все элементы массива-списка без ключей? Раньше работал

    PHP:
    $n 0;
    while(
    $unik[$n] != false) {
    echo 
    "$unik[$n] <br>";
    $n++;
    }
    но когда элементов стало в массиве окола 800+ он начал выводить лишь ~треть мб условие вайла поменять?

    этот же массив print_r выводит полностью, так что ошибка не в нём.
     
  12. Darth Padla

    Darth Padla Member

    Joined:
    21 Jun 2010
    Messages:
    141
    Likes Received:
    25
    Reputations:
    8
    а str_replace('\r\n\r\n','\r\n',$file) не катит?
    В качестве альтернативы:
    $strings=file('путь к файлу');
    for($i=0;$i<count($string);$i++){
    if(trim($strings[$i])!='\r\n'){$result.=$string[$i];}
    }
    $file=fopen('путь к файлу');
    fputs($file,$result);
    fclose($file);
    Не тестил, но должно вроде работать.
     
  13. Darth Padla

    Darth Padla Member

    Joined:
    21 Jun 2010
    Messages:
    141
    Likes Received:
    25
    Reputations:
    8
    М.б. какой то элемент (не последний) таки равен false?
    Попробуй
    PHP:
    for($n=0;$n<count($unik[$n]);$n++) {
    echo 
    "$unik[$n] <br>";
    }
     
  14. Gvidion

    Gvidion Elder - Старейшина

    Joined:
    11 Sep 2009
    Messages:
    79
    Likes Received:
    43
    Reputations:
    28
    хм, пашет, а есть функция для удаления false-елементов из масива-списка?
     
  15. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    PHP:
    <?php
    $unik 
    = array(12false34false567); //массив

    $unik array_filter($unik'delete_false'); //удаляем элементы, которые равны false

    foreach($unik as $value//выводим значения элементов
    {
      echo 
    $value.'<br>';
    }

    function 
    delete_false($elem)
    {
      return 
    $elem !== false;
    }  
    ?>
     
  16. Fuckel

    Fuckel Banned

    Joined:
    16 Jan 2008
    Messages:
    274
    Likes Received:
    59
    Reputations:
    6
    Например, так:
    PHP:
    <?php

    function charsetDecode(&$array)
    {
        foreach (
    $array as $k => $v) {
            if (
    is_array($array[$k])) {
                
    charsetDecode($array[$k]);
            } else {
                
    $array[$k] = iconv('utf-8''windows-1251'$array[$k]);
            }
        }
    }
    charsetDecode($_POST);

    ?>
     
    1 person likes this.
  17. SHiNiGaMi

    SHiNiGaMi Banned

    Joined:
    3 Jan 2010
    Messages:
    382
    Likes Received:
    55
    Reputations:
    15
    PHP:
    foreach($array as $key => $value)
       if(
    $value === false)
          unset(
    $array[$key]);
     
  18. Alekzzzander

    Alekzzzander Elder - Старейшина

    Joined:
    5 Sep 2007
    Messages:
    278
    Likes Received:
    36
    Reputations:
    0
    как это осуществить? у меня получалось пока только с каждой строчкой лично сравнивать а мне надо что бы сравнило сначало со всеми строками и потом если нет такого то добавило в файл
     
  19. SHiNiGaMi

    SHiNiGaMi Banned

    Joined:
    3 Jan 2010
    Messages:
    382
    Likes Received:
    55
    Reputations:
    15
    PHP:
    <?php
    $fh 
    fopen("file.txt","r");
    while(!
    feof($fh))
       
    $strings[] = fgets($fh);
    $unique true;
    foreach(
    $strings as $key => $value)
       if(
    $value == $new_string)
       {
          
    $unique false;
          break;
       }
    fclose($fh);
    $fh fopen("file.txt","a+");
    if(
    $unique)
       
    fwrite($fh,$new_string);
    ?>
    либо сравнение сразу со всем содержимым
    PHP:
    $file file_get_contents("file.txt");
    if(
    strpos($file,$new_string))
       echo 
    "строка не уникальна";
     
    #16339 SHiNiGaMi, 24 Aug 2010
    Last edited: 24 Aug 2010
  20. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Alekzzzander
    PHP:
    $f fopen('file.txt','r+');
    $unique true;
    $new_string 'some string';
    // Не обязательно читать весь файл, ищем только до первого вхождения
    while($row fgets($f4096))
    if (
    trim($row)==$new_string) {$unique false; break;}
    if (
    $uniquefwrite($f$new_string);
    SHiNiGaMi у меня есть смутное сомнение, что первый вариант работать не будет: a+ помещает указатель в конец файла
     
    _________________________
Thread Status:
Not open for further replies.