Problemes de syntaxe

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problemes de syntaxe

Re: Problemes de syntaxe

par xTG » 23 janv. 2013, 22:02

Que dois-tu faire ?
1) Ne pas utiliser des variables qui n'existent pas. Tu peux vérifier l'existence d'une variable avec la fonction isset().
2) Utiliser soit mysql, soit mysqli pour la communication avec ta base de données mais pas les deux en même temps.
3) Remplacer le $sql qui n'est pas utilisé où il faut par la variable de connexion à la base de données.

Re: Problemes de syntaxe

par NEP » 23 janv. 2013, 15:06

Toujours vérifier l'existence d'une variable avant de l'utiliser. => isset()
Pour ta dernière erreur tu passes $sql qui n'est pas la variable de connexion mais une chaîne de caractère qui est une requête.
De plus tu mélanges du mysql avec du mysqli...

Ok merci mai que dois-je faire alors ?

Surtout concernant la derniere erreur...

Re: Problemes de syntaxe

par xTG » 22 janv. 2013, 19:46

Toujours vérifier l'existence d'une variable avant de l'utiliser. => isset()
Pour ta dernière erreur tu passes $sql qui n'est pas la variable de connexion mais une chaîne de caractère qui est une requête.
De plus tu mélanges du mysql avec du mysqli...

Problemes de syntaxe

par NEP » 22 janv. 2013, 16:41

Bonjour,
Voici une semaine jour et nuit que je passe mon temps a trouver le bon code qui puisse faire fonctionner mon moteur de recherche interne en liaison avec ma base de données.

Voici mon code:

Code : Tout sélectionner

