Помошь по php

996
.
Любителям по-кидаться тапками: "Болтовня ничего не сто́ит, покажите свой код"
.
# Blade (22.05.2016 / 19:47)
ты в каждое поле по несколько оценок вводишь?
максимум 7 оценок
.
вообщем так
http://kaz-muz.kz/formula/current.php
там надо вводить максимум 7 оценок
вот мой говнокод))
mb_internal_encoding('UTF-8');
$act = $_GET['act'];

switch($act) {
case 'enu':
    
$r1 = htmlspecialchars(trim($_POST['r1']));
$r2 = htmlspecialchars(trim($_POST['r2']));
$r3 = htmlspecialchars(trim($_POST['r3']));
$r4 = htmlspecialchars(trim($_POST['r4']));
$rk1 = htmlspecialchars(trim($_POST['rk1']));
$rk2 = htmlspecialchars(trim($_POST['rk2']));

$lab = explode(" ",$r1);
$prak = explode(" ",$r2);
$sro = explode(" ",$r3);
$lek = explode(" ",$r4);

$lab1 = (($lab[0]+$lab[1]+$lab[2]+$lab[3]+$lab[4]+$lab[5]+$lab[6])/count($lab))*0.3;
$lab2 = (($lab[0]+$lab[1]+$lab[2]+$lab[3]+$lab[4]+$lab[5]+$lab[6])/count($lab))*0.5;
$prak1 = (($prak[0]+$prak[1]+$prak[2]+$prak[3]+$prak[4]+$prak[5]+$prak[6])/count($prak))*0.2;
$prak2 = (($prak[0]+$prak[1]+$prak[2]+$prak[3]+$prak[4]+$prak[5]+$prak[6])/count($prak))*0.5;
$prak3 = (($prak[0]+$prak[1]+$prak[2]+$prak[3]+$prak[4]+$prak[5]+$prak[6])/count($prak))*0.7;
$sro1 = (($sro[0]+$sro[1]+$sro[2]+$sro[3]+$sro[4]+$sro[5]+$sro[6])/count($sro))*0.3;
$lek1 = (($lek[0]+$lek[1]+$lek[2]+$lek[3]+$lek[4]+$lek[5]+$lek[6])/count($lek))*0.2;
$lek2 = (($lek[0]+$lek[1]+$lek[2]+$lek[3]+$lek[4]+$lek[5]+$lek[6])/count($lek))*0.7;
            
            $raiting = ($lek1+$prak2+$sro1);
            $raiting1 = $lek1+$prak1+$lab1+$sro1;
            $raiting2 = $lek1 + $lab2 + $sro1;
            $raiting3 = $prak3 + $sro1;
            $raiting4 = $lek2 + $sro1;
            
                    $labka = intval($_POST['r1']);
                    $praktika = intval($_POST['r2']);
                    $sroo = intval($_POST['r3']);
                    $lekci = intval($_POST['r4']);
                    if($labka > 100 || $labka < 0 || $praktika > 100 || $praktika < 0 || $sroo > 100 || $sroo < 0 || $lekci > 100 || $lekci < 0) {
                      echo 'Поле имеет недопустимую оценку';
                      echo '<div class="panel-footer"><a href="/formula/current.php">Назад</a></div><br/>';
                    }else{
    echo '<div class="alert alert-success" >';
    if($r2 != '' && $r3 != '' && $r4 !=''){
                    echo '<br/> Оценки лекции:';
    for($i=0; $i<count($lek);$i++){
        echo $lek[$i],", ";
        }
        echo '<br/> Оценки практики:';
    for($i=0; $i<count($prak);$i++){
        echo $prak[$i],", ";
        }
        echo '<br/> Оценки СРО:';
    for($i=0; $i<count($sro);$i++){
        echo $sro[$i],", ";
        }
        if($rk1 != ''){
        echo "<br/><br/> Если РК1 будет ' .$rk1. ' , то у вас рейтинг будет: '.($raiting+$rk1)/2.' баллов ";
        }else{
            echo "Вы не ввели РК1";
        }
    }else
    if($r1 != '' && $r2 != '' && $r3 != '' && $r4 !=''){
                    echo '<br/> Оценки лекции:';
    for($i=0; $i<count($lek);$i++){
        echo $lek[$i],", ";
        }
        echo '<br/> Оценки практики:';
    for($i=0; $i<count($prak);$i++){
        echo $prak[$i],", ";
        }
        echo '<br/> Оценки лабки:';
    for($i=0; $i<count($lab);$i++){
        echo $lek[$i],", ";
        }
        echo '<br/> Оценки СРО:';
    for($i=0; $i<count($sro);$i++){
        echo $sro[$i],", ";
        }
        echo '<br/><br/> У вас рейтинг будет: '.$raiting1.' баллов ';
    }else
    if($r1 != '' && $r3 != '' && $r4 !=''){
        echo '<br/> Оценки лекции:';
    for($i=0; $i<count($lek);$i++){
        echo $lek[$i],", ";
        }
        echo '<br/> Оценки лабки:';
    for($i=0; $i<count($lab);$i++){
        echo $lek[$i],", ";
        }
        echo '<br/> Оценки СРО:';
    for($i=0; $i<count($sro);$i++){
        echo $sro[$i],", ";
        }
        echo '<br/><br/> У вас рейтинг будет: '.$raiting2.' баллов ';
    }else
    if($r2 != '' && $r3 != ''){
        echo '<br/> Оценки практики:';
    for($i=0; $i<count($prak);$i++){
        echo $prak[$i],", ";
        }
        echo '<br/> Оценки СРО:';
    for($i=0; $i<count($sro);$i++){
        echo $sro[$i],", ";
        }
        echo '<br/><br/> У вас рейтинг будет: '.$raiting3.' баллов ';
    }else
    if($r4 != '' && $r3 != ''){
        echo '<br/> Оценки лекции:';
    for($i=1; $i<count($lek);$i++){
        echo $lek[$i],",";
        }
        echo '<br/> Оценки СРО:';
    for($i=0; $i<count($sro);$i++){
        echo $sro[$i],", ";
        }
        echo '<br/><br/> У вас рейтинг будет: '.$raiting4.' баллов ';
    }
    
    
    
    
    echo '</div>';
    echo '<div class="panel-footer"><a href="/formula/current.php">Назад</a></div><br/>';
                    }
break;
default:
echo '<form action = "?act=enu" method = "POST">
            <p>Введите оценки лабки <b>(оценки вводить через пробел):</b></p>
            <input type = "text" name = "r1" value = ""  /> 
            <p>Введите оценки практики <b>(оценки вводить через пробел):</b></p>
            <input type = "text" name = "r2" value = "" /> 
            <p>Введите оценки СРО <b>(оценки вводить через пробел):</b></p>
            <input type = "text" name = "r3" value = "" /> 
            <p>Введите оценки лекции <b>(оценки вводить через пробел):</b></p>
            <input type = "text" name = "r4" value = "" /> <br/>
            <p>Введите оценкe РК1 <b></b></p>
            <input type = "text" name = "rk1" value = "" /> <br/>
            <p>Введите оценкe РК2 <b></b></p>
            <input type = "text" name = "rk2" value = "" /> <br/><br/>
            <button class="btn btn-info" name = "send"/>Считать</button><br/><br/>
        </form>';
break;
}
Прикрепленные файлы:
.
The Frontend-Warrior
# ДоХтор (24.05.2016 / 18:08)
Любителям по-кидаться тапками: "Болтовня ничего не сто́ит, покажите свой код"
А хде "(цэ) Л. Торвальдс"?
.
# Blade (24.05.2016 / 21:29)
А хде "(цэ) Л. Торвальдс"?
Я не указал автора цитаты, но и не претендовал на её авторство, поэтому напечатал её курсивом
.
The Frontend-Warrior
# Beibarys (24.05.2016 / 20:14)
максимум 7 оценок
дальше разберешься
тыц (+/-)
.
# Blade (24.05.2016 / 21:46)
дальше разберешься
<?php

function parsePoints($string) {
$string = trim(preg_replace('/ {2,}/',' ',$string));
$points = explode(" ", $string);
return array_map(function($point){
что то не работает
можно еще чуть подробнее?
.
Beibarys, О мой бог, на будущее: когда пишешь код всегда используй
error_reporting(E_ALL);
.
Blade
The Frontend-Warrior
# Beibarys (25.05.2016 / 08:08)
что то не работает
можно еще чуть подробнее?
версия php какая?


если в двух словах, то:
удаляешь из поля все промежуточные подряд идущие пробелы, которых больше 1 (preg_replace),
удаляешь все пробелы в начале и в конце строки (trim),
парсишь "числа" из строки (explode + intval)
ну а дальше смотришь, меньше ли 7 число введенных оценок и находятся ли они в промежутке [0;100]
.
(\/)____o_O____(\/)
можно сразу preg_match на три цифры подряд
Всего: 41