Bonjour,
Depuis que j'ai changé les commandes PHP 5 pour les rendrent compatible PHP 7, ça ne fonctionne plus aussi bien qu'avant et je me casse la tête à comprendre pourquoi...
Le but final, c'est pour afficher des messages en boucle sur un écran dédié.
Tous fonctionne bien, sauf quand c'est différente condition sont réunies :
Je met hors ligne ou que je supprime le dernier messages de la liste et qu'il soit affiché à ce même moment.
et n'affiche pas le message suivant, par contre j'ai le droit à un joli petit mot d'amour.

Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 in /var/www/html/ecraninfo/index.php:83 Stack trace: #0 /var/www/html/ecraninfo/index.php(83): PDO->query(' select * from ...') #1 {main} thrown in /var/www/html/ecraninfo/index.php on line 83
Toute aide et la bien venu, merci

le fichier original en PHP5
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
 
//------------------------------------------------------------------------------------------------------------
// lire le nombre d'éléments contenu dans la base
//------------------------------------------------------------------------------------------------------------
$rsCount = mysql_query("select count(*) as nbElement from contenu where id AND online = 1 AND permanent = 1"); // Je determine Pour permanent =1
mysql_select_db($database_conMsg, $conMsg);
$row_rsCount = mysql_fetch_assoc($rsCount);
 
$query_nb_id = $pdo_conMsg->query('SELECT count(*) as nb_id FROM contenu where id AND online = 1 AND permanent = 2 AND date_debut <= now() AND now() <= date_fin'); // Je determine Pour permanent =2
$fetch_nb_id = $query_nb_id->fetch();
 
 
 
    // Conexion a la database
	mysql_select_db($database_conMsg, $conMsg);
	// On récupère tout le contenu de la table params
	//Je fait une requette dans la table params
    $query_mysql_Planification = mysql_query("SELECT * FROM params WHERE p_key = 'mysql_Planification'");
    // je Récupére la reponse
	$fetch_mysql_Planification = mysql_fetch_assoc($query_mysql_Planification);
//echo  $fetch_mysql_Planification['Mysql_nb_stocke'];
 
 
//j'affiche le contenu avec la commande ci-dessous
//echo $row_rsCount['nbElement']; echo ' ET '; echo $fetch_nb_id['nb_id'] ;
 
// on vérifie le nombre d'éléments : 
//		si c'est = 0 alors on affiche un message (l'heure par exemple) et puis en boucle
// 		si c'est > 0 alors on affiche un élément selon le numero d'ordre passé en paramètre et on boucle selon la durée	
 
// les differents état de ONLINE  et permanent == 2
$online0 = $row_rsCount['nbElement'] == 0 ;
$permanent20 = $fetch_nb_id['nb_id'] == 0 ;
$online1 = $row_rsCount['nbElement'] >= 1 ;
//$permanent21 = $fetch_nb_id['nb_id'] >= 1 ;
 
if ($online0 == $permanent20 AND $online1 == 0)
 
{
	include ('horloge.php');
	die();
}
 
else
{
	// maintenant que le nombre d'éléments est > 0 alors on traite selon le rang
	// si le numéro est passé en paramètre, on fait une vérification sur ce numéro
 
	// ds tous les cas de figure, on vérifie si le message doit être affiché en permanence (champs permanent = 1)
	// ou alors, si permanent = 2 : donc il faut que la date soit comprise entre date de debut et date de fin
	// notre requête de recherche doit inclure ce critère pour trouver le prochaine no de rang : donc le prochain message
 
	$sql = " and ((permanent = 1) or (permanent = 2 and date_debut <= now()  and  now() <= date_fin)) ";
	if (isset($_GET['rang']) && ($_GET['rang'] != ""))
	{
		// on vérifie si le numéro n'est pas le plus petit, car dans ce cas, il faut passer au plus grand (boucler)
		$rsMinMax = mysql_query("select min(rang) as mini, max(rang) as maxi from contenu where online = 1" . $sql);
		$row_rsMinMax = mysql_fetch_assoc($rsMinMax);
		// si on est au plus petit on passe comme paramètre le plus grand
		if ($_GET['rang'] == $row_rsMinMax['maxi'])
		{
			$param = $row_rsMinMax['mini'];
		}
		// sinon on passe le suivant dans l'ordre croissant. Pour mettre en décroissant changer le symbole ">" en "<" et rajouter "DESC" entre rang et limit 1
		else
		{
			$query = "select rang from contenu where online = 1 " . $sql . " and rang > " . $_GET['rang'] . " order by rang limit 1";
			$rsNext = mysql_query($query);
			$row_rsNext = mysql_fetch_assoc($rsNext);
			$param = $row_rsNext['rang'];
		}
		mysql_free_result($rsMinMax);
	}
	// si le rang n'est pas passé en paramètre on affiche l'élément ayant le rang le + grand
	else
	{
		$rsMaxi = mysql_query("select max(rang) as maxi from contenu where online = 1 " . $sql);
		$row_rsMaxi = mysql_fetch_assoc($rsMaxi);
		$param = $row_rsMaxi['maxi'];
		mysql_free_result($rsMaxi);
	}
 
	// maintenant que le paramètre est déterminé on exécute la requête de selection  
	$sql = "";
	$sql .= " select * from contenu where rang = " . $param; // online = 1 and 
	$rsElement = mysql_query($sql);
	$row_rsElement = mysql_fetch_assoc($rsElement);
}

