Langue php et sql. Undefined variable: sql
dproduction
Messages postés
39
Statut
Membre
-
jordane45 Messages postés 40051 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 40051 Date d'inscription Statut Modérateur Dernière intervention -
bonjour mes amis. je suis entrain de coder en php en vue de créer un moteur de recherche pour mon site web.
après avoir codé, j ai deux messages d'erreurs
après plusieurs heures de remue méninge, toujours pas de solution. s'il vous plait à l'aide
voici les massages
Notice: Undefined variable: sql in C:\wamp\www\moteur de recherche\recherche.php on line 33
Notice: Undefined variable: query in C:\wamp\www\moteur de recherche\recherche.php on line 48
voici le code
après avoir codé, j ai deux messages d'erreurs
après plusieurs heures de remue méninge, toujours pas de solution. s'il vous plait à l'aide
voici les massages
Notice: Undefined variable: sql in C:\wamp\www\moteur de recherche\recherche.php on line 33
Notice: Undefined variable: query in C:\wamp\www\moteur de recherche\recherche.php on line 48
voici le code
<?php
//intialisation de la variable contenant les resultats
$resultats = "";
//traitement de la requette
if(isset ($_POST['query']) && !empty($_POST['query']))
//si l'utilisateur a entre quelque chose, on traite sa requette
// on rend la requette de l'utilisateur
$query = htmlspecialchars(preg_replace("#[^#a-zA-Z ?0-9]#i", "", $_POST["query"]));
if(isset($_POST["filtre"]) == "site entier"){
// a faire plustard
} else if(isset($_POST["filtre"]) == "ecoles_maternelles"){
$sql = "SELECT id, pageecomater_nom AS nom FROM ecoles_maternelles WHERE pageecomater_nom LIKE ? OR pageecomater_contenance LIKE ?";
} else if(isset($_POST["filtre"]) == "ecoles_primaires"){
$sql = "SELECT id, pageecoprim_nom AS nom FROM ecoles_primaires WHERE pageecoprim_nom LIKE ? OR pageecoprim_contenance LIKE ?";
}
//connexion a la base de donnée
include"includes/connect_db.php";
$req = $db->prepare($sql);
$req ->execute(array("%".isset ($_POST['query'])."%", "%".isset ($_POST['query'])."%"));
$count = $req->rowcount();
if($count >= 1) {
echo " $count résultat(s) trouvé pour <strong>$query</strong><hr/>";
while ($data = $req->fecth(PDO::FECTH_OBJ)){
echo '#'.$data->id.' - Titre: '.$data->nom; '<br/>';
}
} else {
echo "<hr/>0 résultat trouvé pour <strong>$query</strong><hr/>";
}
?>
<!DOCTYPE html>
<html>
<head>
<title> mini moteur de recherche</title>
</head>
<body>
<p>
<form action ="<?php echo $_SERVER['PHP_SELF']; ?>" method='POST'>
<label for="query">entrer votre recherche: </label>
<input type= "search" mane="query" maxlength="80" size="80" id="query " /><br>
recherche au niveau de:
<select mane="filtre">
<option value="site entier">site entier</option>
<option value="ecole_maternelle">ecole_maternelle</option>
<option value="ecole_primaire">ecole_primaire</option>
</select><br>
<input type="submit" value="Recherche">
</form>
<?php echo $resultats; ?>
</body>
</html>
"<?php echo $_SERVER['PHP_SELF']; ?>"
EDIT : Ajout des balises de code
A voir également:
- Warning: undefined variable php 8
- Clé windows 8 - Guide
- Mixcraft 8 - Télécharger - Création musicale
- Internet explorer 8 - Télécharger - Navigateurs
- Easy php - Télécharger - Divers Web & Internet
- Windows 8 pro - Télécharger - Systèmes d'exploitation
2 réponses
Bonjour,
Tes variables $sql et $query sont initialisées dans des IF ....
Donc au début... elles n'existent pas... d'où les avertissements..
Par contre, applique ceci à ton code :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Et surtout ceci :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
.
Tes variables $sql et $query sont initialisées dans des IF ....
Donc au début... elles n'existent pas... d'où les avertissements..
Par contre, applique ceci à ton code :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Et surtout ceci :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
.
Déjà... Pour poster du code sur le forum.. merci d'utiliser la coloration syntaxique (les balises de code).
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Ensuite, concernant ton formulaire,tu as écris mane .. au lieu de NAME
Bref, corrige comme ça
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Ensuite, concernant ton formulaire,tu as écris mane .. au lieu de NAME
Bref, corrige comme ça
<?php
<?php
//Affichage des erreurs php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
//connexion a la base de donnée
require_once "includes/connect_db.php";
//intialisation de la variable contenant les resultats
$resultats = "";
$query = !empty($_POST['query']) ? preg_replace("#[^#a-zA-Z ?0-9]#i", "", $_POST["query"]) : NULL;
$filtre = !empty($_POST["filtre"]) ? $_POST["filtre"] : NULL;
//traitement de la requette
if($query){
switch($filtre){
case "site entier" :
// a faire plustard
$sql = "";
break;
case "ecoles_maternelles" :
$sql = "SELECT id, pageecomater_nom AS nom FROM ecoles_maternelles WHERE pageecomater_nom LIKE ? OR pageecomater_contenance LIKE ?";
break;
case "ecoles_primaires" :
$sql = "SELECT id, pageecoprim_nom AS nom FROM ecoles_primaires WHERE pageecoprim_nom LIKE ? OR pageecoprim_contenance LIKE ?";
break;
default:
$sql ="";
break;
}
$datas = array("%".$query."%", "%".$query."%");
try{
$req = $db->prepare($sql);
$req ->execute($datas);
$result = $req->fetchAll(FECTH_OBJ);
}catch(Exception $e){
// en cas d'erreur :
echo " Erreur ! ".$e->getMessage();
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title> mini moteur de recherche</title>
<charset="utf8">
</head>
<body>
<div id="zonefiltres">
<p>
<form action ="" method='POST'>
<label for="query">entrer votre recherche: </label>
<input type= "text" name="query" maxlength="80" size="80" id="query" value="<?php echo $query; ?>"/><br>
<label for="filtre">recherche au niveau de:</label>
<select name="filtre" id="filtre">
<option value="site entier" <?php echo $filtre == "site entier" ? " selected='selected' ": ""; ?> >site entier</option>
<option value="ecole_maternelle" <?php echo $filtre == "ecole_maternelle" ? " selected='selected' ": ""; ?> >ecole_maternelle</option>
<option value="ecole_primaire" <?php echo $filtre == "ecole_primaire" ? " selected='selected' ": ""; ?>>ecole_primaire</option>
</select>
<br>
<input type="submit" value="Recherche">
</form>
</p>
</div>
<div id="resultats">
<?php
$count = !empty($result) ? count($result) : 0;
$strResult = $count>1 " résultats trouvés " : " résultat trouvé ";
echo $count ."".$strResult ."pour <strong>".htmlspecialchars($query)."</strong><hr/>";
if(!empty($count) {
foreach($result as $R){
echo '#'.$R->id.' - Titre: '.$R->nom; '<br/>';
}
}
?>
</div>
</body>
</html>
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Telle que la récupération des variables AVANT de les utiliser (y compris dans les if )
<?php //Affichage des erreurs php error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //connexion a la base de donnée require_once "includes/connect_db.php"; //intialisation de la variable contenant les resultats $resultats = ""; $query = !empty($_POST['query']) ? preg_replace("#[^#a-zA-Z ?0-9]#i", "", $_POST["query"]) : NULL; $filtre = !empty($_POST["filtre"]) ? $_POST["filtre"] : NULL; //traitement de la requette if($query){ switch($filtre){ case "site entier" : // a faire plustard $sql = ""; break; case "ecoles_maternelles" : $sql = "SELECT id, pageecomater_nom AS nom FROM ecoles_maternelles WHERE pageecomater_nom LIKE ? OR pageecomater_contenance LIKE ?"; break; case "ecoles_primaires" : $sql = "SELECT id, pageecoprim_nom AS nom FROM ecoles_primaires WHERE pageecoprim_nom LIKE ? OR pageecoprim_contenance LIKE ?"; break; default: $sql =""; break; //edit correction du ; manquant } $datas = array("%".$query."%", "%".$query."%"); try{ $req = $db->prepare($sql); $req ->execute($datas); $result = $req->fetchAll(FECTH_OBJ); }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); } $count = !empty($result) ? count($result) : NULL; if($count >= 1) { echo " $count résultat(s) trouvé pour <strong>".htmlspecialchars($query)."</strong><hr/>"; foreach($result as $R){ echo '#'.$R->id.' - Titre: '.$R->nom; '<br/>'; } } else { echo "<hr/>0 résultat trouvé pour <strong>".htmlspecialchars($query)."</strong><hr/>"; } } ?>