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

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

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

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

    Joined:
    1 Mar 2006
    Messages:
    162
    Likes Received:
    37
    Reputations:
    5
    Согласен незачем, достаточно лишь
    PHP:
    $taglist2 fopen("tags.php""a+");
    //Заменить на 
    $taglist2 fopen("tags.php""w);
    //и можно удалить 
    $clear_tags=fopen("tags.php", "w");

    Просто видишь опять та же проблема, файл записывается с пропусками...
     
  2. D Mak

    D Mak Elder - Старейшина

    Joined:
    23 Jun 2007
    Messages:
    136
    Likes Received:
    27
    Reputations:
    0
    \r\n поставил?
     
  3. Zircool

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

    Joined:
    1 Mar 2006
    Messages:
    162
    Likes Received:
    37
    Reputations:
    5
    Как правильно заставить работать функцию scandir() .. Заливаю в корень сайта скрипт 1.php На серваке есть папка data котрую надо просканировать на наличие файлов..
    PHP:
    $files=scandir("/data");
    foreach (
    $files as $file)
    {
    if(
    strlen($file)<3)
    {}
    else
    {

    $filenames[]=$file;

    }
    }
    $names=implode("\r\n",$filenames);
    echo 
    $names;

    Но в ответ ошибка.

     
  4. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Zircool Версия PHP какая? Scandir появился в 5
     
    _________________________
    1 person likes this.
  5. Zircool

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

    Joined:
    1 Mar 2006
    Messages:
    162
    Likes Received:
    37
    Reputations:
    5
    Gifts да на том хостинге PHP Version 4.4.7, перезалил на другой с 5 версией и все работает...
     
  6. OnArs

    OnArs Banned

    Joined:
    1 Aug 2008
    Messages:
    211
    Likes Received:
    13
    Reputations:
    1
    подскажите как на php в файле находить идентичные (одинаковые) строчки?

    Банально брать элементы по порядку и прогонять по всему списку?
     
  7. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    OnArs,
    Чисто предположение, не знаю насчет скорости выполнения:
    PHP:
    $a=file('file.txt');
    if (
    $a!==array_unique($a)) echo 'есть одинаковые строчки';
     
    _________________________
  8. ExZoD

    ExZoD Member

    Joined:
    4 Jun 2008
    Messages:
    23
    Likes Received:
    6
    Reputations:
    0
    ну если файл большой, то он не откроется так (у мну 40 кб не открылось =( ). а так нормуль. тока большой файл лучше тогда построчно считать вручную.
     
  9. pento

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

    Joined:
    3 Jul 2006
    Messages:
    126
    Likes Received:
    24
    Reputations:
    -1
    Может просто прогнать через 'sort -u'?
     
  10. PandoraBox

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

    Joined:
    6 May 2007
    Messages:
    262
    Likes Received:
    176
    Reputations:
    7
    как отфильтровать/экранировать поле data перед отправкой в БД?

    Code:
    $start_date = $_POST['start_date'];
    $end_date = $_POST['end_date'];
    
    $sql = "INSERT INTO 'zakazy' ('namber', 'name', 'start_date', 'end_date')
    	VALUES ('$namber', '$firmname', '$start_date', '$end_date');";
    Code:
    CREATE TABLE `zakazy` (
      `id` int(5) NOT NULL auto_increment,
      `namber` int(5) NOT NULL,
      `name` varchar(255) NOT NULL,
      `start_date` date NOT NULL,
      `end_date` date NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0;
     
    #5250 PandoraBox, 7 Sep 2008
    Last edited: 7 Sep 2008
  11. cylaaaan

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

    Joined:
    31 Aug 2006
    Messages:
    0
    Likes Received:
    44
    Reputations:
    8
    PHP:
    <?
    function 
    chek($text)
    {
    $text htmlspecialchars($text);
    $text addslashes($text);
    return 
    $text;
    }

    $start_date chek($_POST['start_date']);
    $end_date chek($_POST['end_date']);

    $sql "INSERT INTO 'zakazy' ('namber', 'name', 'start_date', 'end_date')
        VALUES ('
    $namber', '$firmname', '$start_date', '$end_date');";

    ?>
     
  12. PandoraBox

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

    Joined:
    6 May 2007
    Messages:
    262
    Likes Received:
    176
    Reputations:
    7
    Code:
    	if ((!is_numeric($namber) && isset($namber)))
    	{
    		$error = true;
    		$error_msg .= ($error_msg) ? "<br>" : "";
    		$error_msg .= 'Неверно заполнено поле "Номер договора"';
    	}
    а если так
    Code:
    	if ($_POST['end_date']){
    		$error = true;
    		$error_msg .= ($error_msg) ? "<br>" : "";
    		$error_msg .= 'Неверно заполнено поле "Дата окончания"';
    	}
    Есть альтернатива is_numeric() для date
     
  13. Chaak

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

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    PHP:
    function is_date($date) {
        if(
    preg_match("#^[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{4}$#",$date))
            return 
    true;
        else
            return 
    false;
    }
    формат даты:
    11.01.2008
    Если соблюден, то true, иначе false
     
    #5253 Chaak, 7 Sep 2008
    Last edited: 7 Sep 2008
    2 people like this.
  14. cylaaaan

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

    Joined:
    31 Aug 2006
    Messages:
    0
    Likes Received:
    44
    Reputations:
    8
    какой формат у даты должен быть?
    можно через регулярку проверить
     
  15. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    ChaaK слешей не многовато?) Тем более что по стандарту для мускуля формат должен быть YYYY-MM-DD
    Так что регулярка будет:
    PHP:
    if (preg_match('/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/',$dat))
     
    _________________________
    #5255 Gifts, 7 Sep 2008
    Last edited: 7 Sep 2008
    1 person likes this.
  16. Zircool

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

    Joined:
    1 Mar 2006
    Messages:
    162
    Likes Received:
    37
    Reputations:
    5
    Не могу понять не работает функция shuffle() для перемешивания массива. есть файл text.txt с таким содержимым
    делаю так
    PHP:
    $tagsforsite=file('text.txt');
    $tagsforsite=shuffle($tagsforsite);
    echo 
    $tagsforsite[0];

    ниак не выводит значения массива, если через foreach делаю выкидывает ошибку

     
    #5256 Zircool, 7 Sep 2008
    Last edited: 7 Sep 2008
  17. Chaak

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

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    Я думал shuffle возвращает булевое значение(true||false).
    Поэтому не
    PHP:
    $array shuffle($array);
    а
    PHP:
    shuffle($array);
    У тебя после перемешивания, в переменную кладется true, поэтому и форич ругается. В следующий раз отлаживай скрипты пошагово.
     
    #5257 Chaak, 7 Sep 2008
    Last edited: 7 Sep 2008
    2 people like this.
  18. DiffuSer

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

    Joined:
    26 Sep 2007
    Messages:
    29
    Likes Received:
    6
    Reputations:
    0
    Народ, новая суровая просьба от меня.

    Как пропарсить Xml так, чтобы наименования тэгов были столбиками таблички, а данные в каждом повторяющемся тэге были строчкой таблицы? Ну т.е. представить Xml-данные в виде таблички Html, строчки в которой можно, допустим, покрасить, т.е. работать с ней уже, как с обычной Html-табличкой. Надеюсь, адекватно пояснил.
     
  19. Dr.Frank

    Dr.Frank Elder - Старейшина

    Joined:
    31 Jul 2002
    Messages:
    301
    Likes Received:
    72
    Reputations:
    12
    2DiffuSer
    на примере rss античата:
    PHP:
    <?php
    $s
    =implode('',file("http://forum.antichat.ru/news.rss"));
    $s=strstr($s,"<item>");              //Строка, начиная с которой нужно работать
    preg_match_all("/<([a-zA-Z0-9:\"= ]+)>([^<]*)<\/[a-zA-Z0-9:]+>/",$s,$match);
    $col=count(array_unique($match[1])); //Количество колонок
    echo "<table border=1>";
    echo 
    "<tr>";
    for(
    $q=0;$q<$col;$q++){              //Выводим
      
    echo "<td>".$match[1][$q]."</td>"//имена
    }                                    //колонок
    echo "</tr>";
    /////////////////////////////////////Далее выводим данные
    for($w=0;$w<(count($match[1])/$col);$w++){
    echo 
    "<tr>";
      for(
    $q=0;$q<$col;$q++){
        echo 
    "<td>".$match[2][$q+$w*$col]."</td>";
      }
    echo 
    "</tr>";
    }
    echo 
    "</table>";
    ?>
    правда не выводится одна строка:
    Code:
    <content:encoded><![CDATA[
    но это можно доделать... xD
     
    #5259 Dr.Frank, 8 Sep 2008
    Last edited: 8 Sep 2008
    1 person likes this.
  20. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    А нафига тогда спрашиваешь?
     
Thread Status:
Not open for further replies.