Et le fichier modifier en PHP7
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
 
//------------------------------------------------------------------------------------------------------------
// lire le nombre d'éléments contenu dans la base
//------------------------------------------------------------------------------------------------------------
$rsCount = $pdo_conMsg->query("select count(*) as nbElement from contenu where id AND online = 1 AND permanent = 1"); // Je determine Pour permanent =1
$row_rsCount = $rsCount->fetch(PDO::FETCH_ASSOC);
 
$query_nb_id = $pdo_conMsg->query('SELECT count(*) as nb_id FROM contenu where id AND online = 1 AND permanent = 2 AND date_debut <= now() AND now() <= date_fin'); // Je determine Pour permanent =2
$fetch_nb_id = $query_nb_id->fetch();
 
 
	// On récupère tout le contenu de la table params
	//Je fait une requette dans la table params
    $query_mysql_Planification = $pdo_conMsg->query("SELECT * FROM params WHERE p_key = 'mysql_Planification'");
    // je Récupére la reponse
	// $fetch_mysql_Planification = mysql_fetch_assoc($query_mysql_Planification);
	$fetch_mysql_Planification = $query_mysql_Planification->fetch(PDO::FETCH_ASSOC);
//echo  $fetch_mysql_Planification['Mysql_nb_stocke'];
 
 
//j'affiche le contenu avec la commande ci-dessous
//echo $row_rsCount['nbElement']; echo ' ET '; echo $fetch_nb_id['nb_id'] ;
 
// on vérifie le nombre d'éléments : 
//		si c'est = 0 alors on affiche un message (l'heure par exemple) et puis en boucle
// 		si c'est > 0 alors on affiche un élément selon le numero d'ordre passé en paramètre et on boucle selon la durée	
 
// les differents état de ONLINE  et permanent == 2
$online0 = $row_rsCount['nbElement'] == 0 ;
$permanent20 = $fetch_nb_id['nb_id'] == 0 ;
$online1 = $row_rsCount['nbElement'] >= 1 ;
//$permanent21 = $fetch_nb_id['nb_id'] >= 1 ;
 
if ($online0 == $permanent20 AND $online1 == 0)
 
{
	include ('horloge.php');
	die();
}
 
else
{
	// maintenant que le nombre d'éléments est > 0 alors on traite selon le rang
	// si le numéro est passé en paramètre, on fait une vérification sur ce numéro
 
	// ds tous les cas de figure, on vérifie si le message doit être affiché en permanence (champs permanent = 1)
	// ou alors, si permanent = 2 : donc il faut que la date soit comprise entre date de debut et date de fin
	// notre requête de recherche doit inclure ce critère pour trouver le prochaine no de rang : donc le prochain message
 
	$sql = " and ((permanent = 1) or (permanent = 2 and date_debut <= now()  and  now() <= date_fin)) ";
	if (isset($_GET['rang']) && ($_GET['rang'] != ""))
	{
		// on vérifie si le numéro n'est pas le plus petit, car dans ce cas, il faut passer au plus grand (boucler)
		$rsMinMax = $pdo_conMsg->query("select min(rang) as mini, max(rang) as maxi from contenu where online = 1" . $sql);
		$row_rsMinMax = $rsMinMax->fetch(PDO::FETCH_ASSOC);
		// si on est au plus petit on passe comme paramètre le plus grand
		if ($_GET['rang'] == $row_rsMinMax['maxi'])
		{
			$param = $row_rsMinMax['mini'];
		}
		// sinon on passe le suivant dans l'ordre croissant. Pour mettre en décroissant changer le symbole ">" en "<" et rajouter "DESC" entre rang et limit 1
		else
		{
			$query = "select rang from contenu where online = 1 " . $sql . " and rang > " . $_GET['rang'] . " order by rang limit 1";
			$rsNext =  $pdo_conMsg->query($query);
			$row_rsNext = $rsNext->fetch(PDO::FETCH_ASSOC);
			$param = $row_rsNext['rang'];
		}
		($rsMinMax)->closeCursor();;
	}
	// si le rang n'est pas passé en paramètre on affiche l'élément ayant le rang le + grand
	else
	{
		$rsMaxi =  $pdo_conMsg->query("select max(rang) as maxi from contenu where online = 1 " . $sql);
		$row_rsMaxi = $rsMaxi->fetch(PDO::FETCH_ASSOC);
		$param = $row_rsMaxi['maxi'];
		($rsMaxi)->closeCursor();;
	}
 
	// maintenant que le paramètre est déterminé on exécute la requête de selection  
	$sql = "";
	$sql .= " select * from contenu where rang = " . $param; // online = 1 and 
	$rsElement =  $pdo_conMsg->query($sql)
	$row_rsElement = $rsElement->fetch(PDO::FETCH_ASSOC);
}