Я хотел бы получить идентификатор определенного значения в моей таблице phpmyadmin. Итак, у меня есть таблица с id_cal в качестве ИИ. id, 'mois' представляет месяц с числами (например, 1 для января) и 'annee' представляет год. (см. календарный стол)
Я пытаюсь установить переменную php для месяца и года, и если они соответствуют текущему месяцу и году, я хочу получить этот конкретный идентификатор.
Я прокомментировал php-код, в котором у меня возникли проблемы, вот он:
<?php
include_once('config.php');
$m = idate('n');
$y = idate('Y');
echo $m; echo "\t"; echo $y; echo "<br>"; echo "<br>"; // The result of this is 7 2019
$reponse = $bdd->query('SELECT * FROM calendrier');
while($donnees= $reponse->fetch()){
$mois = $donnees['mois'];
$year = $donnees['annee'];
$id_cal = $donnees['id_cal'];
echo $id_cal;
echo "\t";
echo $mois;
echo "\t";
echo $year;
echo "<br>";
}
// What I am trying to do :
if (($m = $mois) && ($y = $year)){ // If the month and the year are the current month/year
$i = $id_cal; // I want to put the id refering to the current month/year (in my phpmyadmin table) into a new variable
echo "<br>"; // and echo this variable (or use it in other ways)
echo $i; // BUT what I am echoing is 24 representing the number of values in my array
} // How can I only get 7 ? (in this exemple, since we are the 7/2019)
Вот что я получаю на своем локальном хосте: эхо
Я действительно не понимаю, почему у меня нет 7.
Кроме того, я попробовал это вместо своего времени:
$donnees= $reponse->fetch();
$mois = $donnees['mois'];
$year = $donnees['annee'];
$id_cal = $donnees['id_cal'];
// But in this cas I am having $i = 1, so it's the same problem.
Большое спасибо заранее за ваш ответ, я очень борюсь с этим.
Вы также, вероятно, хотите $m == $mois вместо $m = $mois.
== действительно было моей главной проблемой здесь, и мне также помогло размещение оператора if в цикле. Большое спасибо вам обоим!






Это потому, что id_cal перезаписывается новым значением id_cal при каждой итерации вашего оператора while.
Чтобы получить желаемый результат, вы можете поместить if внутри оператора while...
while($donnees= $reponse->fetch()){
$mois = $donnees['mois'];
$year = $donnees['annee'];
$id_cal = $donnees['id_cal'];
echo $id_cal;
echo "\t";
echo $mois;
echo "\t";
echo $year;
echo "<br>";
if (($m == $mois) && ($y == $year)){
$my_var_to_use_elsewhere = $id_cal;
}
}
echo "<br>";
echo $my_var_to_use_elsewhere;
Это (с добавлением решения Пола Шпигеля, то есть "= = ") сработало отлично, большое спасибо!
Ах да конечно! Вы также можете рассмотреть break; внутри оператора if, если вас не интересуют значения после выполнения вашего оператора if. php.net/manual/en/control-structures.break.php
Возможно, вы хотели поместить
ifвнутрь цикла? Последний раз в цикле$id_calбудет равен последнему, который на вашем изображении равен 24.