PHP Народ,как сделать вывод текста из бд по рейтингу.. Да вообще --- как сделать этот рейтинг? Вот я сделал страницу,на ней всё есть(рега\вход\выход\куки) при регистрации создаётся файл с новым именем(именем юзера), а вообще --- пишется файл,типа : all.dat в нём: Имя|0 Имя|1 Имя|2 Ну вот,а надо сделать что-то типа: Имя|0|Рейтинг:80% Имя|1|Рейтинг:10% Имя|2|Рейтинг:10% А если регнется новый,то: Имя|0|Рейтинг:70% Имя|1|Рейтинг:10% Имя|2|Рейтинг:10% Имя|3|Рейтинг:10% А если кто-то повысит рейтинг,то,например,так: Имя|0|Рейтинг:50% Имя|1|Рейтинг:20% Имя|2|Рейтинг:20% Имя|3|Рейтинг:10% И самое главное: Вывод инфы: Допустим файл содержит: Имя|4|Рейтинг:50% Имя|1|Рейтинг:20% Имя|2|Рейтинг:20% Имя|3|Рейтинг:10% Тогда вывод: Имя|4|Рейтинг:50% Имя|1|Рейтинг:20% Имя|2|Рейтинг:20% Имя|3|Рейтинг:10% --- не активен,модератор удали его! Вопрос: как это организовать? Если надо --- выложу скрипт...
сохраняй, например, так Code: Имя|0|80 а при чтении, если юзеров не много, загоняй все массив и сортируй (http://php.net/manual/en/array.sorting.php) по рейтингу.
Вот например у тебя npimer.txt,а в нём: 7111222 111222 Надо найти 111222 или проверить - есть ли она вообще? Вот код: PHP: $ischem="111222"; $TBoi_fail = "npimer.txt"; $massiv = @file($TBoi_fail); $lines = count($massiv); for ( $i = 0; $i <= $lines; $i++ ){ list($chislo,$chislo2)=explode(' ', $massiv[$i]); if($ischem==$chislo){ Exit("Найдено совпадение!<BR>Искали:$ischem<BR>Найдено:$chislo } if($i==$lines){ die("Совпадений нет!"); } } В данном случае появится: Найдено совпадение! Искали:111222 Найдено:111222
сортировка, например, такая: PHP: <?php $f = file("users.dat"); $users = Array(); for ($i=0; $i<count($f); $i++) { $users[] = explode('|', $f[$i]); settype($users[$i][2], int); } function cmp($a, $b) { if ($a[2] == $b[2]) { return 0; } return ($a[2] < $b[2]) ? -1 : 1; } usort($users, "cmp"); print_r($users); ?> файл users.dat Code: a|0|1 aa|12|100 bvn|42|3 рейтинг - третий элемент, то есть это будут 1, 100 и 3
Переделал скрипт,но не пойму принцип работы,хотя написал сам... PHP: <?php $f ="clans/all.dat"; $general = @file($f); $lines = count($general); for ( $i = 0; $i <= $lines; $i++ ){ list($nenado,$nenado2,$nado)=explode('|', $general[$i]); if($nado < '100'){ break; } if($nado > ($lines / 100 * $nado)){ echo "<table width=100% cellpadding=2 cellspacing=1 class=forumline> <tr> <th width=62% colspan=2 class=thCornerL height=25 nowrap=nowrap>\"$nado\"</th> <th width=28% class=thCornerR nowrap=nowrap>s</th> </tr>"; } if($i==$lines){ $dont_registr = 'yes'; } } ?> Вот он и выводит "80 " s "20 " s А куда 3й делася? Я брал 3 строки,появилось 2
попробуй добавить обработчики исключений рядом с break как-нибудь так: PHP: <?php $f = "clans/all.dat"; $general = @file($f); $lines = count($general); for ( $i=0; $i<$lines; $i++ ) { list($nenado,$nenado2,$nado)=explode('|', $general[$i]); if( (int)$nado < 100 ){ echo 'Остановилось, потому что $nado меньше 100<br>'; break; } else if( $nado > ($lines / 100 * $nado) ) { echo "<table width=100% cellpadding=2 cellspacing=1 class=forumline> <tr> <th width=62% colspan=2 class=thCornerL height=25 nowrap=nowrap>\"$nado\"</th> <th width=28% class=thCornerR nowrap=nowrap>s</th> </tr>"; } else { echo '$nado не вывелось потому что $nado больше чем ($lines/100*$nado)<br>'; } if($i==$lines) { $dont_registr = 'yes'; } }
Мне не надо остановку,мне надо просто вывести список по рейтингу.. Весь,а вот если рейтинг равен 10(у новых записей так стандартно),то выводится токо первая запись(
Подскажите скрипт, который не позволяет нажать на ссылку пока не нажмешь по другой ссылке. Пример: ссылка на скачивание "Скачать", когда на неё нажимаешь, появляется окно в котором нужно обязательно нажать на ссылку, тогда ссылка "Скачать" начинает перенаправлять куда нужно. Вот как то так)
Banderos_Russia, а почему бы не сделать, что бы в этом новом окне и была ссылка на реальное "Скачать"?
мб тупой вопрос, но если есть допустим слово q1w2e3r4 и нужно перевести его в масссив так чтобы каждая буква стала элементом масссива попорядку?
строка это уже и есть как бы массив: echo $str[0]; или же можно так. PHP: echo '<pre>'; $str='q1w2e3r4'; $str=str_split($str); print_r($str); echo '</pre>';
нужна функция крторая вытащит из переменной строку по шаблону(например чтоб ватаскивал строку которая начинаяться с 123).
регулярные выражения? PHP: if (preg_match('/^123(.*)/i', $mystring, $match)) {echo 'Строка начинающаяся с 123: '.$match[0];} как то так.
Нужна помощь с рандомным перебором проксей, вот исхордный код PHP: $match='#https?://([^/\s]+)\S+#i'; preg_match_all($match, $_POST['urls'], $matches); $matches = array_values(array_combine($matches[1],$matches[0])); $mh = curl_multi_init(); //Create multithread $handles = array(); $useragent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"; // set user agent //File with proxies to array $proxyarr = file('http://localhost/checkproxy/proxies.txt', FILE_IGNORE_NEW_LINES); //echo $proxyarr[array_rand($proxyarr, 1)]."<br>"; for ($i=0; $i<sizeof($matches);$i++) { //Create URL $request = 'someurl'; // create a new single curl handle $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $request); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 600); curl_setopt($ch, CURLOPT_USERAGENT, $useragent); // add this handle to the multi handle curl_multi_add_handle($mh,$ch); // put the handles in an array to loop this later on $handles[] = $ch; } // execute the multi handle $running=null; do { curl_multi_exec($mh,$running); // added a usleep for 0.25 seconds to reduce load usleep (25000); } while ($running > 0); // get the content of the urls (if there is any) for($i=0;$i<count($handles);$i++) { $output = unserialize(curl_multi_getcontent($handles[$i])); //ban check if (!isset($output[ResultSet][totalResultsAvailable])) { echo "<b>BAN</b><br>"; echo "$request"; exit(0); } $result[$matches[$i]]=$output[ResultSet][totalResultsAvailable]; curl_multi_remove_handle($mh,$handles[$i]); } Скрипт ходит по http и дергает URL, который отдает ему массив. Но сам ресурс имеет свойство периодически банить по IP, для этого и нужны прокси. Я бы с удовольствием воткнул в цикл Code: for($i=0;$i<count($handles);$i++) нечто вроде Code: curl_setopt($ch, CURLOPT_PROXY, $proxyarr[array_rand($proxyarr, 1)]); и у меня даеже есть проверка на бан Code: if (!isset($output[ResultSet][totalResultsAvailable])) но как сделать так, чтобы в случае бана он сделал для этого же урл новую итерацию забора контента, но уже с новой рандомной проксей из того же массива $proxyarr? Стоит также учесть тот момент, что на следующей прокси результата тоже может не быть и прокси надо перебирать до победного. Я сам вижу лишь вариант в добавлением неуспешных элементов(урлов) в спец массив и повторным прогоном их с рандомными проксям, но решение кривовато.
Banderos_Russia Вот пример с кнопкой,если надо примерно так же и с ссылкой будет: Code: <input type="checkbox" name="test" onclick="document.form.submit.disabled=false;" value="0"> <input type="submit" name="submit" disabled value="Example" /> -=- Мне тоже нужна помощь,в общем делаю авторизацию/регистрацию С регистрацией,все на ура,но вот с авторизацией проблема в частности с тем,что не получается проверить валидность пароля Вот такой у меня код: PHP: <?php include("uconfig.php"); if(!isset($_POST['usubmit'])) { $ustatus='<font color="red">Форма входа пользователей</font>'; } else { $login=$_POST['ulogin']; $password=md5($_POST['upassword']); $result = mysql_query("SELECT * FROM user WHERE login = $login"); $users = mysql_num_rows($result); while($row = mysql_fetch_array($result)) { $mpassword=$row['password']; echo $mpassword; } } ?> В uconfig.php подключение к mysql и еще мелкие опции