Debug vieux site web et migration de php

Petit nouveau ! | 3 Messages

08 juin 2021, 23:32

Bonjour à tous,

J'ai l'ambition de relancer un vieux site web (datant de 2008-2009) codé sous parait-il un ancien langage PHP.
Problème, j'arrive a le debuger un peu, mais une erreur persiste, et je comprend pas comment corrigé le problème.

Je vous joint le code erreur ainsi que le code en question. L'erreur serait : << $db->Requete($sql); >>

Merci pour vos prochain retour :)

<< Fatal error: Uncaught Error: Call to undefined method DB::Requete() >>
<?php
		$sql = "
			SELECT * 
			FROM mlc.news
			WHERE champ = $_idc
			ORDER BY d DESC
			";
		$db->Requete($sql);
		if ($db->Nb_Enreg())
		{
			$cp = new TmfColorParser();
			echo '<table cellpadding="0" cellspacing="0" border="1" style="color: black; width: 100%;">';
			while ($tab = $db->Enreg_Suivant_Assoc())
			{
				if ($lang=='fr' or $lang=='es') 
				{
					$date=ereg_replace("([[:digit:]]{4})-([[:digit:]]{2})-([[:digit:]]{2})","\\3/\\2/\\1",$tab['d']);
					//$text=($lang=='fr')? $tab['text_fr'] : $tab['text_es'];
				}
				else
				{
					$date=ereg_replace("([[:digit:]]{4})-([[:digit:]]{2})-([[:digit:]]{2})","\\2/\\3/\\1",$tab['d']);
					//$text=$tab['text_en'];
				}
				echo '<tr>';
				echo '<td style="text-align:center"><span style="color:#FF8800;font-weight:bold;">'.$date.'</span></td>';
				$text = $cp->toHTML($tab['text'],false,true,'i');
				echo '<td style="text-align:left"><span style="font-weight:bold;">'.$text.'</span></td>';
				echo '</tr>';
			}
			echo '</table>';
		}
		else
		{
			echo '<p align="center">&nbsp;</p>';
		}
?>	
		
			</div>
		</div>
<?php	

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

09 juin 2021, 09:56

Dans ton code a aucun endroit n'est défini la variable $db donc ça ne peut pas marcher.
Il doit te manquer un require() ou un include() probablement...
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 3 Messages

10 juin 2021, 11:09

Effectivement, je vient de voir qu'il manque "l’entête" class pour que ça fonctionne. Mais je voit pas très bien ce qu'il faut mettre...
Les autres fichiers, contienne un <p "class=***">***</p ou * est le contenu. J'ai essayé de l’insérer mais ça fonctionne toujours pas...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

10 juin 2021, 11:35

Salutations !

Tu dois probablement avoir un fichier php qui est dédié à la connexion à la base de données. Ce fichier permet a php de se connecter à MySQL en indiquant quelle base de données interroger et comment s'y connecter (identifiant / mot de passe). C'est vraisemblablement dans ce fichier que ta variable $db est déclarée et initialisée.

En général il suffit d'inclure ce fichier php au début de ton script (avec les fonctions require() ou include() évoquées par @rthur) en spécifiant le chemin du fichier à inclure depuis ton script. Lorsque ton script s'exécutera, il va aller ouvrir ce fichier de connexion, exécuter son contenu pour se connecter à la base de données (ce qui devrait initialiser la variable $db), puis poursuivre le traitement (et il pourra alors exploiter la variable $db)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 2703 Messages

10 juin 2021, 11:37

il me semble que la première version présentée du code était bien plus complète, qu'il y avait les include au début, mais pas le contenu de l'include qui contient le code de la classe.

Petit nouveau ! | 3 Messages

10 juin 2021, 11:56

Effectivement, c'etait pas configuré... mais ca ne change rien... j'ai toujours cette erreur sur la page d'accueil...

Fatal error: Uncaught Error: Call to undefined method DB::Requete() in C:\wamp64\www\mlc2.0\accueil.inc.php:23 Stack trace: #0 C:\wamp64\www\mlc2.0\index.php(199): include() #1 {main} thrown in C:\wamp64\www\mlc2.0\accueil.inc.php on line 23

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

11 juin 2021, 13:22

Le message d'erreur est explicite donc il faut que tu avances davantage dans ton debug avec les pistes que l'on t'a données :
Call to undefined method DB::Requete()
- Soit $db n'a pas de méthode Requete() qui est définie
- Soit $db n'est pas défini du tout

A toi de chercher dans ton code d'où sort $db, nous on ne peut pas le deviner :-D
Quand tout le reste a échoué, lisez le mode d'emploi...