За последние 24 часа нас посетили 62204 программиста и 1801 робот. Сейчас ищут 817 программистов ...

Из .txt в mysql

Тема в разделе "PHP для новичков", создана пользователем 6stPROD, 7 фев 2013.

  1. Swapf

    Swapf Активный пользователь

    С нами с:
    8 окт 2012
    Сообщения:
    82
    Симпатии:
    0
    Адрес:
    Россия, Самарская обл, Сызрань
    Значит в стимид используются символы-разделители. В принципе, такие задачи лучше регулярными выражениями делать, просто я сразу не подумал, что в steamid и username допустимы символы | и -. Кстати, ; тоже разрешена? скинь мне лог-файл, который вызывает косяки.
     
  2. 6stPROD

    6stPROD Активный пользователь

    С нами с:
    6 фев 2013
    Сообщения:
    124
    Симпатии:
    0
    Адрес:
    Тутаев, Ярославская область. Российская Федерация
    Не понял какой файл?
     
  3. Swapf

    Swapf Активный пользователь

    С нами с:
    8 окт 2012
    Сообщения:
    82
    Симпатии:
    0
    Адрес:
    Россия, Самарская обл, Сызрань
    allinfo_players.txt
     
  4. 6stPROD

    6stPROD Активный пользователь

    С нами с:
    6 фев 2013
    Сообщения:
    124
    Симпатии:
    0
    Адрес:
    Тутаев, Ярославская область. Российская Федерация
    Я же присылал его на мыло )))
     
  5. Swapf

    Swapf Активный пользователь

    С нами с:
    8 окт 2012
    Сообщения:
    82
    Симпатии:
    0
    Адрес:
    Россия, Самарская обл, Сызрань
    Все, я понял в чем дело. Щас сделаю.

    Добавлено спустя 27 минут 12 секунд:
    Пробуй!
    Код (Text):
    1. <?php
    2. mysql_connect("localhost", "root", "");
    3. mysql_select_db("one");
    4.  
    5. $f = fopen('allinfo_players.txt', 'r');
    6.  
    7. $sql = array();
    8. while(!feof($f))
    9. {
    10.     $row = fgets($f);
    11.     //var_dump($row);
    12.     if((strlen($row)==2)||!$row) continue;
    13.     $data = explode("|", $row);
    14.    
    15.     if(count($data)>3)
    16.     {
    17.         for($i=0; $i<count($data)-3; $i++)
    18.         {
    19.         $data[0].="|".$data[$i+1];
    20.         }
    21.         $data[1]=$data[count($data)-2];
    22.         $data[2]=$data[count($data)-1];
    23.     }
    24.    
    25.     $date_time_and_username_src = $data[0];
    26.     $date_time = explode("-", $date_time_and_username_src);
    27.     $date = substr($date_time[0], 2);
    28.     if(count($date_time)>2)
    29.     {
    30.         for($i=2; $i<count($date_time); $i++)
    31.         {
    32.         $date_time[1].="-".$date_time[$i];
    33.         }
    34.     }
    35.     $time_username = $date_time[1];
    36.     $time_username = explode(":", $time_username);
    37.     $h = trim($time_username[0]);
    38.     $m = trim($time_username[1]);
    39.     $s = trim($time_username[2]);
    40.     $username = trim($time_username[3]);
    41.     $date = explode("/", $date);
    42.     $y = trim($date[2]);
    43.     $month = trim($date[0]);
    44.     $d = trim($date[1]);
    45.     $sid = substr($data[1], 9);
    46.     $ip = explode(":", $data[2]);
    47.     $sid = trim($sid);
    48.     $ip = trim($ip[1]);
    49.    
    50.     echo "Год ".$y."<br>";
    51.     echo "Месяц ".$month."<br>";
    52.     echo "Число ".$d."<br>";
    53.     echo "Часов ".$h."<br>";
    54.     echo "Минут ".$m."<br>";
    55.     echo "Секунд ".$s."<br>";
    56.     echo "Пользователь ".$username."<br>";
    57.     echo "STEAMID ".$sid."<br>";
    58.     echo "IP ".$ip."<br>";
    59.     echo "<hr>";
    60.     $sql[] = '("'.$y.'-'.$month.'-'.$d.' '.$h.':'.$m.':'.$s.'", "'.$username.'", "'.$sid.'", "'.$ip.'")';
    61.    
    62. }
    63. fclose($f);
    64. echo implode(',', $sql);
    65. mysql_query('INSERT INTO tbl_logs (log_date, username, steamid, hostname) VALUES'.implode(',', $sql));
    66. ?>
     
  6. 6stPROD

    6stPROD Активный пользователь

    С нами с:
    6 фев 2013
    Сообщения:
    124
    Симпатии:
    0
    Адрес:
    Тутаев, Ярославская область. Российская Федерация
    Была бы кнопка "сказать миллион спасибо" я бы без разговора нажал бы ее ) ! Огромное спасибо!
     
  7. Swapf

    Swapf Активный пользователь

    С нами с:
    8 окт 2012
    Сообщения:
    82
    Симпатии:
    0
    Адрес:
    Россия, Самарская обл, Сызрань
    Пожалуйста)
     
  8. 6stPROD

    6stPROD Активный пользователь

    С нами с:
    6 фев 2013
    Сообщения:
    124
    Симпатии:
    0
    Адрес:
    Тутаев, Ярославская область. Российская Федерация
    Еще вопрос созрел, основываясь на надписи в базе возможно ли сделать вывод картинки с аналогичным названием из определенной папки?

    Например в базе существует в определенном месте название "de_dust2" кодом я вывел

    Код (Text):
    1. // Функция онлайн оффлайн сервера
    2. error_reporting(0);
    3. $IP = array(
    4.     "109.197.254.86:27015 [6stPROD]: " => "109.197.254.86:27015",
    5. );
    6. while(list($ServerName,$Host)=each($IP)) {
    7.     list($IPAddress,$Port)=explode(":",$Host);
    8.     echo $ServerName;
    9.     if ($fp=fsockopen($IPAddress,$Port,$ERROR_NO,$ERROR_STR,(float)0.5)) {
    10.         echo("<font color='green'> Online </font><br>");
    11.         fclose($fp);
    12.         // вывод данных о карте сервера с базы
    13.         $sdd_db_host='localhost';// ваш адрес где находится, хостится ваша база данных
    14.         $sdd_db_name='sts';// Имя базы данных с которой вы хотите работать, так как их может быть множество
    15.         $sdd_db_user='root';// логин доступ к базе данных
    16.         $sdd_db_pass='';// пароль доступа к базе данных
    17.         @mysql_connect($sdd_db_host,$sdd_db_user,$sdd_db_pass);// устанавливаем связь с сервером
    18.         @mysql_select_db($sdd_db_name);// переключаемся на нужную нам базу данных
    19.         $result=mysql_query('SELECT * FROM `sts` ORDER BY id DESC LIMIT 1');// делаем выборку из таблицы
    20.         while($row=mysql_fetch_array($result)) {
    21.             echo '<p>Карта : <font color="green">'.$row['map'].'</font></p>'; // выводим данные
    22.         }
    23.     }
    24.     else {
    25.         echo ("<font color='red'> Offline </font><br>");
    26.     }
    27. }
    Читается - пока порт сервера отвечает из таблицы показывать последнюю строчку из столбика "map"

    Как добавить сюда - например - пока порт сервера отвечает из таблицы показывать последнюю строчку из столбика "map" и (папка с картинками) название карты.png ???

    Есть варианты?
     
  9. Swapf

    Swapf Активный пользователь

    С нами с:
    8 окт 2012
    Сообщения:
    82
    Симпатии:
    0
    Адрес:
    Россия, Самарская обл, Сызрань
    Ну да, можно, если я правильно понял. Например, $row['map'] = 'http://site.com/img/maps/map1.png'
    вместо
    Код (Text):
    1. echo '<p>Карта : <font color="green">'.$row['map'].'</font></p>'; // выводим данные
    пишем
    Код (Text):
    1. echo '<img src=" '.$row['map'].' " class="css_class_you_like">';
    Т.е. просто в атрибут srс тега img подставляем значение из таблицы БД, которое является адресом изображения. Будет отображаться картинка вместо названия карты. Это имелось в виду?

    Добавлено спустя 2 минуты 40 секунд:
    А вообще запрос в цикле - это очень-очень неправильно. Вынеси его из тела цикла.

    Добавлено спустя 10 минут 3 секунды:
    Вот это должно стоять до while.
    Код (Text):
    1.        
    2. $sdd_db_host='localhost';// ваш адрес где находится, хостится ваша база данных
    3.         $sdd_db_name='sts';// Имя базы данных с которой вы хотите работать, так как их может быть множество
    4.         $sdd_db_user='root';// логин доступ к базе данных
    5.         $sdd_db_pass='';// пароль доступа к базе данных
    6.         @mysql_connect($sdd_db_host,$sdd_db_user,$sdd_db_pass);// устанавливаем связь с сервером
    7.         @mysql_select_db($sdd_db_name);// переключаемся на нужную нам базу данных
    8.         $result=mysql_query('SELECT * FROM `sts` ORDER BY id DESC LIMIT 1');// делаем выборку из таблицы
     
  10. 6stPROD

    6stPROD Активный пользователь

    С нами с:
    6 фев 2013
    Сообщения:
    124
    Симпатии:
    0
    Адрес:
    Тутаев, Ярославская область. Российская Федерация
    Имелось ввиду это ) но структура таблицы мне не позволит
    На сервере стоит плагин, информация заливается именно из него а конкретно ID.. MAP... и тд

    То есть мне просто не засунуть туда информашку о картинке карты

    На счет этого кода
    Код (Text):
    1. echo '<img src=" '.$row['map'].' " class="css_class_you_like">';
    В классе то я пропишу картинку, но мне кажется она будет одна и та же вне зависимости от названия карты

    Функцию я думаю надо поставить так чтобы она искала в папке с картинками точное название карты, выводящейся в данный момент и выводила ее на страничку

    Добавлено спустя 12 минут 55 секунд:
    В принципе код на картинку работает, выдает правильное название, но без расширения )
    а вот как в пхп коде вставить таблицу стилей и код картинки ) я еще не придумал )

    Добавлено спустя 2 минуты 33 секунды:
    Код (Text):
    1.             echo '<p>Карта : <font color="green">'.$row['map'].'</font></p>';
    2.             echo '<img src=" '.$row['map'].' " map">';          // выводим данные
    На данный момент стоит так.....картинку не показывает, ссылаясь на домен и название мапы после слеша...как вот путь до картинки указать ) по названию? )

    Добавлено спустя 5 минут 18 секунд:
    Код (Text):
    1. echo '<img src="img/map/'.$row['map'].'.png " class="map">';            // выводим данные
    Все сделано )) я добавил путь и вконце вывадимого названия приписал расширение )) теперь все в ажуре )
     
  11. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Код (PHP):
    1. <?php
    2. $f=file('txt.txt');
    3. for($i=0;$i<sizeof($f);++$i) {
    4.     $ex=explode('|',$f[$i]);
    5.     for($l=0;$l<sizeof($ex);++$l) {
    6.         $e=explode(':',$ex[$l]);
    7.         $e=$e[sizeof($e)-1];
    8.         echo nl2br($e.'
    9.         ');
    10.     }
    11. }
    12. ?>
    Код можно доработать, и отделить части если потребуются.
    Но ни как не этот хлам говна, что дали выше... =(
     
  12. 6stPROD

    6stPROD Активный пользователь

    С нами с:
    6 фев 2013
    Сообщения:
    124
    Симпатии:
    0
    Адрес:
    Тутаев, Ярославская область. Российская Федерация
    Спасибо большое! Я уже разобрался
     
  13. Swapf

    Swapf Активный пользователь

    С нами с:
    8 окт 2012
    Сообщения:
    82
    Симпатии:
    0
    Адрес:
    Россия, Самарская обл, Сызрань
    Ты не прав! Есть, конечно, пара моментов, которые можно переделать и убрать кучу переменных, которые я вводил для наглядности, тогда код уменьшится вдвое. Но в целом, все хорошо. И не забудь, что в юзернэйм и стимид могут встречаться символы |,- и :
     
  14. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Копайте в сторону парсинга ini или csv файлов, раз такое дело.