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

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

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

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

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    Gifts он скорее всего как и я не понел про какую точку с запятой идёт речь

    я её после while только сейчас заметили и думал что вы говорите о };
     
  2. ~NeiTRoN~

    ~NeiTRoN~ Elder - Старейшина

    Joined:
    3 Jul 2008
    Messages:
    64
    Likes Received:
    2
    Reputations:
    0
    Народ а как сделать так чтобы $row[content] выводился не весь, а допустим только до 200 символа, или еще лучше только кусок с запрашиваемым словом?
     
  3. BlackSun

    BlackSun Banned

    Joined:
    1 Apr 2007
    Messages:
    989
    Likes Received:
    1,168
    Reputations:
    446
    substr или через регексп
     
  4. ~NeiTRoN~

    ~NeiTRoN~ Elder - Старейшина

    Joined:
    3 Jul 2008
    Messages:
    64
    Likes Received:
    2
    Reputations:
    0
    А чем будет эфективней?
     
  5. BlackSun

    BlackSun Banned

    Joined:
    1 Apr 2007
    Messages:
    989
    Likes Received:
    1,168
    Reputations:
    446
    Просто отрезать строку - substr, вырезать какую то часть хер знает по какому принципу - регексп.
     
  6. Twoster

    Twoster Members of Antichat

    Joined:
    20 Aug 2008
    Messages:
    287
    Likes Received:
    402
    Reputations:
    159
    Плюс ко всему регуляркой лучше чильно не баловаться, с точки зрения оптимизации! Регулярные выражения более ресурсоемкие!
     
  7. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    Вот например - есть переменная
    Code:
    $a = 'Напомним, 27 августа страны НАТО обратились к России с требованием пересмотреть решение о признании независимости Абхазии и Южной Осетии. Напомним, накануне глава российского государства Дмитрий Медведев сообщил, что подписал указы о признании Российской Федерацией независимости Южной Осетии и независимости Абхазии, и призвал другие страны последовать этому примеру. США осуждают решение президента России признать в качестве независимых государств регионы Грузии Южную Осетию и Абхазию.';
    Тогда код
    Code:
    echo substr($a, 0, 137);
    Выведет 137 первых символов
    Но если нам к примеру надо запихнуть в массив все предложения, то тут поможет регексп
    Code:
    print_r(preg_split('~\s*[.!?]\s*(?=.+)~i', $a));
     
    1 person likes this.
  8. ~NeiTRoN~

    ~NeiTRoN~ Elder - Старейшина

    Joined:
    3 Jul 2008
    Messages:
    64
    Likes Received:
    2
    Reputations:
    0
    С substr я разобрался, а вот что выведет строка
    Code:
    print_r(preg_split('~\s*[.!?]\s*(?=.+)~i', $a));
    чет не могу понять=((
     
  9. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    Может откроешь книгу по пхп, заодно почитаешь про регулярные выражения?
     
  10. ~NeiTRoN~

    ~NeiTRoN~ Elder - Старейшина

    Joined:
    3 Jul 2008
    Messages:
    64
    Likes Received:
    2
    Reputations:
    0
    Да я читал, но я трудно понимаю когда просто функции и словестное описание ее работы. Вот допустим если показана функция и потом пример ее работы и того что она выводит, я гораздо лучше понимаю,
    если не сложно скажи всетаки что выведет
    PHP:
    print_r(preg_split('~\s*[.!?]\s*(?=.+)~i'$a));
    =))
     
  11. mr.The

    mr.The Elder - Старейшина

    Joined:
    30 Apr 2007
    Messages:
    1,080
    Likes Received:
    456
    Reputations:
    38
    действительно. там я и незаметил = ]
     
  12. Chaak

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

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    А зачем вообще точки с запятыми после циклов ставить?
     
  13. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    ~NeiTRoN~
    По регуляркам ты ничего не читал

    Ф-ция preg_split возвращает массив, разделяя текст на точку, воскл. знак или вопр. знак. Ф-ция print_r выводит этот массив.

    Это регулярное выражение.

    Помогать по регуляркам тебе никто не будет, до тех пор, пока не прочтёшь это
    http://php.ru/manual/reference.pcre.pattern.syntax.html
    http://php.ru/manual/reference.pcre.pattern.modifiers.html
     
  14. Ha_Vi

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

    Joined:
    19 Aug 2008
    Messages:
    17
    Likes Received:
    22
    Reputations:
    0
    интересно почему ?

    Помогите со скриптом...

    PHP:

    <?php      $db_host 'localhost';  $db_user 'root';  $db_pass '';  $db_name 'phones';    $connect mysql_connect $db_host$db_user$db_pass );  $db mysql_select_db $db_name );    function result($phone_nomer$phone_name$phone_street$phone_house$phone_flat) {       $s "<tr><td class=tabl>{nomer}<td class=tabl>{name}</td><td class=tabl>{street}</td><td class=tabl>{house}</td><td class=tabl>{flat}</td></tr>";       $s str_replace "{nomer}"$phone_nomer$s );       $s str_replace "{name}"$phone_name$s );       $s str_replace "{street}"$phone_street$s );       $s str_replace "{house}"$phone_house$s );       $s str_replace "{flat}"$phone_flat$s );       return $s;  }    echo '<html>         <head>           <title>Он-лайн База городских номеров г.Астрахань</title>          <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />          <style type="text/css">          a:link        {color: #9a9a9a; text-decoration: none;}          a:active        {color: #9a9a9a; text-decoration: none;}          a:visited        {color: #9a9a9a; text-decoration: none;}          a:hover        {color: #000000; text-decoration: none;}            input, textarea, select          {            background-color: #ffffff;            border:#000000 1pt solid;            color: #000000;            font-size: 9px;            margin: 0px;            padding-bottom: 1px;            padding-left: 2px;            padding-right: 0px;            padding-top: 0px;            font-family: Verdana, arial, Helvetica;            line-height: 9pt;          }                    body, table          {            font-family: Verdana, arial, Helvetica;            color: #000000;            font-size: 11px;          }          .red          {            color: red          }          .tabl          {            border:#000000 1pt solid;          }         </style>        </head>        <body bgcolor="#f0f0f0">';  $form "<form method='POST' name='submit'><table border=0>  <td width='150'>Введите номер</td><td><input type='text' name='nomer' size='20'></td>  <td width='150'>Имя</td><td><input name='name' type='text' size='20'></td>  <td width='150'>Улица</td><td><input name='street' type='text' size='20'></td>  <td width='150'>Дом</td><td><input name='house' type='text' size='20'></td>  <td width='150'>Квартира</td><td><input name='flat' type='text' size='20'></td>  <td width='150'>&nbsp;</td><td><input type='submit' name='phones' value='Искать'></td>  </table></form>";  if (! isset ( $_POST ['phones'] )) {       echo $form;  } else {       $phone_nomer strip_tags htmlspecialchars $_POST ["nomer"] ) );       $phone_name strip_tags htmlspecialchars $_POST ["name"] ) );       $phone_street strip_tags htmlspecialchars $_POST ["street"] ) );       $phone_house strip_tags htmlspecialchars $_POST ["house"] ) );       $phone_flat strip_tags htmlspecialchars $_POST ["flat"] ) );              $error 0;              if ($phone_nomer == "" and $phone_name == "" and $phone_street == "" and $phone_house == "" and $phone_flat == "") {            $error 1;            echo "<div class='red'>Вы не заполнили ни одного поля!</div><br>" $form;            die ();       } elseif (! is_numeric $phone_nomer ) and $phone_nomer != "") {            $error 1;            echo "<div class='red'>Номер телефона состоит из цифр!</div><br>" $form;            die ();       } elseif (! is_numeric $phone_flat ) and $phone_flat != "") {            $error 1;            echo "<div class='red'>Номер квартиры состоит из цифр!</div><br>" $form;            die ();       } elseif ($error == 0) {           $sql "SELECT * FROM `phones` WHERE `nomer` LIKE '%$phone_nomer%' AND `name` LIKE '%$phone_name%' AND `street` LIKE '%$phone_street%' AND `house` LIKE '%$phone_house%'AND `flat` LIKE '%$phone_flat%'";            $query mysql_query $sql$connect );            $counts mysql_num_rows $query );                        echo "<b>Найдено " $counts " записи(ей)</b><br><br>";                        echo $form"<table border=0><tr><td  width='100' class=tabl><b>Номер</b></td><td width='150' class=tabl><b>Имя</b></td><td class=tabl width='150'><b>Улица</b></td><td class=tabl width='75'><b>Дом</b></td><td class=tabl width='75'><b>Квартира</td></tr>";            for($i 0$i $counts$i ++) {                 $nomer mysql_result($query,$i,"nomer");                 $name mysql_result($query,$i,"name");                 $street mysql_result($query,$i,"street");                 $house mysql_result($query,$i,"house");                 $flat mysql_result($query,$i,"flat");            echo result($nomer,$name,$street,$house,$flat);            }            echo "</table><br>";       }  }    ?>





    при запросе номера выводит ошибку ...

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in Z:\home\172.16.12.35\www\phone\index.php on line 98
    Найдено записи(ей)...
    :confused:


    и вот еще что... при обновлении запроса, результаты не очищаються, нажимаю обновить Осел выдает запрос на отправку данных, как это убрать?
    чтобы при обновлении были чистые поля для заполнения
     
    #5054 Ha_Vi, 28 Aug 2008
    Last edited: 28 Aug 2008
    2 people like this.
  15. Doom123

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

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    папробуй

    $query = mysql_query ( $sql, $connect ) or die(mysql_error());

    обнови страницу метатегом например
     
  16. Ha_Vi

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

    Joined:
    19 Aug 2008
    Messages:
    17
    Likes Received:
    22
    Reputations:
    0
    No database selected
     
  17. Ha_Vi

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

    Joined:
    19 Aug 2008
    Messages:
    17
    Likes Received:
    22
    Reputations:
    0
    так а кудаже без нее, ....
    вот небольшой кусок... может у меня одного эта ошибка
    CREATE TABLE PHONES (
    nomer MEDIUMINT(6) default NULL,
    name varchar(60) default NULL,
    street varchar(60) default NULL,
    house varchar(60) default NULL,
    flat varchar(60) default NULL
    ) TYPE=MyISAM;

    INSERT INTO PHONES values ('220000', 'ВЯЗГИН ВВ', 'ТУРГЕНЕВА', '1', '26');
    INSERT INTO PHONES values ('220001', 'ДМИТРИЕВА ТМ', 'ЧУГУНОВА', '14', '6');
    INSERT INTO PHONES values ('220002', 'НАЗАРКИНА ЛА', 'НАБ.1ГО МАЯ', '67', '6');
    INSERT INTO PHONES values ('220003', 'САМОЙЛОВ НС', 'ЛЫЧМАНОВА', '54', '0');
    INSERT INTO PHONES values ('220004', 'РАГИМОВ ВСО', 'ПЕСТЕЛЯ', '32', '10');

    так в чем же дело, конекта к базе чтоли нет?
     
  18. Naydav

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

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    а выбрать базу ?
    Тебе же пишет - "No database selected"
    Не выбрана база данных, юзай mysql_select_db($my_database)

    И убедись, что переменная $my_database правильно инициализирована (может префикс не подставил)

    пс $db_name = 'phones'; - это НЕ имя таблицы в базе, а имя самой базы!!!
     
    #5058 Naydav, 28 Aug 2008
    Last edited: 28 Aug 2008
  19. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Ha_Vi А ты таблицу то из базы выбрал?))) Оно же mysql_select_db?
     
    _________________________
  20. Chaak

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

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    Ээ наверное в цикле какбэ или рекурсивно
     
Thread Status:
Not open for further replies.