2016-01-13 3 views
3

Я пытаюсь сохранить значения из формы радио в массив. Но проблема, с которой я столкнулся, заключается в том, что каждый раз, когда 1-й индекс массива заменяется новым значением. Я считаю, что это проблема масштаба. Я также пытался объявить глобальный массив, но не имел успеха.Как сделать статический индекс массива в php

Вот код:

<?php 
include_once("connection.php"); 
$c = new DBcon(); 
$c->startcon(); 
global $array; // not effecive 
// $q = $_POST['t']; 
// echo 'fff', $q; 


$page = $_GET['page']; 
echo 'pagesss', $page, 'ppp'; 
if ($page == "") { 

    $page = "1"; 
} else { 

    // If page is set, let's get it 
    $page = $_GET['page']; 
} 

// Now lets get all messages from your database 
$sql = "SELECT * FROM quizes"; 
$query = mysql_query($sql); 

// Lets count all messages 
$num = mysql_num_rows($query); 

// Lets set how many messages we want to display 
$per_page = "2"; 

// Now we must calculate the last page 
$last_page = $num; 

echo 's', $num; 

// And set the first page 
$first_page = "1"; 

// Here we are making the "First page" link 
echo "<a href='?page=" . $first_page . "'>First page</a> "; 

// If page is 1 then remove link from "Previous" word 
if ($page == $first_page) { 

    echo "Previous "; 
} else { 

    if (!isset($page)) { 

     echo "Previous "; 
    } else { 

     // But if page is set and it's not 1.. Lets add link to previous word to take us back by one page 
     $previous = $page - 1; 

     echo "<a href='?page=" . $previous . "'>Previous</a> "; 
    } 
} 

// If the page is last page.. lets remove "Next" link 
if ($page == $last_page) { 

    echo "Next "; 
} else { 

    // If page is not set or it is set and it's not the last page.. lets add link to this word so we can go to the next page 
    if (!isset($page)) { 

     $next = $first_page + 1; 
     echo "<a href='?page=" . $next . "'>Next</a> "; 
    } else { 

     $next = $page + 1; 
     echo "<a href='?page=" . $next . "'>Next</a> "; 
    } 
} 

// And now lets add the "Last page" link 
echo "<a href='?page=" . $last_page . "'>Last page</a>"; 

// Math.. It gets us the start number of message that will be displayed 
$start = ($page * ($page - 1))/$page; 
echo 'start', $start; 
echo 'page', $page; 
// Now lets set the limit for our query 
$limit = "LIMIT $start, $per_page"; 

// It's time for getting our messages 
$sql = "SELECT * FROM quizes $limit"; 

$query = mysql_query($sql); 

echo "<br /><br />"; 

// And lets display our messages 

$i = 0; 
$l = 0; 

while ($row = mysql_fetch_array($query) or die(mysql_error())) { 
    $a = $row['A']; 
    echo '<form method="get" action="?page=".$next."">'; 
    while ($row = mysql_fetch_array($query)) { 

     echo '<div class="boxed" >'; 

     echo "\t" . '<tr><th>' . 
     $row['question'] . "<br>" . 
     '</th><th>' . "<input type='radio' name= 't[]' value='{$row['A']}'>" . $row['A'] . "<br>" . 
     '</th><th>' . "<input type='radio' name='t[]' value='{$row['B']}'>" . $row['B'] . "<br>" . 
     '</th><th>' . "<input type='radio' name='t[]' value='{$row['C']}'>" . $row['C'] . "<br>" . 
     '</th><th>' . "<input type='radio' name='t[]' value='{$row['D']}'>" . $row['D'] . '</th> 
       </tr>'; 
     echo '<input type="hidden" name="page" value="' . $next . '">'; 
     echo '<input type="submit" name="submit"/>'; 
     $i++; 

     echo '</div>'; 


     echo '</div>'; 
    } 
    echo '</form>'; 
    if (isset($_GET['submit'])) { 
     $example = $_GET['t']; 
     foreach ($example as $value) { 
      $array[$i++] = ($value); 

      echo "$array[0] <br>"; // printing correct statement but replacing old values with new value everytime. 
      echo "$array[1] <br>"; // 0 values 
      echo "$array[2] <br>"; // 0 values 
     } 
    } 
} 
?> 

Я видел эти сообщения: PHP array indexing: $array[$index] vs $array["$index"] vs $array["{$index}"], PHP - define static array of objects но никакой помощи. Пожалуйста, помогите, что я должен делать?

+0

Одна вещь, вместо того чтобы делать mysql_row_count в начале просто выполните запрос типа: '' SELECT count (*) FROM quizes ", поскольку он вернет только одно значение, иначе вы передадите больше данных, чем необходимо, чтобы получить одно и то же значение из базы данных. Во-вторых, сделайте var_dump значения $ example, чтобы узнать, что вы получаете как ответ на вашу форму. – MiltoxBeyond

+0

u означает, что я shd добавить дополнительный запрос? – Malik

+0

var_dump да, но я не могу добавить значения в массив. Вместо этого он добавляет и заменяет значение на 1-й индекс, а не на другие. – Malik

ответ

2

Вы не можете сделать

$array[$i++] 

это всегда будет $ массив [1] вместо делать

$i++; 
$array[$i]= $value; 

P.S. $ array - страшное имя переменной ...

+0

Я сделал, но значение хранится в первом индексе и заменяет старое значение новым в 1-м индексе – Malik

0

Сначала вы должны увеличить свою переменную, а затем использовать переменную в качестве ключа массива.

Edit: это то, что вы ищете:

$i = 0; 

foreach ($example as $value) { 
    $array[$i] = $value;  

    $i++; 
} 
+0

как? nt как C++? – Malik

+0

u означает $ example ++? – Malik

+0

Я отредактировал свой ответ с кодом, который вам нужен. – kjdion84

0

если вы

$array[$i++] ; 

это не будет работать, просто попробовать это и он не заменит старое значение

$array[$i] = $value;  

    $i++; 
1
if (isset($_GET['submit'])) { 
     $example = $_GET['t']; 
$i=0; 
$arrayA = array(); 
     foreach ($example as $value) { 
      $arrayA[$i] = ($value); 
$i++; 

     } 
print_r($arrayA); 
    } 
Смежные вопросы