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

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

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

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

    Joined:
    6 Jun 2006
    Messages:
    175
    Likes Received:
    122
    Reputations:
    75
    переводишь установленное время в unix формат
    получаешь сегодняшнее. Отнимаешь от установленного сегодняшнее, переводишь в удобочитаемый вид с помощью date(), заносишь значения в переменные
    и потом по условиям определяешь, час(ы)(ов) минут(ы)(ут) и т.п.
     
  2. it's my

    it's my Banned

    Joined:
    29 Sep 2007
    Messages:
    335
    Likes Received:
    347
    Reputations:
    36
    а поконкретнее
     
  3. [Raz0r]

    [Raz0r] Elder - Старейшина

    Joined:
    25 Feb 2007
    Messages:
    425
    Likes Received:
    484
    Reputations:
    295
    так не получится, было бы слишком легко =)
    Вот рабочий код:
    Code:
    <?php
    $date=strtotime("31.12.2007 0:00"); // твоя дата
    if ($date>time()) {
    	$date = $date-time();
    	echo "Осталось ";
    	if (floor($date/(60*60*24*30*12)) > 0) {
    		echo floor($date/(60*60*24*30*12))." лет "; 
    		$date = $date - (floor($date/(60*60*24*30*12))*60*60*24*30*12);
    	}
    	if (floor($date/(60*60*24*30)) > 0) {
    		echo floor($date/(60*60*24*30))." месяцев "; 
    		$date = $date - (floor($date/(60*60*24*30))*60*60*24*30);
    	}
    	if (floor($date/(60*60*24)) > 0) {
    		echo floor($date/(60*60*24))." дней "; 
    		$date = $date - (floor($date/(60*60*24))*60*60*24);
    	}
    	if (floor($date/(60*60)) > 0) {
    		echo floor($date/(60*60))." часов "; 
    		$date = $date - (floor($date/(60*60))*60*60);
    	}
    	if (floor($date/(60)) > 0) {
    		echo floor($date/60)." минут "; 
    		$date = $date - (floor($date/(60))*60);
    	}
    	echo floor($date)." секунд";
    }
    else echo "какое-то значение";
    ?>
    
     
    #1083 [Raz0r], 3 Dec 2007
    Last edited: 3 Dec 2007
    1 person likes this.
  4. Fata1ex

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

    Joined:
    12 Dec 2006
    Messages:
    703
    Likes Received:
    300
    Reputations:
    38
    Есть файл вида

    xxxttt;zzzyyy
    rrreee;aaasss
    ...

    Нужно предобразовать этот файл в вид

    zzzyyy;xxxttt
    aaasss;rrreee
    ...

    То есть просто обменять строки перед и после знака ';' местами.
    Спасибо. +++
     
  5. Dr.Z3r0

    Dr.Z3r0 Leaders of the World

    Joined:
    6 Jul 2007
    Messages:
    284
    Likes Received:
    595
    Reputations:
    567
    Вот навскидку... Вроде должно работать...
    Code:
    <?php
    $ggg=file('1.txt');
    $new='';
    foreach($ggg as $key){
    	$key1=substr($key,0,strlen($key)-2);
    	$key1=explode(';',$key1);
    	$new.=$key1[1].';'.$key1[0]."\r\n";
    }
    echo($new);
    ?>
     
    2 people like this.
  6. groundhog

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

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    FILE_TO_PARSE - файл, который нужно пропарсить;
    FILE_TO_SAVE - файл, куда будет скинут результат;
    FILE_DELIMETER - разделитель, по которому нужно парсить;

    PHP:
    <?php

        define
    ("FILE_TO_PARSE""1.txt");
        
    define("FILE_TO_SAVE",  "2.txt");
        
    define("FILE_DELIMETER",    ";");

        
    $file_in  fopen(FILE_TO_PARSE"r") or die("Could not open source file!");
        
    $file_out fopen(FILE_TO_SAVE"w+") or die("Colud not open destination file!");


        while (!
    feof($file_in)) {
            
    $line trim(fgets($file_in));

            if (
    strlen($line 0) && strpos($lineFILE_DELIMETER)) {
                list(
    $part1$part2) = split(FILE_DELIMETER$line);
                
    $new_line sprintf("%s%s%s\n"$part2FILE_DELIMETER$part1);
                
    fputs($file_out$new_line);
            }
        }

        
    fclose($file_out);
        
    fclose($file_in);

        print(
    "Conversion complete!");

    ?>
    или

    PHP:
    <?php

        define
    ("FILE_TO_PARSE""1.txt");
        
    define("FILE_TO_SAVE",  "2.txt");
        
    define("FILE_DELIMETER",    ";");

        
    $file_in  file(FILE_TO_PARSE) or die("Could not open source file!");
        
    $file_out fopen(FILE_TO_SAVE"w+") or die("Colud not open destination file!");


        foreach (
    $file_in as $item) {
            
    $line trim($item);

            if (
    strlen($line 0) && strpos($lineFILE_DELIMETER)) {
                list(
    $part1$part2) = split(FILE_DELIMETER$line);
                
    $new_line sprintf("%s%s%s\n"$part2FILE_DELIMETER$part1);
                
    fputs($file_out$new_line);
            }
        }

        
    fclose($file_out);

        print(
    "Conversion complete!");

    ?>
     
    1 person likes this.
  7. groundhog

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

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    проще всего через file_get_contents("http://blablabla.bla/blabla/bla.bla")
     
    2 people like this.
  8. <<MEN>>

    <<MEN>> Banned

    Joined:
    8 Nov 2007
    Messages:
    52
    Likes Received:
    4
    Reputations:
    0
    Вопрос!
    Если скриптик для выдерания Ip с форума...?Если у кого есть чё-то подобно выложите)
     
  9. scrat

    scrat кодер

    Joined:
    8 Apr 2007
    Messages:
    625
    Likes Received:
    541
    Reputations:
    3
    PHP:
    <?php
     
    echo "IP: ".getenv("REMOTE_ADDR");
    ?>
    выведет IP: твой_ip
    Так же вместо getenv("REMOTE_ADDR") можно юзать: $REMOTE_ADDR или $_SERVER['REMOTE_ADDR']
     
    2 people like this.
  10. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    $REMOTE_ADDR в php5 работать не будет!
     
  11. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Спасибо, помогло.
    Теперь детский вопрос: как лучше сравнить содержимое файла и полученного содержимого, точнее какой лучше функцией пользоваться strstr(), substr(); stristr(); или может лучше через регулярные preg_match() ?
    Короче говоря нужно чтобы проверялось на точное соответствие всего текста О_о

    И ещё вопрос не относящийся к теме....есть ли функция или небольшой скриптик мгновенной перекодировки текста, например из utf-8 или юникода в cp1251 к примеру.
    Если чушь сморозил, больно не бейте :)
     
  12. freddi

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

    Joined:
    5 Jul 2006
    Messages:
    399
    Likes Received:
    243
    Reputations:
    145
    http://forum.antichat.ru/threadnav54587-1-10.html
     
    1 person likes this.
  13. inlanger

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

    Joined:
    7 Jan 2007
    Messages:
    985
    Likes Received:
    283
    Reputations:
    27
    У меня есть программка для телефона(только начал её творить, выбор пал на j2me). По идее она должна получать данные в UTF-8(так как понимает оно только UTF-8).
    Но вот проблема... Отдаёт сайт данные в UTF, а получает программа кракозябры... Причём такие же крякозябры браузер выдаёт, если мой сайт пытаться читать с кодировкой ISO-8859-1.

    Ссылка на программу:
    http://sport.inlanger.org.ua/104038_sportmobile.zip
    Ссылка на скрипт:
    http://sport.inlanger.org.ua/news_p.php?type=world&num=1&text=1 - выдаёт заголовок новости
    http://sport.inlanger.org.ua/news_p.php?type=world&num=1&text=0 - выдаёт основной текст новости

    Какие будут советы?
     
  14. XopoIII

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

    Joined:
    29 Oct 2007
    Messages:
    386
    Likes Received:
    30
    Reputations:
    0
    почему не работает?
    PHP:
    <?php
    header
    ("Location: http://localhost/1.php");
    ?>
    не получается осуществить \r\n я пытался тут везде сувать неполучается=(
    PHP:
    <?php
    include "sql_config.php";  
    $posts mysql_query("select * from news");  
    $total_posts mysql_num_rows($posts);  
    if(!
    intval($_GET['p']) || $_GET['p'] > ceil($total_posts/10)) $_GET['p'] = 1
    $limit intval($_GET['p'])*10-10
    $query mysql_query("select * from news ORDER BY date DESC limit $limit,10");  
    while (
    $row=mysql_fetch_array($query)) { 
    echo 
    "<br><center>".$row['name']."</center><br>".$row['content']."<br>от: ".$row['date2']."\r\n";  
    }  
    mysql_close($db_name);   
    ?>
    и еще я создал в таблице калонку status, и по идее если статус 0 то ничего, а если 1 то доступна админка, и хочу чтобы это проверялось при входе, но неполучается
    PHP:
    if($_POST['game'])
    {
         
    $login mysql_escape_string($_POST['login']);
         
    $pass mysql_escape_string(md5($_POST['pass']));//хешируем введенный пароль
         
    $query "SELECT * FROM users_reg where login='".$login."'&& pass='".$pass."'"
         
    $result mysql_query($query) or die ("Ошибка ");;//обработка запроса
         
    if (mysql_num_rows($result)==0
         {
              echo 
    "<center>Логин <b>".$login."</b> не найден в базе, или вы ввели неправельный пароль.</center>";
              
         }
    }
    если пишу $query = "SELECT * FROM users_reg where login='".$login."'&& pass='".$pass."'&&'".$status."'"; то не знаю как проверить его и не знаю как к нему обратиться, я прошу помогите

    проблемы:
    переадресация,
    новости не переносятся а уходят за экран,
    не могу вот сделать проверку на статус=( помогите

    и не говорите что я тупой я это знаю=)
     
  15. [Raz0r]

    [Raz0r] Elder - Старейшина

    Joined:
    25 Feb 2007
    Messages:
    425
    Likes Received:
    484
    Reputations:
    295
    так должно работать. Видимо у тебя уже выводятся какие-либо данные перед тем, как ты пытаешься отправить свой хэдер
    что значит "осуществить \r\n"? Ты имеешь в виду переход на новую строку? Если да, то тебе поможет тэг <br>, который ты уже используешь. Видимо, какое-то другое значение имеет в твоем понимании \r\n =)
    попробуй так
    PHP:
    <?php
    if($_POST['game']) 

         
    $login mysql_escape_string($_POST['login']); 
         
    $pass mysql_escape_string(md5($_POST['pass']));//хешируем введенный пароль 
         
    $query "SELECT * FROM users_reg where login='".$login."'&& pass='".$pass."'";  
         
    $result mysql_query($query) or die ("Ошибка ");;//обработка запроса 
         
    if (mysql_num_rows($result)==0)  
         { 
              echo 
    "<center>Логин <b>".$login."</b> не найден в базе, или вы ввели неправельный пароль.</center>"
               
         }
         else 
         {
             if (
    mysql_result($result,0,'status')==1define("ADMIN","1"); // админка
         
    }

    ?>
     
  16. XopoIII

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

    Joined:
    29 Oct 2007
    Messages:
    386
    Likes Received:
    30
    Reputations:
    0
    понимание в том что я вывожу текст из таблицы, мне нужно чтобы он сам переходил на новую строку в конце экрана, а не уходил за его пределы, а <br> тут неуместен, у меян он для отделения заголовка стоит=(
     
  17. XopoIII

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

    Joined:
    29 Oct 2007
    Messages:
    386
    Likes Received:
    30
    Reputations:
    0
    а тут я незнаю как обратиться к status, то как ты сделал смысла не несет, ты не выбираеш статус из таблицы и я не выбирал, т.к. не пойму куда его сувать, если после where login='".$login."'&& pass='".$pass."' то ниче не получается.
     
    1 person likes this.
  18. Scipio

    Scipio Well-Known Member

    Joined:
    2 Nov 2006
    Messages:
    733
    Likes Received:
    544
    Reputations:
    190
    Никуда "сувать" его не надо, сделано все правильно, для этого и нужна фунция mysql_result(), в данном случае она берет первое значение в поле status из запроса
    SELECT * FROM users_reg where login='".$login."'&& pass='".$pass."'"
    и если полученное значение равно единице, то устанавливает константу ADMIN в 1

    попробуй сделай такой запрос:
    $query = "SELECT * FROM users_reg where login='$login' and pass='$pass'";

    хотя суть не изменится
     
  19. XopoIII

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

    Joined:
    29 Oct 2007
    Messages:
    386
    Likes Received:
    30
    Reputations:
    0
    так мне же надо запросить сначало это поле, а SELECT * FROM users_reg where login='".$login."'&& pass='".$pass."' тут оно не запрашивается
     
  20. Scipio

    Scipio Well-Known Member

    Joined:
    2 Nov 2006
    Messages:
    733
    Likes Received:
    544
    Reputations:
    190
    О Боги, боги мои, яду мне, яду...
    SELECT * - означает что запрашиваются все поля, в том числе и status

    или ты хочешь получить данные из БД без запроса к БД?

    ты опиши, что ты конкретно хочешь? я например не телепат
     
Thread Status:
Not open for further replies.