<?php var_dump($_POST); include($_SERVER['DOCUMENT_ROOT'].'/inc/commons.inc.php'); include($_SERVER['DOCUMENT_ROOT'].'/search/language.php'); $lang = (empty($_POST['lang'])) ? 'fr' : strfprepare($_POST['lang']); $lang_ext = ($lang === 'en') ? '_en' : ''; $lang_ext = ($lang === 'es') ? '_es' : ''; include $_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR."header{$lang_ext}.php"; $_POST['shead'] = isset($_POST["{$lang}_shead"]) ? $_POST["{$lang}_shead"] : ''; $_POST['pays'] = isset($_POST["{$lang}_pays"]) ? $_POST["{$lang}_pays"] : ''; $_POST['auteur'] = isset($_POST["{$lang}_auteur"]) ? $_POST["{$lang}_auteur"] : ''; $_POST['keyword'] = isset($_POST["{$lang}_keyword"]) ? $_POST["{$lang}_keyword"] : ''; $_POST['titre'] = isset($_POST["{$lang}_titre"]) ? $_POST["{$lang}_titre"] : ''; $_POST['soption1'] = isset($_POST["{$lang}_soption1"]) ? $_POST["{$lang}_soption1"] : ''; $_POST['soption2'] = isset($_POST["{$lang}_soption2"]) ? $_POST["{$lang}_soption2"] : ''; $_POST['sbouton'] = isset($_POST["{$lang}_bouton"]) ? $_POST["{$lang}_bouton"] : ''; $_POST['noresult'] = isset($_POST["{$lang}_noresult"]) ? $_POST["{$lang}_noresult"] : ''; $_POST['sresult1'] = isset($_POST["{$lang}_noresult1"]) ? $_POST["{$lang}_noresult1"] : ''; $_POST['sresult2'] = isset($_POST["{$lang}_noresult2"]) ? $_POST["{$lang}_noresult2"] : ''; // si on a recu une requete de recherche, on la traite //if ($_POST[boole]) if (isset($_POST['boole'])) { // $_POST['boole'] ne doit pas avoir une valeur spécifique pour considérer que la demande de recherche est légitime ? // strfprepare() : elle fait quoi cette fonction ? // moulinette() : elle fait quoi cette fonction et c'est quoi ce nommage ?!!?! // TOUTES LES FONCTIONS EN PROGRAMMATION SONT DES "MOULINETTES" // filtre pays $_POST['pays'] = strfprepare($_POST['pays']); $_POST['pays'] = moulinette($_POST['pays']); $pays = array(); foreach(explode(' ', $_POST['pays']) as $v) { $pays[] = "pays LIKE '%".mysql_real_escape_string($v)."%'"; // on échappe avec mysql_real... et pas addSlashes() } $sql_pays = implode(' OR ', $pays); // LES FONCTIONS mysql_xxx SONT OBSOLÈTES : IL FAUT PASSER PAR mysqli_xxx OU PDO // filtre auteur $_POST['auteur'] = strfprepare($_POST['auteur']); $_POST['auteur'] = moulinette($_POST['auteur']); $auteurs = array(); foreach(explode(' ', $_POST['auteur']) as $v) { $auteurs[] = "auteur LIKE '%".mysql_real_escape_string($v)."%'"; } $sql_auteurs = implode(' OR ', $auteurs); $boole = strfprepare($_POST['boole']); // filtre mots-clés $_POST['keyword'] = strfprepare($_POST['keyword']); $_POST['keyword'] = moulinette($_POST['keyword']); $keywords = array(); foreach(explode(' ', $_POST['keyword']) as $v) { $keywords[] = "motscles LIKE '%".mysql_real_escape_string($v)."%'"; } $sql_keywords = implode($boole, $keywords); // filtre titre $_POST['titre'] = strfprepare($_POST['titre']); $_POST['titre'] = moulinette($_POST['titre']); $titres = array(); foreach(explode(' ', $_POST['titre']) as $v) { $titres[] = "titre LIKE '%".mysql_real_escape_string($v)."%'"; } $sql_titres = implode($boole, $titres); // et comment comptes tu faire pour l'espagnol et les autres langues ? $sql = <<<SQL SELECT * FROM fr_nep WHERE ({$sql_pays}) AND ({$sql_auteurs}) AND ({$sql_keywords}) AND ($sql_titres) ORDER BY volume DESC UNION SELECT * FROM en_nep WHERE ({$sql_pays}) AND ({$sql_auteurs}) AND ({$sql_keywords}) AND ($sql_titres) ORDER BY volume DESC SQL; $articles = array(); $qry = mysql_query($sql) or die('DB Error'); while($row = mysql_fetch_assoc($qry)) { $articles[] = $row; } // échappement des données à l'affichage array_walk_recursive($articles, function(&$v, $k) { return htmlspecialchars(utf8_encode($v)); }); } ?> <br /> <div align="center"> <font size="1" face="Arial, Helvetica, sans-serif"> <div align="center"> <hr> </div></font> <form name="recherche" action="search.php" enctype="x-www-form-encoded" method="post"> <div align="center"><font size="1"> <font face="Arial, Helvetica, sans-serif"> <?php echo forminput('lang','hidden','$lang',''); ?></font></font> <table class="textfr"> <tr> <td><div align="center"><font size="1" face="Arial, Helvetica, sans-serif"><?php echo ($_POST['shead']); ?><br> <br> </font></div></td> <td></td> </tr> <tr> <td> <div align="left"> <table> <tr> <td><font size="1" face="Arial, Helvetica, sans-serif"><?php echo $_POST['pays']. " :"; ?> </font></td><td><font size="1" face="Arial, Helvetica, sans-serif"><?php echo forminput( 'pays', 'text', $_POST['pays'], 'size=60 maxlength=255' ); ?></font></td> </tr> <tr> <td><font size="1" face="Arial, Helvetica, sans-serif"><?php echo $_POST['auteur']. " :"; ?></font></td><td><font size="1" face="Arial, Helvetica, sans-serif"><?php echo forminput( 'auteur', 'text', $_POST['auteur'], 'size=60 maxlength=255' ); ?></font></td> </tr> <tr> <td><font size="1" face="Arial, Helvetica, sans-serif"><br> <br> </font></td><td></td> </table> </div></td> <td><div align="left"><font size="1" face="Arial, Helvetica, sans-serif"></font></div></td> </tr> <tr> <td> <div align="left"> <table> <tr> <td><font size="1" face="Arial, Helvetica, sans-serif"><?php echo utf8_encode($_POST['keyword']) . " :"; ?> </font></td><td><font size="1" face="Arial, Helvetica, sans-serif"><?php echo forminput( 'keyword', 'text', $_POST['keyword'], 'size=60 maxlength=255' ); ?></font></td> </tr> <tr> <td><font size="1" face="Arial, Helvetica, sans-serif"><?php echo $_POST['titre']. " :"; ?> </font></td><td><font size="1" face="Arial, Helvetica, sans-serif"><?php echo forminput( 'titre', 'text', $_POST['titre'], 'size=60 maxlength=255' ); ?></font></td> </tr> </table> </div></td> <td> <div align="left"> <table> </table> </div></td> </tr> <tr class="textfr"> <td> <tr><td><input type="radio" name="boole" value="AND" <?php echo ($_POST['boole'] === 'AND') ? ' checked="checked" ' : ''; ?>><?php echo $_POST['soption1'] ?></td></tr> <tr><td><input type="radio" name="boole" value="OR" <?php echo ($_POST['boole'] === 'OR') ? ' checked="checked" ' : ''; ?>><?php echo $_POST['soption2'] ?></td></tr> <div align="left"></div></td> <td><div align="left"></div></td> </tr> <tr> <td align=center><font size="1" face="Arial, Helvetica, sans-serif"> <input type='submit' name='rechercher' value='<?php echo $_POST['sbouton']; ?>'> </font></td> <td></td> </tr> </table> </div> </form> <hr align="center"> <div align="center"><font size="1"><font face="Arial, Helvetica, sans-serif"> </div> <?php if ( ! empty($articles)): ?> <div align="center"><?php echo count($articles) ?></div> <?php endif ?> </div> <p align="center"> <p align="center" class="auteurfr"><font size="1" face="Arial, Helvetica, sans-serif"> <?php foreach($articles as $article): ?> HTML ICI <?php endforeach ?> </font></p> <div align="center"> <table width="600" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="480" class="anchor"><div><font size="1" face="Arial, Helvetica, sans-serif"><a href="#<?php echo $article['id'] ?>"><?php echo $article['titre'] ?></a></font></div> </td> <td class="anchorvol"><div align="right"><font size="1" face="Arial, Helvetica, sans-serif">Volume <?php echo $article['volume'] . ", p." . $article['numpage'] ?></font><?php echo ( !empty($article['magenligne']) ) ? '<br><a href="' . $article['magenligne'] . '" target="_blank"><img src="../img/btr_' . $lang . '.png" border="0"></a>' : ''; ?></div> </td> </tr> </table> <font size="1" face="Arial, Helvetica, sans-serif"><br> </font> </div> <p align="center"><font size="1" face="Arial, Helvetica, sans-serif"> <?php $q++; echo "<hr>"; // Boucle parcourant l'ensemble des r?sultats de la requ?te pour les afficher les uns // apr?s les autres dans un tableau HTML $k = 0; while($article[$k]) { ?> </font></p> <div align="center"><font size="1" face="Arial, Helvetica, sans-serif"><A name="<?php echo $article[$k]["id"]; ?>"></a> </font> <table width="600" border="0" cellspacing="0" cellpadding="5"> <tr bgcolor="#000099"> <td colspan="3" class="titrefr"><div align="center"><font size="1" face="Arial, Helvetica, sans-serif"><?php echo $article[$k]["titre"]; ?></font></div> </td> </tr> <tr> <td width="14"></td> <td width="13"></td> <td width="543" class="auteurfr"><div align="left"><font size="1" face="Arial, Helvetica, sans-serif"><?php echo $article[$k]["auteur"]; ?></font></div></td> </tr> <tr> <td></td> <td></td> <td class="pays"><div align="left"><font size="1" face="Arial, Helvetica, sans-serif"><?php echo $article[$k]["pays"]; ?> </font></div> </td> </tr> <tr> <td colspan="3" class="textfr"><div align="justify"><font size="1" face="Arial, Helvetica, sans-serif"><?php echo $article[$k]["abstract"]; echo nl2br($abstract); ?></font></div></td> </tr> <tr> <td></td> <td></td> <td colspan="3" class="mcfr"><font size="1" face="Arial, Helvetica, sans-serif">Mots-cl&eacute;s : <?php echo $article[$k]["motscles"]; ?></font></td> </tr> <tr> <td colspan="3" class="volufr"><div align="right"><font size="1" face="Arial, Helvetica, sans-serif">Volume <?php echo $article[$k]["volume"] . ", p." . $article[$k]["numpage"]; ?></font></div></td> </tr> <tr> <td colspan="3" class="etoilfr"><div align="left"><font size="1" face="Arial, Helvetica, sans-serif"><?php echo $article[$k]["etoile"]; ?></font></div></td> </tr> <tr> <td colspan="3"><hr size="1" noshade color="#000099"></td> </tr> </table> <font size="1" face="Arial, Helvetica, sans-serif"><br> </font> </div> <p align="center"><font size="1" face="Arial, Helvetica, sans-serif"><font size="1" face="Arial"> <?php $k++; } { echo "$snoresult"; } ?> </font> <?php include($_SERVER["DOCUMENT_ROOT"].'/footer_en.php'); ?> <?php mysqli_close($sql); ?>
Et voici les remarques de mon terminal que je n'arrive pas a corriger :
PHP Notice: Undefined index: fr_pays in /home/cimm-icmm/public_html/search/search.php on line 125
PHP Notice: Undefined index: fr_auteur in /home/cimm-icmm/public_html/search/search.php on line 128
PHP Notice: Undefined index: fr_keyword in /home/cimm-icmm/public_html/search/search.php on line 143
PHP Notice: Undefined index: fr_titre in /home/cimm-icmm/public_html/search/search.php on line 146
PHP Notice: Undefined index: boole in /home/cimm-icmm/public_html/search/search.php on line 160
PHP Notice: Undefined index: boole in /home/cimm-icmm/public_html/search/search.php on line 161
PHP Notice: Undefined variable: articles in /home/cimm-icmm/public_html/search/search.php on line 188
PHP Warning: Invalid argument supplied for foreach() in /home/cimm-icmm/public_html/search/search.php on line 188
PHP Notice: Undefined variable: article in /home/cimm-icmm/public_html/search/search.php on line 197
PHP Notice: Undefined variable: article in /home/cimm-icmm/public_html/search/search.php on line 197
PHP Notice: Undefined variable: article in /home/cimm-icmm/public_html/search/search.php on line 199
PHP Notice: Undefined variable: article in /home/cimm-icmm/public_html/search/search.php on line 199
PHP Notice: Undefined variable: q in /home/cimm-icmm/public_html/search/search.php on line 209
PHP Notice: Undefined variable: article in /home/cimm-icmm/public_html/search/search.php on line 218
PHP Notice: Undefined variable: snoresult in /home/cimm-icmm/public_html/search/search.php on line 271
PHP Notice: Use of undefined constant sql - assumed 'sql' in /home/cimm-icmm/public_html/search/search.php on line 284
PHP Warning: mysqli_close() expects parameter 1 to be mysqli, string given in /home/cimm-icmm/public_html/search/search.php on line 284
Merci de votre precieuse aide !

Cordialement