За последние 24 часа нас посетили 49917 программистов и 1689 роботов. Сейчас ищет 1081 программист ...

Цыкл с глобальной переменной

Тема в разделе "PHP для новичков", создана пользователем wir_wolf, 5 фев 2010.

  1. wir_wolf

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

    С нами с:
    10 янв 2009
    Сообщения:
    183
    Симпатии:
    0
    есть некая глобальная переменная $_GET в ней массив....
    array
    'upr' => string 'save' (length=4)
    'SaveSkill' => string '690826416' (length=9)
    'sil' => string '1' (length=1)
    'int' => string '5' (length=1)

    мне нужно в цикле сделать запрос к БД..
    upr и SaveSkill контрольные переменные, они мне не нужны...
    а вот
    'sil' => string '1' (length=1)
    'int' => string '5' (length=1)
    с ними мне нужно сделать запросы...

    есть предварительный код..

    Код (Text):
    1. if ($_GET['upr'] == "save" ) {
    2.     if($_GET['SaveSkill']){
    3.         include_once("game_functions.php");
    4.         require_once('db.php');
    5.         $db = new db_layer();
    6.         $db->getConnection();
    7.         $qry = "SELECT * FROM person WHERE id_person = '".$myinfo->id_person."'";
    8.         $db->execute_sql($qry,$result,$error_msg);
    9.         $row = mysql_fetch_object($result);
    10. $texture = sizeof($_GET);
    11.         var_dump($_GET);
    12. if($_GET['sil'] > 0){
    13.     if($row->stat_points < $_GET['sil'] ){
    14.         $temp =$row->stat_points + $myinfo->hars[1][sil];
    15.         $minus_stats=0;
    16.        
    17.     }else{
    18.         $temp = $myinfo->hars[1][sil] + $_GET['sil'];
    19.         $minus_stats = $row->stat_points - $_GET['sil'];
    20.     }
    21.     SaveSkill('sil', $temp, $minus_stats, $myinfo->id_person);
    22.     $myinfo =new Persinfo($session->id_person);
    23. }
    24.  
    25.     }
    но писать для каждой переменной кусок кода, это будит индусский код, хотелось бы чтобы в цыкле я использовал эти переменные как номер строчки
    к примеру
    for ($i=0;$i<sizeof($_GET) + 3;$i++) {
    if($row->stat_points < $_GET['sil'] ){
    $temp =$row->stat_points + $myinfo->hars[1][sil];
    $minus_stats=0;

    }else{
    $temp = $myinfo->hars[1][sil] + $_GET['sil'];
    $minus_stats = $row->stat_points - $_GET['sil'];
    }
    SaveSkill('sil', $temp, $minus_stats, $myinfo->id_person);
    но вместо $_GET['sil'] там должна строять номер строки массива +2 так как первые 2 это проверочные переменные
     
  2. Alost

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

    С нами с:
    7 фев 2009
    Сообщения:
    335
    Симпатии:
    0
    Адрес:
    Город вокруг невы
    если уж пишите на индусском русском, то можно и индусский код писать.
     
  3. wir_wolf

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

    С нами с:
    10 янв 2009
    Сообщения:
    183
    Симпатии:
    0
    Если уж нормально отаетить не смогли,зачем флудить???
     
  4. engager

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

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    wir_wolf
    не кипятись. написал ты свой вопрос действительно хрен что поймешь
    моск вкипает от попытки осмыслить твой текст.
    интуиция подсказывает, что цикл тебе тут не нужен. можно обернуть весь твой код в функцию.
     
  5. wir_wolf

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

    С нами с:
    10 янв 2009
    Сообщения:
    183
    Симпатии:
    0
    ладно,
    Есть яваскрипт, который посылает запросы типу main.php?upr=save&SaveAbility=1224564&sil=1
    а вот кусок кода который это все обрабатывает
    Код (Text):
    1. if ($_GET['upr'] == "save" ) {
    2.     if($_GET['SaveSkill']){
    3.         include_once("game_functions.php");
    4.         require_once('db.php');
    5.         $db = new db_layer();
    6.         $db->getConnection();
    7.         $qry = "SELECT * FROM person WHERE id_person = '".$myinfo->id_person."'";
    8.         $db->execute_sql($qry,$result,$error_msg);
    9.         $row = mysql_fetch_object($result);
    10. $texture = sizeof($_GET);
    11.         var_dump($_GET);
    12. if($_GET['sil'] > 0){
    13.     if($row->stat_points < $_GET['sil'] ){
    14.         $temp =$row->stat_points + $myinfo->hars[1][sil];
    15.         $minus_stats = "0";
    16.  
    17.     }else{
    18.         $temp = $myinfo->hars[1][sil] + $_GET['sil'];
    19.         $minus_stats = $row->stat_points - $_GET['sil'];
    20.     }
    21.     SaveSkill('sil', $temp, $minus_stats, $myinfo->id_person);
    22.     $myinfo =new Persinfo($session->id_person);
    23. }
    24.  
    25.     }
    26.  
    27.  
    28.     skills_side1();die;
    29. }
    но это только а один модификатор, а если их будет много
    "sil", "lov", "intu", "vyn", "intel", "mudr", "duh", "vol", "svob", "boj"
    что мне для каждого писать if($_GET['sil'] > 0) и т. д...
    пока оно проверит все ифы...
    хотелось бы каким то образом перегнать $_GET в массив....
    $mass[1][1]=sil; $mass[1][2]=$_GET['sil'];
    $mass[2][1]=lov; $mass[2][2]=$_GET['lov'];
    ну и т.д.
     
  6. engager

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

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    Они могут приехать все в одном запросе?
    ну тогда да, как вариант, объявляешь массив и бежишь по нему:
    PHP:
    1. $modifiers = array ("sil", "lov", "intu", "vyn", "intel", "mudr", "duh", "vol", "svob", "boj");
    2. foreach ($modifiers as $m) {
    3.   if (isset($_GET[$m])) {
    4. /* твой кусок кода, только вместо $_GET['sil'] делаем $_GET[$m],
    5.  вместо SaveSkill('sil', $temp, $minus_stats, $myinfo->id_person); делаем
    6.   SaveSkill($m, $temp, $minus_stats, $myinfo->id_person);
    7.  ну и вообще все строковые константы на такой манер меняем.
    8. */
    9.   }
    10. }
    11.  
    ну уловил мысль?
     
  7. wir_wolf

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

    С нами с:
    10 янв 2009
    Сообщения:
    183
    Симпатии:
    0
    уловил, спасибо.