PHP Проблема с передачей/получением информации в массиве.

Scra1chy

Известный
Автор темы
36
2
Доброго времени суток! Столкнулся с проблемой при работе с массивом =(
Всю информацию первоначально храню в сессии, значения вроде бы сохранятся нужные, но при получение этих данных из массива получается что-то не то(.
Извиняюсь за этот быдло код и описание :с

Суть того что я пытаюсь реализовать:
1 этап. Получение трёх рандомных цифр от максимального кол-ва записей в БД, что-бы потом выводить через них нужные данные. Тут всё нормально работает.
2 этап. Формирование готовых запросов и получение инфы + её вывод в виде отладки. Тут тоже всё нормально работает.
3 этап. Сохранение полученных данных в сессии, что бы потом использовать и сохранять в БД.
4 этап. На второй странице получение из сессии значений 3-х рандомных чисел из первой страницы + вывод...

В итоге получается так, что после получения инфы из БД,всё отображается нормально... Но вот когда я получаю это на следующей странице, получается не понятно что...

Первая страница:
$randArray = array();
$randCount = 4;
while (true) {
    $rand = rand(1, $data);
    if (!in_array($rand, $randArray)) {
        $randArray[] = $rand;
        if (sizeof($randArray) + 1 == $randCount) {
            break;
        }
    }
}
$quest1 = mysqli_query($mysqli, "SELECT text FROM questions WHERE id = '$randArray[0]'");
$quest_text1 = mysqli_fetch_array($quest1);
echo $quest_text1['text'];

$quest2 = mysqli_query($mysqli, "SELECT text FROM questions WHERE id = '$randArray[1]'");
$quest_text2 = mysqli_fetch_array($quest2);
echo $quest_text2['text'];

$quest3 = mysqli_query($mysqli, "SELECT text FROM questions WHERE id = '$randArray[2]'");
$quest_text3 = mysqli_fetch_array($quest3);
echo $quest_text3['text'];

echo $randArray[0];
echo $randArray[1];
echo $randArray[2];

$_SESSION["quest_1"] = $randArray[0];
$_SESSION["quest_2"] = $randArray[1];
$_SESSION["quest_3"] = $randArray[2];

Вторая страница:
$quest1 = $_SESSION["quest_1"];
$quest2 = $_SESSION["quest_2"];
$quest3 = $_SESSION["quest_3"];
echo $quest1;
echo $quest2;
echo $quest3;

Результат:
В ходе выполнения кода на первой странице я получил цифры 423, +вывод инфы из БД, всё сработало верно.
В ходе выполнения кода на второй странице я получил 421 вместо 423...
Попытка 2. На первой странице получил 314, на второй 431 вместо 314.
Попытка 3. На первой странице получил 342, на второй 132 вместо 342.
 
  • Нравится
Реакции: SheepShon
Решение
Привет. А можно полный код со второй страницы?

Прогнал у себя на хосте то, что ты скинул, все работает как часики. Не знаю только, что у тебя за переменная $data, поэтому подставил просто четверку. Ну и без запросов к бд, ибо это не взаимосвязано.
Page 1:
session_start();

$randArray = array();
$randCount = 4;
while (true) {
    $rand = rand(1, 4);
    if (!in_array($rand, $randArray)) {
        $randArray[] = $rand;
        if (sizeof($randArray) + 1 == $randCount) {
            break;
        }
    }
}

echo $randArray[0];
echo $randArray[1];
echo $randArray[2];

$_SESSION["quest_1"] = $randArray[0];
$_SESSION["quest_2"] = $randArray[1];
$_SESSION["quest_3"] = $randArray[2];

Page 2:
<?
session_start();

$quest1 = $_SESSION["quest_1"]...

Hatrig

Известный
38
43
Привет. А можно полный код со второй страницы?

Прогнал у себя на хосте то, что ты скинул, все работает как часики. Не знаю только, что у тебя за переменная $data, поэтому подставил просто четверку. Ну и без запросов к бд, ибо это не взаимосвязано.
Page 1:
session_start();

$randArray = array();
$randCount = 4;
while (true) {
    $rand = rand(1, 4);
    if (!in_array($rand, $randArray)) {
        $randArray[] = $rand;
        if (sizeof($randArray) + 1 == $randCount) {
            break;
        }
    }
}

echo $randArray[0];
echo $randArray[1];
echo $randArray[2];

$_SESSION["quest_1"] = $randArray[0];
$_SESSION["quest_2"] = $randArray[1];
$_SESSION["quest_3"] = $randArray[2];

Page 2:
<?
session_start();

$quest1 = $_SESSION["quest_1"];
$quest2 = $_SESSION["quest_2"];
$quest3 = $_SESSION["quest_3"];
echo $quest1;
echo $quest2;
echo $quest3;

?>

Результ:
34669
 
  • Нравится
Реакции: Vlad44352 и Scra1chy

Scra1chy

Известный
Автор темы
36
2
Привет. А можно полный код со второй страницы?

Прогнал у себя на хосте то, что ты скинул, все работает как часики. Не знаю только, что у тебя за переменная $data, поэтому подставил просто четверку. Ну и без запросов к бд, ибо это не взаимосвязано.
Page 1:
session_start();

$randArray = array();
$randCount = 4;
while (true) {
    $rand = rand(1, 4);
    if (!in_array($rand, $randArray)) {
        $randArray[] = $rand;
        if (sizeof($randArray) + 1 == $randCount) {
            break;
        }
    }
}

echo $randArray[0];
echo $randArray[1];
echo $randArray[2];

$_SESSION["quest_1"] = $randArray[0];
$_SESSION["quest_2"] = $randArray[1];
$_SESSION["quest_3"] = $randArray[2];

Page 2:
<?
session_start();

$quest1 = $_SESSION["quest_1"];
$quest2 = $_SESSION["quest_2"];
$quest3 = $_SESSION["quest_3"];
echo $quest1;
echo $quest2;
echo $quest3;

?>

Результ:
Посмотреть вложение 34669
Привет. Извиняюсь если я сильно потратил Ваше время, но я дурак :( ... изначально не заметил что после отправки данных с первой на вторую страницу, массив на первой генерировался заново). Поэтому при первоначальном заходе он генерировал и передавал правильно, но после обработки запроса он обновлял страницу и генерировал другое). Увы, заметил это в самом конце, когда после первичной генерации массива, зашёл сам на вторую страницу без отправки, там то и показало всё как надо).

$data это был sql запрос на получение максимального количества значений по параметру в БД), на основании этого и производился рандом от 1 до максимального кол-ва.