8768 sujets

Développement web côté serveur, CMS

Bonjour à vous tous,

Je suis toujours sur le même devoir et je bute maintenant sur une erreur PHP que je ne parviens pas non plus à résoudre.

Voici le message d'erreur :
upload/1654342262-62242-messageerreur.png
Voici la capture écran du code PHP pour situer la ligne 25 où se trouve l'erreur :
upload/1654342342-62242-capture-ncran.jpg
D'après ce que je comprends, à la ligne 25, la variable mysqli n'est pas définie. Mais je l'ai déjà utilisée dans d'autres fichiers .php et je n'ai pas eu de problèmes. Ensuite, le message d'erreur me dit que j'appelle une fonction qui retourne une valeur nulle. Je ne comprends pas.

Vous pouvez m'aider ?

Voilà le code complet :

<!doctype html>
<html lang="fr">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
	<link href="styles.css" type="text/css" rel="stylesheet">
	<title>Editer</title>
</head>
<body>
	<?php
		if(isset($_POST['submit_form'])){
			$ville_nom = $_POST['ville_nom'];
			$ville_texte = $_POST['ville_texte'];
			$ville_id = $_POST['ville_id'];
			if((empty($ville_nom)) OR empty($ville_texte)){
				$message = '<p class="error">Vous devez saisir le nom d\'une ville et sa présentation.</p>';
			}else{
				if($mysqli->query('UPDATE villes SET ville_nom = "'.$ville_nom.'", ville_texte = "'.$ville_texte.'" WHERE ville_id = '.$ville_id)){
					$message = '<p class="message">La mise à jour de la ville' . $ville_nom . 'est effectuée.</p>';
				}else{
					$message = '<p class="error">La mise à jour de la ville' . $ville_nom . 'n\'est pas effectuée.</p>';
				}
			}
		}
		$id = $_GET['id'];
		$result = $mysqli->query('SELECT ville_id, ville_nom, ville_texte FROM villes WHERE ville_id = ' . $id );
		$row = $result->fetch_array();
		$nom = $row['ville_nom'];
		$texte = $row['ville_texte'];
	?>
	<div>
		<h1>Ajouter une ville</h1>
		<?php if(isset($message)) echo $message ?>
		<form method="post">
			<p>Nom de la ville : <input type="text" name="ville_nom" value="<?php echo $nom ?>"/></p>
			<p>Texte de présentation<br><textarea name="ville_texte" cols="32" rows="8"><?php echo $texte ?></textarea></p>
			<p><input type="hidden" name="ville_id" value="<?php echo $id ?>"/></p>
		</form>
	</div>
</body>
</html>

Modifié par ObiJuanKenobi (04 Jun 2022 - 13:36)
Bonsoir,

Ta seconde erreur ne te dis pas qu’elle retourne une valeur nulle mais que tu essaies de l’appeler sur un objet nul (non defini) ce qui est normal puisque $mysqli n’est pas defini.
Tu dois donc t’occuper de la première erreur : à quel endroit definis tu ta variable $mysqli ? Si c’est dans un autre fichier, il faut penser à l'importer.
C'était effectivement la connexion mysqli(); qui n'était pas déclarée.
J'ai ajouté :

$mysqli = new mysqli('localhost', 'root', '', 'projet_villes_site');
avant la requête pour récupérer les données et ça marche, je n'ai plus le message d'erreur.

Merci à vous.