Page 1 sur 1

Mise à jour PHP

Posté : 07 oct. 2022, 13:55
par nicodespiennes
Bonjour,
Il y a quelques année, j'ai développé un petit espace membres pour gérer des inscriptions en PHP / MySql.
A l'époque, la version de PHP était 5.6 et lors du passage vers PHP7.X, des fonction comme mysql_connect() ne fonctionnait plus et j'ai dû passer en revue tous mes scripts pour appliquer les changements. L'opération a été fastidieuse...
Aujourd'hui, mon hébergement a mis à jour le PHP vers la version 8 et mon espace ne fonctionne plus !!!
je n'ai pas d'erreur affichée, les liens ont l'air de fonctionner mes rien ne s'affiche!
Auriez-vous une idée du problème sous PHP 8 ? En espérant ne pas devoir refaire le même processus de correction...
Merci pour votre aide
Bien à vous
Nicodespiennes

Re: Mise à jour PHP

Posté : 07 oct. 2022, 14:22
par @rthur
Le passage de PHP7 à PHP8 est beaucoup plus simple normalement.
Regarde dans les logs de ton serveur pour avoir les messages d'erreur

Re: Mise à jour PHP

Posté : 07 oct. 2022, 15:41
par nicodespiennes
Bonjour,
Merci pour votre réponse, comment voir ces logs.. je suis hébergé par ONE.com
merci
Nicodespiennes

Re: Mise à jour PHP

Posté : 09 oct. 2022, 21:44
par @rthur
Demande à ton hébergeur comment accéder aux logs PHP, en général c'est accessible via SFTP ou sinon dans ton espace client.

Re: Mise à jour PHP

Posté : 12 oct. 2022, 09:41
par nicodespiennes
Bonjour,
je commence à cibler le problème, voici mon script menu qui tourne sous PHP 7.2 et pas sous PHP 8 :
<div id="menu_left_haut_ges"><h3>Les doublons</h3></div>
	<div id="menu_leftbk">
		
	<form method="POST" action="index.php?page=participants_doublons">
		<select size="1" name="nom">
			<?php
			    include("../inscriptions/connexion.php"); // connexion bd
			    // requête pour trouver les doublons dans la table participants
                $res=$conn->query("SELECT DISTINCT participants.nom,participants.prenom
							FROM participants
							INNER JOIN
						(SELECT participants.nom, participants.prenom
						FROM participants
							GROUP BY participants.nom, participants.prenom
							HAVING COUNT(*) > 1
							)Tmp
							ON participants.nom=Tmp.nom AND participants.prenom=Tmp.prenom
							ORDER BY participants.nom, participants.prenom");
				
				$tab=mysqli_fetch_array($res);
				$lignes=mysqli_affected_rows($conn); // nombre de doublons trouvés
				$row_cnt = mysqli_num_rows($result);

				for ($i=0;$i<$lignes;$i++) // si doublons alors création ligne dans liste déroulante
					{   
    					 ?><option><?php echo $tab["nom"]."-".$tab["prenom"];?></option><?php
    					 $tab=mysqli_fetch_array($res);
					}	
				mysqli_close($conn); // Déconnexion de MySQL 	
			
			?>
		</select>
		<?php 
			if ($lignes > 0)
    			{   // affichage bouton pour aller vers page participants_doublons.php
    				?>
    				<input class="bouton" type="submit" value="Ok" name="B1"></form>		
    				<?php echo "<h2 class=rouge>$lignes doublon(s)<h2>";
    			}
			else
    			{
        			?></form><br>
        			<h2 class="vert">Pas de doublon trouvé</h2>
    			    <?php
      			}
    			?>
    </div>
<div id="menu_left_bas"></div>
Il s'agit de vérifier les doublons dans la table des participants et, si il y a des doublons, d'alimenter une liste déroulante et ensuite afficher un bouton pour aller vers un autre script de gestion des doublons.
La requête fonctionne via PHPmyAdmin.
Auriez-vous une idée du problème sous PHP 8 ?
Merci pour votre aide.
Nicodespiennes

Re: Mise à jour PHP

Posté : 12 oct. 2022, 11:12
par ynx
Bonjour,

A première vue, je ne vois pas d'incompatibilité avec PHP 8 dans ton code.

As tu réussis à trouver le journal d'erreur (log) dans ton espace client ou dans ton ftp pour voir les messages d'erreur ?
A priori, tu peux aussi activer l'affichage des messages d'erreur : https://help.one.com/hc/fr/articles/115 ... rreur-PHP-
Pense à désactiver cet affichage lorsque les erreurs seront corrigées, il n'est pas recommandé de laisser l'affichage des erreurs sur un site en ligne.

Re: Mise à jour PHP

Posté : 12 oct. 2022, 11:15
par nicodespiennes
Bonjour,
merci pour votre réponse, les messages d'erreurs sont sur ON et rien ne s'affiche
merci de votre aide
Nicodespiennes

Re: Mise à jour PHP

Posté : 12 oct. 2022, 11:44
par ynx
Le navigateur affiche une page entièrement blanche ? En regardant le code source de la page dans le navigateur, tu retrouves ton code html ?

Re: Mise à jour PHP

Posté : 12 oct. 2022, 11:50
par nicodespiennes
re,
merci de me consacrer un peu de votre temps :-)
en affichant le code source du navigateur, voici les erreurs affichées, cela va peut-être nous guider vers le soucis ...
Warning: Undefined variable $result in /customers/6/7/6/educationetfamille.be/httpd.www/em/menus/menu_doublons.php on line 22

Fatal error: Uncaught TypeError: mysqli_num_rows(): Argument #1 ($result) must be of type mysqli_result, null given in /customers/6/7/6/educationetfamille.be/httpd.www/em/menus/menu_doublons.php:22
Stack trace:
#0 /customers/6/7/6/educationetfamille.be/httpd.www/em/menus/menu_doublons.php(22): mysqli_num_rows(NULL)
#1 /customers/6/7/6/educationetfamille.be/httpd.www/em/inscriptions/index.php(59): include('/customers/6/7/...')
#2 {main}
  thrown in /customers/6/7/6/educationetfamille.be/httpd.www/em/menus/menu_doublons.php on line 22
Qu'en pensez-vous ?
Merci
Nicodespiennes

Re: Mise à jour PHP

Posté : 12 oct. 2022, 12:12
par ynx
Effectivement, je comprends mieux le problème avec le message d'erreur.

La variable $result sur la ligne $row_cnt = mysqli_num_rows($result); n'est jamais définie, la fonction mysqli_num_rows déclenche donc une erreur puisque le paramètre n'est pas valide.
La variable $row_cnt ne semble pas être utilisé dans ton script, si c'est bien le cas, tu peux simplement supprimer cette ligne. Sinon il faut corriger le code en remplaçant la variable $result par la variable $res.

Cette ligne ne devait déjà pas fonnctionné en PHP 7 et tu devais déjà avoir cette erreur, néanmoins en PHP 7, la fonction mysqli_num_rows déclenche une erreur de type Warning qui n'arrête pas l'exécution du script.
Depuis PHP 8, cette fonction déclenche une Fatal Error qui arrête l'exécution du script, ce qui explique pourquoi ta page ne fonctionnait pas correctement suite à la mise à jour de PHP.

Re: Mise à jour PHP

Posté : 12 oct. 2022, 12:33
par nicodespiennes
re,
merci pour votre réponse, je viens de corriger en $res et tout fonctionne !
certainement un copier / coller mal finalisé à l'époque
"Tout seul on va plus vite, ensemble, on va plus loin"
Merci à vous
Nicolas