Page 1 sur 1
création d'un formulaire de recherche
Posté : 24 mai 2021, 10:25
par Josephor
Bonjour,
Je cherche à créer un formulaire de recherche dans une petite base de données. J'ai écrit les lignes suivantes, et ça me dit qu'il y a une erreur "
Illegal string offset" à la ligne 48. Que signifie cette erreur? Merci de votre réponse.
Code : Tout sélectionner
<ul>
<li><a href="index.php">Accueil</a></li>
<?php if(isset($_GET['ville'])):?>
<h2> site de la ville:</h2>
<?php foreach($villes as $ville):
if($ville['id']== $_GET['ville']):?> //ligne 48
<p> <?php echo $ville?>
<?php endif;?>
<?php endforeach;?>
<?php endif;?>
</ul>
Re: création d'un formulaire de recherche
Posté : 24 mai 2021, 11:18
par Ryle
Salutations !
En général, ce message d'erreur indique que tu essaies d'utiliser une chaine de caractère comme s'il s'agissait d'un tableau, en appelant un élément qui n'en fait pas parti.
Que contient le tableau $villes sur lequel tu boucles avec le foreach ? Est-ce qu'il contient des chaines de caractères ? (auquel cas, $ville['id'] ne fait référence à rien puisque la chaine n'a pas d'index nommé "id" et il faut utiliser $ville seul pour récupérer la valeur de cette chaine

).
Re: création d'un formulaire de recherche
Posté : 24 mai 2021, 12:18
par Josephor
En fait, j'ai une base dans laquelle il y a plusieurs villes avec des informations sur celles-ci, que je souhaite récupérer via un formulaire. $ville est donc la variable affecté à ville pour me permettre de récupérer l'information correspondante. Et à chaque ville est affectée un identifiant. Est-ce clair?
Re: création d'un formulaire de recherche
Posté : 24 mai 2021, 16:08
par or 1
sans avoir le code qui remplit $villes, impossible d'en dire plus que ce qu'a dit Ryle.
Re: création d'un formulaire de recherche
Posté : 24 mai 2021, 17:25
par Josephor
Voici le code, qu'est-ce qu'il faudrait changer pour que ça marche?
Code : Tout sélectionner
<?php
session_start();
$SESSION['user_id']='user_id';
$SESSION['ville_id']='ville_id';
?>
<!DOCTYPE html>
<html>
<head>
<?php
$id = $_GET['id'];
$mysqli=new mysqli('localhost', 'root', '', 'suivi_recherche_villes');
$result=$mysqli->query('SELECT ville_id, ville_nom, ville_site FROM villes WHERE ville_nom LIKE"%' . $id .'%"');
$row=$result->fetch_array();
$nom=$row['ville_nom'];
$site=$row['ville_site'];
?>
<title><?php echo $nom ?></title>
<link rel=stylesheet" type=text/css" href=style.css"/>
</head>
<body>
<div>
<h1><?php echo $nom ?></h1>
<p><?php echo $site ?></p>
<?php
$result=$mysqli->query('SELECT ville_id, ville_nom, ville_site FROM villes');
while ($row=$result->fetch_array())
{
$villes[$row['ville_id']]=$row['ville_nom'];
}
?>
<ul>
<li><a href="index.php">Accueil</a></li>
<?php if(isset($_GET['ville'])):?>
<h2> site de la ville:</h2>
<?php foreach($villes as $ville):
if($ville['id']==$_GET['ville']):?>
<p> <?php echo $ville?>
<?php endif;?>
<?php endforeach;?>
<?php endif;?>
</ul>
<?php
$result->free();
$mysqli->close();
?>
</body>
</html>
Re: création d'un formulaire de recherche
Posté : 24 mai 2021, 17:33
par or 1
ryle avait bien trouvé :
"Que contient le tableau $villes sur lequel tu boucles avec le foreach ? Est-ce qu'il contient des chaines de caractères ? (auquel cas, $ville['id'] ne fait référence à rien puisque la chaine n'a pas d'index nommé "id" et il faut utiliser $ville seul pour récupérer la valeur de cette chaine"
https://www.php.net/manual/fr/control-s ... oreach.php
voir "exemple foreach 3"
à noter que faire 2 boucles dans le code donné ne sert à rien, une seule suffirait.