Problème création annuaire

A voir également:Problème création annuaireCréation annuaire ✓ - Forum - Programmation Création / mise en page d'un annuaire papier ✓ - Forum - Bureautique Creation d'un annuaire telephonique ✓ - Forum - Programmation Annuaire telechargement - Actualités Annuaire portable ✓ - Forum - Mobile

Bonjour,


J'ai un problème avec mon code php. Je voudrais effectuer une recherche sur la partie annuaire de mon site ( cela correspond à tous les adhérents) mais cela ne m'affiche :
Parse error: syntax error, unexpected '}' in document.parser.class.inc.php(777) : eval()'d code on line 91 ( et pourtant je n'ai aucune parenthèse '}' à la ligne de mon code dans document.parser.php)

Voila mon code : ( en gros je renvois la requète ( nom, la région et le style musical) ( je ne vois pas ou est l'erreur ? )

merci d'avance,


<?php
echo '<div class="carnet-adresses">';

/* recup les vals */
/*
if(isset($_POST['nom'])) { $nom = $_POST['nom']; }
if(isset($_POST['dept'])) { $dept = $_POST['dept']; }
if(isset($_POST['type'])) { $type = $_POST['type']; } else { $type = 'tous'; }
if(isset($_POST['style'])) { $style = $_POST['style']; }
/**/

$depts=array();
$types =array();
$styles =array();

if(isset($_POST['nom'])) { $nom = $_POST['nom']; }
if(isset($_POST['dept'])) { $depts = $_POST['dept']; }
if(isset($_POST['type'])) { $types = $_POST['type']; } else { $type = 'tous'; }
if(isset($_POST['style'])) { $styles = $_POST['style']; }


$nom = str_replace("é","é",$nom);
$nom = str_replace("è","è",$nom);
$nom = str_replace("à","à",$nom);

if($nom!='') { $needNom = ' and nom like "%'.$nom.'%" '; } else { $needNom=''; }

$needDept='';
$needType='';

if( !empty($depts) && !in_array("tous",$depts) ){
foreach($depts as $dept){
$needDept .= ($needDept =="")? " AND ( " : " OR ";
$needDept .= " departement='".$dept."' ";
}
$needDept .=" ) ";
}

if( !empty($types) && !in_array("tous",$types) ){
foreach($types as $type){
$needType .= ($needType =="")? " AND ( " : " OR ";
$needType .= " type = '".$type."' ";
}
$needType .=" ) ";
}


/*
if($dept!='tous') { $needDept = ' and departement="'.$dept.'" '; } else { $needDept=''; }
if($type!='tous') { $needType = ' and type="'.$type.'" '; } else { $needType=''; }
if($style!='tous') { $needStyle = ' and nom="%'.$style.'%" '; } else { $needStyle=''; }
/**/


$where = $needNom.$needDept.$needType;

$l=0;
$query='SELECT * FROM membre where public=1 and actif = 1 and departement < 5 '.$where.' ORDER BY nom asc';
$res = $modx->db->query( $query );
//var_dump($query);

$nb = $modx->db->getRecordCount($res);

for($k=0;$k<$nb;$k++) {
$okreq = '0';
$ok='0';

$row = $modx->db->getRow($res);

$type2=$row['type'];

$needStyle='';
if( !empty($styles) && !in_array("tous",$styles) ){
foreach($styles as $style){
$needStyle .= ($needStyle =="")? " AND ( " : " OR ";
$needStyle .= " style_musical='".$style."' ";
}
$needStyle .=" ) ";
}

if( !in_array("tous",$styles) && $type2!='') {
/* filtre style musical */
$table_details = 'membre_'.$type2;

$selectD = $modx->db->query('select * from '.$table_details);
$colDnb = mysql_num_fields($selectD);
for($i=0; $i<$colDnb; $i++) {
$field_name = mysql_field_name($selectD,$i);
if($field_name=='style_musical') { $okreq='1';}
}

if($okreq=='1') {
if($row['idmembre'] != null && strlen($row['idmembre']) > 0){
echo "plop".$row['idmembre'];
die();
$idm = $row['idmembre'];
//$resMusic = $modx->db->query('select * from '.$table_details.' where IDmembre='.$idm.' and style_musical='.$style);
$queryMusic = 'select * from '.$table_details.' where IDmembre=0'.$idm.$needStyle;
$resMusic = $modx->db->query($queryMusic);
$nbM = mysql_num_rows($resMusic);
} else { $nbM = 0 }
if($nbM!='0') { $ok='1'; } else { $ok='0'; }
}
else {
if($row['idmembre'] != null && strlen($row['idmembre']) > 0){
echo "plop".$row['idmembre'];
die();
$idm = $row['idmembre'];
$resMusic = $modx->db->query('select * from '.$table_details.' where IDmembre=0'.$idm);
$nbM = mysql_num_rows($resMusic);
} else { $nbM = 0 }
if($nbM!='0') { $ok='1'; } else { $ok='0'; }
}

}
else { $ok='1'; }

if($ok=='1' && $nb!=0) {

$idm = $row['idmembre'];
$nom = utf8_encode($row['nom']);
$tel = utf8_encode($row['telephone']);
$ville = utf8_encode($row['ville']);
$email = utf8_encode($row['mail']);
if($row['site']!='') {
$siteweb = 'http://'.utf8_encode($row['site']);
} else { $siteweb=''; }
/* get type fullname */
$getType = $modx->db->query('select * from polca_sous_type_membre_db_name where value="'.$type2.'" ');
$rowgetType = $modx->db->getRow($getType);
$typeId = $rowgetType['internalKey_soustype'];

$getTypeName = $modx->db->query('select * from polca_type_sous_membre where id='.$typeId);
$rowgetTypeName = $modx->db->getRow($getTypeName);
$nameType = utf8_encode($rowgetTypeName['value']);

echo '<div class="col-sm-4"><div class="un_contact">';
if($nom!=NULL) { echo '<a class="manage plus" href="[~188~]&idm='.$idm.'" title="'.utf8_decode($nom).'">Voir</a>'; }
if($nom!=NULL) { echo '<a class="manage nom" href="[~188~]&idm='.$idm.'" title="'.utf8_decode($nom).'">'.ucwords(strtolower(utf8_decode($nom))).'</a>'; }
if($nom!=NULL) { echo '<a class="manage type" href="[~188~]&idm='.$idm.'" title="'.$type2.'">'.$nameType.'</a>'; }
if($ville!=NULL) { echo '<a class="manage ville" href="[~188~]&idm='.$idm.'" title="'.utf8_decode($nom).'"><span></span>'.$ville.'</a>'; }
if($tel!=NULL) { echo '<a class="manage phone" href="[~188~]&idm='.$idm.'" title="'.utf8_decode($nom).'"><span></span>'.$tel.'</a>'; }
echo '<a class="manage mail" href="[~190~]&idm='.$idm.'" title="'.utf8_decode($nom).'"><span></span>Écrire</a>';

if($siteweb!='') { echo '<a href="'.$siteweb.'" title="'.$nom.'" class="siteweb" onclick="window.open(this.href,\'_blank\');return false;"><span></span>Visiter le site</a></div></div>'; }
else { echo '</div></div>'; }

echo '</tr>';
}
}
if($nb==0){ echo '<p id="no_results_p">Aucun résultat de recherche. Élargissez votre requête pour obtenir plus de résultats.</p>'; }
echo '</div>';
?>

Forum

A voir également:Problème création annuaireCréation annuaire ✓ - Forum - Programmation Création / mise en page d'un annuaire papier ✓ - Forum - Bureautique Creation d'un annuaire telephonique ✓ - Forum - Programmation Annuaire telechargement - Actualités Annuaire portable ✓ - Forum - Mobile

Web: www.shapebootstrap.net

4 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

bonjour, merci d'utiliser les balises de code, et d'indiquer à quelle ligne l'erreur se produit.

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,

Pour commencer, comme te l'a indiqué Yg_be, il faut correctement utiliser les balises de code
explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Ensuite, tu sembles utiliser l'ancienne extension mysql ... qui est désormais OBSOLETE.
http://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
Il faut donc réécrire ton code en PDO ou en mysqli.

Il serait bien également d'utiliser l'écriture ternaire histoire de rendre ton code un peu plus lisible.
Par exemple;.. à la place de :

 if($nbM!='0') {        $ok='1';      } else {        $ok='0';      } 

écrire :
 $ok = $nbM!='0'  ?  '1' : 0 ; 


et lorsque tu as besoin de IF/ELSE .. la bonne présentation du code est la façon suivante (avec les retours à la ligne... et l'indentation )
 if( condition ) {     //code  si vrai }else{    // code si faux } 


je t'invite également à lire et à appliquer le contenu de ce lien :
http://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code

Reply
réponses:
  • auteur

  • auteur

  • auteur

  • auteur

  • auteur

  • auteur

  • auteur

  • auteur

  • auteur

  • auteur

  • auteur

  • auteur

  • auteur

  • auteur

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

 <?php $host = "Mon serveur";  $user = "utilisateur";  $password = "mot de passe";  $bdd = "ma base de donnée";  mysql_connect($host, $user, $password) or die ("Connexion au serveur impossible");  // on choisit la bonne base mysql_select_db($bdd) or die ("Connexion a la base impossible");  $nom = $_POST['nom'];   echo " <html>  <head>  <title>Résultat de la recherche</title>  </head>  <body>";  if (($Mot == "")||($Mot == "%")) { // Si aucun mot clé n'a été saisi, // le script demande à l'utilisateur // de bien vouloir préciser un mot clé  echo " Aucun résultat de recherche. Élargissez votre requête pour obtenir plus de résultats. <p>";  }  else { // On selectionne les enregistrements contenant le mot clé  $query = "SELECT distinct nom FROM membre WHERE nom LIKE \"%$nom%\" ";  $result = mysql_query($query);  $row = mysql_fetch_row($result);  $Nombre = $row[0];  // Si aucun enregistrement n'est retourné, // on affiche un message adéquat if ($Nombre == "0") { echo " <h2>Aucun résultat ne correspond à votre recherche</h2>  <p>  ";  }  // Sinon, on affiche le nombre d'enregistrements correspondant // et les résultats eux-mêmes else { $query = "SELECT distinct nom, titre FROM membre WHERE nom LIKE \"%$nom%\"  ORDER by titre ASC";  $result = mysql_query($query);  // Si un seul enregistrement est trouvé, on affiche un message au singulier if ($Nombre == "1") { echo " <a name=\"#resultat\"><h2>Résultat: Un article trouvé</h2></a>  <p>";  } // Dans le cas contraire le message est au pluriel... else { echo " <a name=\"#resultat\"><h2>Résultat: $Nombre articles trouvés</h2></a>  <p>";  } while($row = mysql_fetch_row($result)) { echo " <p>\n <b>$row[2]</b>\n <br><a href=\"../$row[0]\">Visualiser l'article</a>\n <p>\n ";  } }  }  // on ferme la base mysql_close();  ?>  </body>  </html>  


J'ai essayé d'adapter mon code en sql. Je n'ai plus de problème d'erreur. Cependant quand je tape un mot ( il m'affiche tous le temps " Aucun résultat ne correspond à votre recherche. ( est ce que j'ai oublié une requète ? )
PS : j'ai limité mon retour que au nom

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Visiblement ... tu n'as pas envie de suivre les consignes qu'on te donne.
Je t'ai "fortement" invité à lire ET à appliquer le contenu de ce lien : http://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code
.. mais tu ne sembles pas décidé à le faire...
Tu as également de grosses lacunes sur l'écriture du code html en plus du code php...

bref... ton code devrait ressembler à ceci :

 <?php $host = "Mon serveur"; $user = "utilisateur"; $password = "mot de passe"; $bdd = "ma base de donnée";  mysql_connect($host, $user, $password) or die ("Connexion au serveur impossible :" .  . mysql_error()); mysql_select_db($bdd) or die ("Erreur :" . mysql_error());   // récupération PROPRE des variables AVANT de les utiliser $nom = !empty($_POST['nom']) ? $_POST['nom'] : NULL;   if(!$nom){   $error = "Vous devez rensigner un mot pour la recherche"; } else {   // On selectionne les enregistrements contenant le mot clé     $query = "SELECT distinct nom ? titre               FROM membre               WHERE nom LIKE '%$nom%'                ORDER BY titre ASC";      $result = mysql_query($query) or die('Requête invalide : ' . mysql_error());     $Nombre = mysql_num_rows($result);  //Retourne le nombre de lignes d'un résultat MySQL    // Si aucun enregistrement n'est retourné,   // on affiche un message adéquat     if ($Nombre == "0") {       $error =  "<h2>Aucun résultat ne correspond à votre recherche</h2>";     }  ?> <html>   <head>     <title>Résultat de la recherche</title>     <meta charset="utf-8">   </head>   <body>     <?php       if(!empty($error)){         echo "<p><span class='error'>".$error."</span></p>";       }else{         $txtNbResult = ($Nombre==1) ? "Un article trouvé" : "$Nombre articles trouvés " ;         echo "<p><a name=\"#resultat\"><h2>Résultat: " . $txtNbResult ."</h2></a></p>";         while($row = mysql_fetch_row($result)) {           echo "<div id='resultat'><p>                 <b>".$row['titre']."</b>\n                 <br><a href=\"../".htmlspecialchars($row['nom'])".\">".htmlspecialchars($row['titre'])."</a>                 </p>                </div>";         }       }         // on ferme la base     mysql_close();      ?>       </body> </html> 


Cordialement,
Jordane

Reply
réponses:
  • auteur

  • auteur

  • auteur

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed