IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

chercher dans une base de données


Sujet :

PHP & Base de données

  1. #1
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 453
    Par défaut chercher dans une base de données
    Bonjour.
    Mon objectif est de concevoir un Moteur de Recherche pour mon Projet.
    Ce Moteur de Recherche doit afficher les résultats dans une Table lorsque l'Utilisateur (l'Admin) entre seulement "un Numéro de Compte" dans le Formulaire de Recherche.

    MON PREMIER PROBLEME ::: Puisque les informations à afficher ne sont pas toutes dans la mêmes et unique Table, mon problème est au niveau des Request SQL que j'ai formulé dans mon Code (Ligne 16 - 18).

    MON SECOND PROBLEME ::: Il commence par Ligne 31 et se termine à la Ligne 81. Ces lignes qui pour moi, doivent afficher les Résultats de Recherche dans une Table.

    Voici donc mon Code puisque j'ai déjà commencé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    <?php
    	//Connexion à la base de données
    	include("includes/connect_db.php");
     
    	//Initialisation de la variable contenant les résultats
    	$resultats = "";
    //	$nbreParametres = 2; // Nombre de paramètres à renseigner
     
    	//Traitement de la requête
    	if(isset($_POST['query']) && !empty($_POST['query'])){
    		//Si l'utilisateur a entré quelque chose, on traite sa requête
     
    		//On rend clean la requête de l'utilisateur
    		$query = preg_replace("#[^a-z ?0-9]#i", "", $_POST['query']);
     
    		$sql_search = "SELECT u.id, u.fname, u.lname, a.acc_no, a.balance, a.status, a.bdate, a.type, a.id AS acc_id
    					   FROM tbl_users u, tbl_accounts a
    			           WHERE u.id = a.user_id AND a.acc_no LIKE ?";
     
    		$req = $db->prepare($sql_search);
    //		if($nbreParametres == 2){
    			$req->execute(array('%'.$query.'%', '%'.$query.'%'));	
    /*		} else {
    			$req->execute(array('%'.$query.'%', '%'.$query.'%', '%'.$query.'%', '%'.$query.'%'));	
    		} */
     
    		$count = $req->rowCount();
     
    		if($count >= 1){
    			echo "$count résultat(s) trouvé(s) pour <strong>$query</strong><hr/>";
    			while($data = $req->fetch(PDO::FETCH_OBJ)){
    				echo '<div id="errorCls" style="color:#FF0000 !important;font-size:14px;font-weight:bold;"><?php echo $errorMessage; ?></div>';
    				echo '<table width="100%" border="0" align="center" cellpadding="2" cellspacing="1" class="text">';
    				echo '<tr align="center" id="listTableHeader">';
    				   echo '<td>User Name</td>';
    				   echo '<td>Account No.</td>';
    				   echo '<td>Balance</td>';
    				   echo '<td width="120">Account Type</td>';
    				   echo '<td width="80">Account status</td>';
    				   echo '<td width="70">Statement</td>';
    				  echo '</tr>';
    				<?php
    				while($row = dbFetchAssoc($result)) {
    					extract($row);
    					if ($i%2) {
    						$class = 'row1';
    					} else {
    						$class = 'row2';
    					}
     
    					$i += 1;
     
    					$atype = "";
    					if($type == "CA"){$atype = "Checking Account";}
    					else if($type == "SA") {$atype = "Saving Account";}
    					else if($type == "FDA") {$atype = "Fixed deposit Account";}
    				?>
    				  echo '<tr class="<?php echo $class; ?>">'; 
    				   echo '<td><?php echo $fname .' '.$lname; ?></td>';
    				   echo '<td><div align="center"><a href="<?php echo WEB_ROOT; ?>cheg/account/?view=detail&accId=<?php echo $acc_id; ?>"><?php echo $acc_no; ?></a></div></td>';
    				   echo '<td><div align="center">$&nbsp;<?php echo $balance; ?></div></td>';
    				   echo '<td width="120" align="center"><?php echo $atype; ?></td>';
    				   echo '<td width="80" align="center">
    					<a href="javascript:changeAccStatus(<?php echo $acc_id; ?>, '<?php echo $status; ?>');">
    					<?php echo $status == 'INACTIVE'? 'Inactive' : 'Active'; ?>
    					</td>';
    				   echo '<td width="70" align="center"><a href="javascript:viewAccountStatement(<?php echo $id; ?>, <?php echo $acc_no; ?>);">Statement</a></td>';
    				  echo '</tr>';
    				<?php
    				} // end while
     
    				?>
    				  echo '<tr>';
    				   echo '<td colspan="5">&nbsp;</td>';
    				  echo '</tr>';
    				  echo '<tr>'; 
    				   echo '<td colspan="5" align="right"></td>';
    				  echo '</tr>';
    				 echo '</table>';
    				 echo '<p>&nbsp;</p>';
    					}
    					echo '<hr/>';
    		} else {
    		    echo "Il n'y a aucun résultat trouvé pour le Numéro de compte: <strong>$query</strong><hr/>";
    		}
     
     
    	}
     
    <!DOCTYPE html>
    <html>
    	<head>
    		<title>Moteur de Recherche</title>
    		<meta charset="UTF-8" />
    	</head>
    	<body> 
     		<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    			<input type="search" name="query" placeholder="Rechercher un Numéro de compte..." /><br/>
    		</form>
     
    		<?php echo $resultats; ?>
    	</body>
    </html>
     
    ?>
    Est-ce que donc mon Code est correcte pour permettre de chercher un Numéro de Compte et d'afficher les Résultats dans une Table ???

    Sinon, SVP, veuillez m'aider à corriger mon Code ci-dessus.


    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Tu peux aller lire l'étape 3 du premier message de ce fil ?

    https://www.developpez.net/forums/d1...acilement-pdo/

    Puis vérifier quelle requête fonctionne comme tu veux :
    Je te propose déjà cette modif, avec la jointure séparée du filtre, c'est plus clair.

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT u.id, u.fname, u.lname, a.acc_no, a.balance, a.status, a.bdate, a.type, a.id AS acc_id
    FROM tbl_accounts a 
    inner join on tbl_users u on u.id=a.user_id
    WHERE a.acc_no LIKE "123%"
    order by a.acc_no
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 453
    Par défaut
    oK Grand MERCI Dendrite.

    Mais j'ai 2 questions à poser, qui est au niveau du LIKE "123%".
    1 - Pourquoi le "123%" ???
    Et si le numéro à rechercher ne contient ou ne commence pas par 123 ???

    2 - Ma 2ème question (peut-être) que j'ai l'ai déjà posé, dans mon 1er Post. Ça concerne l'affichage des Résultats dans une Table (Table HTML) de la Ligne 31 à 81.
    Est-ce comment ça ???

    Merci d'avance.

  4. #4
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Ben tu modifies 123, bien sûr, toi tu veux obtenir un résultat, et moi, je ne sais pas ce qu'il y a dans ta base.
    Donc mets un truc qui te retourne plusieurs valeurs et dis-nous si la requête fonctionne comme tu veux dans ton PHPmyadmin.

    Une chose est déjà sûre, en zappant le %, tu transformes ton like en = dans ton code PHP !

    edit test CE code sql, j'avais laissé un on de trop dans la proposition précédente :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT u.id, u.fname, u.lname, a.acc_no, a.balance, a.status, a.bdate, a.type, a.id AS acc_id
    FROM tbl_accounts a 
    inner join  tbl_users u on u.id=a.user_id
    WHERE a.acc_no LIKE "123%"
    order by a.acc_no
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  5. #5
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 453
    Par défaut
    Ok merci. Je vais vérifier et je reviens pour faire le retour.

  6. #6
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 453
    Par défaut
    Bonjour.

    J'ai pu faire comme Dendrite m'a conseillé mais en remettant un peu d'ordre dans le Code et en remplaçant le LIKE "123%" par LIKE ? puisqu'il s'agit d'une requête préparée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    <?php
    	//Connexion à la base de données
    	include("includes/connect_db.php");
     
    	//Initialisation de la variable contenant les résultats
    	$resultats = "";
    //	$nbreParametres = 2; // Nombre de paramètres à renseigner
     
    	//Traitement de la requête
    	if(isset($_POST['query']) && !empty($_POST['query'])){
    		//Si l'utilisateur a entré quelque chose, on traite sa requête
     
    		//On rend clean la requête de l'utilisateur
    		$query = preg_replace("#[^a-z ?0-9]#i", "", $_POST['query']);
     
    		$sql_search = "SELECT u.id, u.fname, u.lname, a.acc_no, a.balance, a.status, a.bdate, a.type, a.id AS acc_id 
    		               FROM tbl_accounts a INNER JOIN ON tbl_users u ON u.id=a.user_id 
    					   WHERE a.acc_no LIKE ? ORDER BY a.acc_no";
     
    		$req = $db->prepare($sql_search);
    //		if($nbreParametres == 2){
    			$req->execute(array('%'.$query.'%'));	
    /*		} else {
    			$req->execute(array('%'.$query.'%', '%'.$query.'%', '%'.$query.'%', '%'.$query.'%'));	
    		} */
     
    		$count = $req->rowCount();
     
    		if($count >= 1){
    			echo "$count résultat(s) trouvé(s) pour <strong>$query</strong><hr/>";
    			while($data = $req->fetch(PDO::FETCH_OBJ)){
    				echo '<div id="errorCls" style="color:#FF0000 !important;font-size:14px;font-weight:bold;"><?php echo $errorMessage; ?></div>';
    				echo '<table width="100%" border="0" align="center" cellpadding="2" cellspacing="1" class="text">';
    				echo '<tr align="center" id="listTableHeader">';
    				   echo '<td>User Name</td>';
    				   echo '<td>Account No.</td>';
    				   echo '<td>Balance</td>';
    				   echo '<td width="120">Account Type</td>';
    				   echo '<td width="80">Account status</td>';
    				   echo '<td width="70">Statement</td>';
    				  echo '</tr>';
    				while($row = dbFetchAssoc($result)) {
    					extract($row);
    					if ($i%2) {
    						$class = 'row1';
    					} else {
    						$class = 'row2';
    					}
     
    					$i += 1;
     
    					$atype = "";
    					if($type == "CA"){$atype = "Checking Account";}
    					else if($type == "SA") {$atype = "Saving Account";}
    					else if($type == "FDA") {$atype = "Fixed deposit Account";}
     
    				  echo '<tr class="<?php echo $class; ?>">'; 
    				   echo "<td><?php echo $fname .' '.$lname; ?></td>";
    				   echo '<td><div align="center"><a href="<?php echo WEB_ROOT; ?>cheg/account/?view=detail&accId=<?php echo $acc_id; ?>"><?php echo $acc_no; ?></a></div></td>';
    				   echo '<td><div align="center">$&nbsp;<?php echo $balance; ?></div></td>';
    				   echo '<td width="120" align="center"><?php echo $atype; ?></td>';
    				   echo '<td width="80" align="center">
    					<a href="javascript:changeAccStatus(<?php echo $acc_id; ?>, "<?php echo $status; ?>");">
    					<?php echo $status == "INACTIVE"? "Inactive" : "Active"; ?>
    					</td>';
    				   echo '<td width="70" align="center"><a href="javascript:viewAccountStatement(<?php echo $id; ?>, <?php echo $acc_no; ?>);">Statement</a></td>';
    				  echo '</tr>';
    				} // end while
     
    				  echo '<tr>';
    				   echo '<td colspan="5">&nbsp;</td>';
    				  echo '</tr>';
    				  echo '<tr>'; 
    				   echo '<td colspan="5" align="right"></td>';
    				  echo '</tr>';
    				 echo '</table>';
    				 echo '<p>&nbsp;</p>';
    					}
    					echo '<hr/>';
    		} else {
    		    echo "Il n'y a aucun résultat trouvé pour le Numéro de compte: <strong>$query</strong><hr/>";
    		}
     
     
    	}
     
    ?>
     
    <!DOCTYPE html>
    <html>
    	<head>
    		<title>Moteur de Recherche</title>
    		<meta charset="UTF-8" />
    	</head>
    	<body> 
     		<center><form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    			<input type="search" name="query" size="24" placeholder="Rechercher un Numéro ..." /><br/>
    		</form></center>
     
    		<?php echo $resultats; ?>
    	</body>
    </html>
    Mais avec mon nouveau code, la seule réponse qui est retournée lors des Recherches est celle du else du bas du Code PHP c'est-à-dire "Il n'y a aucun résultat trouvé pour le Numéro de compte: 123112333" même si le Numéro de Code à vérifier (à rechercher) est existe bel et bien dans la Base de données.

    Comment donc corriger mon Code pour qu'il vérifie et affiche correctement les Résultats d'un Numéro de Compte recherché si ce Numéro existe dans la Base de Données SINON affiche comme réponse "Il n'y a aucun résultat trouvé pour le Numéro de compte: 123112333" si ce Numéro n'existe pas dans la BDD ???

    Car la seule réponse actuelle que je reçois est celle du Else du bas du Code PHP.

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Alors il y a uns subtilité : $count = $req->rowCount(); peut ne pas renvoyer de résultat même si la requête renvoie un résultat :
    Si la dernière requête SQL exécutée par l'objet PDOStatement associé est une requête de type SELECT, quelques bases de données retourneront le nombre de lignes retournées par cette requête. Néanmoins, ce comportement n'est pas garanti pour toutes les bases de données et ne devrait pas être exécuté pour des applications portables.
    Essaye de supprimer la condition pour vérifier.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  8. #8
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 453
    Par défaut
    Citation Envoyé par Celira Voir le message
    Alors il y a uns subtilité : $count = $req->rowCount(); peut ne pas renvoyer de résultat même si la requête renvoie un résultat :

    Essaye de supprimer la condition pour vérifier.
    Merci Celira pour la réponse.
    Mais je voudrais savoir comme tu me conseilles de supprimer la condition, dois-je alors supprimer tout ceci ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    		if($count >= 1){
    			echo "$count résultat(s) trouvé(s) pour <strong>$query</strong><hr/>";
    			while($data = $req->fetch(PDO::FETCH_OBJ)){
    				echo '<div id="errorCls" style="color:#FF0000 !important;font-size:14px;font-weight:bold;"><?php echo $errorMessage; ?></div>';
    				echo '<table width="100%" border="0" align="center" cellpadding="2" cellspacing="1" class="text">';
    				echo '<tr align="center" id="listTableHeader">';
    				   echo '<td>User Name</td>';
    				   echo '<td>Account No.</td>';
    				   echo '<td>Balance</td>';
    				   echo '<td width="120">Account Type</td>';
    				   echo '<td width="80">Account status</td>';
    				   echo '<td width="70">Statement</td>';
    				  echo '</tr>';
    				while($row = dbFetchAssoc($result)) {
    					extract($row);
    					if ($i%2) {
    						$class = 'row1';
    					} else {
    						$class = 'row2';
    					}
     
    					$i += 1;
     
    					$atype = "";
    					if($type == "CA"){$atype = "Checking Account";}
    					else if($type == "SA") {$atype = "Saving Account";}
    					else if($type == "FDA") {$atype = "Fixed deposit Account";}
     
    				  echo '<tr class="<?php echo $class; ?>">'; 
    				   echo "<td><?php echo $fname .' '.$lname; ?></td>";
    				   echo '<td><div align="center"><a href="<?php echo WEB_ROOT; ?>cheg/account/?view=detail&accId=<?php echo $acc_id; ?>"><?php echo $acc_no; ?></a></div></td>';
    				   echo '<td><div align="center">$&nbsp;<?php echo $balance; ?></div></td>';
    				   echo '<td width="120" align="center"><?php echo $atype; ?></td>';
    				   echo '<td width="80" align="center">
    					<a href="javascript:changeAccStatus(<?php echo $acc_id; ?>, "<?php echo $status; ?>");">
    					<?php echo $status == "INACTIVE"? "Inactive" : "Active"; ?>
    					</td>';
    				   echo '<td width="70" align="center"><a href="javascript:viewAccountStatement(<?php echo $id; ?>, <?php echo $acc_no; ?>);">Statement</a></td>';
    				  echo '</tr>';
    				} // end while
     
    				  echo '<tr>';
    				   echo '<td colspan="5">&nbsp;</td>';
    				  echo '</tr>';
    				  echo '<tr>'; 
    				   echo '<td colspan="5" align="right"></td>';
    				  echo '</tr>';
    				 echo '</table>';
    				 echo '<p>&nbsp;</p>';
    					}
    					echo '<hr/>';
    		} else {
    		    echo "Il n'y a aucun résultat trouvé pour le Numéro de compte: <strong>$query</strong><hr/>";
    		}
    Puisque que la condition du if débute par là et se termine au else du bas. Mais si je supprime la condition qui est la cœur même de mon code et qui vérifie si le Numéro de compte à recherche est dans la BDD, quelle serait la valeur de mon Code sans condition.
    Je suis perdu et je ne comprends plus rien.

  9. #9
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Je ne voulais dire supprimer le contenu de la condition, juste le if, pour vérifier si ce n'est pas le rowCount qui pose problème.

    Pour remplacer le rowCount, tu as deux options :
    Il y a une solution simple si tu remontes un nombre de lignes raisonnables, c'est de tout récupérer par fetchAll :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    $req->execute(array('%' . $query . '%' ));
     
    $rows = $req->fetchAll(PDO::FETCH_OBJ);
    $count = count($rows);
    if ($count >= 1) {
        echo "$count résultat(s) trouvé(s) pour <strong>$query</strong><hr/>";
        foreach ($rows as $data ) {
            echo '<div id="errorCls" style="color:#FF0000 !important;font-size:14px;font-weight:bold;"><?php echo $errorMessage; ?></div>';
            // ...
            echo '<p>&nbsp;</p>';
        }
        echo '<hr/>';
    }
    else {
        echo "Il n'y a aucun résultat trouvé pour le Numéro de compte: <strong>$query</strong><hr/>";
    }

    La 2e solution est de faire deux requêtes : d'abord une requête COUNT() qui va compter le nombre de lignes éligibles, et si le COUNT retourne une valeur positive, la requête de recherche.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    // on découpe la requête pour ne réécrire deux fois la condition
        $sql_count = "SELECT COUNT(*) ";
        $sql_search = "SELECT u.id, u.fname, u.lname, a.acc_no, a.balance, a.status, a.bdate, a.type, a.id AS acc_id ";
        $sql_from_where = " FROM tbl_accounts a INNER JOIN ON tbl_users u ON u.id=a.user_id WHERE a.acc_no LIKE ? ORDER BY a.acc_no ";
        $params = array('%' . $query . '%' );
     
        $req_count = $db->prepare($sql_count.$sql_from_where);
        $req_count->execute($params);
     
        $count = $req_count->fetchColumn();
     
        if ($count >= 1) {
            echo "$count résultat(s) trouvé(s) pour <strong>$query</strong><hr/>";
            // on exécute la vraie requête 
            $req = $db->prepare($sql_search.$sql_from_where);
            $req->execute($params);
     
            while ($data = $req->fetch(PDO::FETCH_OBJ)) {
                echo '<div id="errorCls" style="color:#FF0000 !important;font-size:14px;font-weight:bold;"><?php echo $errorMessage; ?></div>';
                // ...
                echo '<p>&nbsp;</p>';
            }
            echo '<hr/>';
        }
        else {
            echo "Il n'y a aucun résultat trouvé pour le Numéro de compte: <strong>$query</strong><hr/>";
        }

    La 2e solution est plus propre, et c'est la structure qu'il faudrait mettre en place si tu devais paginer ton tableau
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  10. #10
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 453
    Par défaut
    Ok , merci Celira.
    Je vais me mettre au travail.

  11. #11
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 453
    Par défaut
    Bonjour.
    Comme Celira me l'a conseillé à travers sa 2ème solution proposée, j'ai dû modifier mon code qui inclus aussi le Formulaire HTML du Moteur de Recherche. Mais malheureusement, le problème persiste et retourne seulement la réponse du false. Pour être explicite, la seule réponse qui est retournée lors des Recherches est celle du else du bas du Code PHP c'est-à-dire "Il n'y a aucun résultat trouvé pour le Numéro de compte: 123112333" même si le Numéro de Code à vérifier (à rechercher) est existe bel et bien dans la Base de données.

    Aidez-moi svp à corriger cette erreur qui me fatigue et dont je ne comprends plus rien.

    Voici l'intégralité de mon nouveau code incluant celui du Formulaire HTML:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    <?php
    	//Connexion à la base de données
    	include("includes/connect_db.php");
     
    	//Initialisation de la variable contenant les résultats
    	$resultats = "";
    //	$nbreParametres = 2; // Nombre de paramètres à renseigner
     
    	//Traitement de la requête
    	if(isset($_POST['query']) && !empty($_POST['query'])){
    		//Si l'utilisateur a entré quelque chose, on traite sa requête
     
    		//On rend clean la requête de l'utilisateur
    		$query = preg_replace("#[^a-z ?0-9]#i", "", $_POST['query']);
     
        $sql_count = "SELECT COUNT(*) ";
        $sql_search = "SELECT u.id, u.fname, u.lname, a.acc_no, a.balance, a.status, a.bdate, a.type, a.id AS acc_id ";
        $sql_from_where = " FROM tbl_accounts a INNER JOIN ON tbl_users u ON u.id=a.user_id WHERE a.acc_no LIKE ? ORDER BY a.acc_no ";
        $params = array('%' . $query . '%' );
     
        $req_count = $db->prepare($sql_count.$sql_from_where);
        $req_count->execute($params);
     
        $count = $req_count->fetchColumn();
     
        if ($count >= 1) {
            echo "$count résultat(s) trouvé(s) pour <strong>$query</strong><hr/>";
            // on exécute la vraie requête 
            $req = $db->prepare($sql_search.$sql_from_where);
            $req->execute($params);
     
            while ($data = $req->fetch(PDO::FETCH_OBJ)) {
                echo '<div id="errorCls" style="color:#FF0000 !important;font-size:14px;font-weight:bold;"><?php echo $errorMessage; ?></div>';
    				echo '<table width="100%" border="0" align="center" cellpadding="2" cellspacing="1" class="text">';
    				echo '<tr align="center" id="listTableHeader">';
    				   echo '<td>User Name</td>';
    				   echo '<td>Account No.</td>';
    				   echo '<td>Balance</td>';
    				   echo '<td width="120">Account Type</td>';
    				   echo '<td width="80">Account status</td>';
    				   echo '<td width="70">Statement</td>';
    				  echo '</tr>';
    				while($row = dbFetchAssoc($result)) {
    					extract($row);
    					if ($i%2) {
    						$class = 'row1';
    					} else {
    						$class = 'row2';
    					}
     
    					$i += 1;
     
    					$atype = "";
    					if($type == "CA"){$atype = "Checking Account";}
    					else if($type == "SA") {$atype = "Saving Account";}
    					else if($type == "FDA") {$atype = "Fixed deposit Account";}
     
    				  echo '<tr class="<?php echo $class; ?>">'; 
    				   echo "<td><?php echo $fname .' '.$lname; ?></td>";
    				   echo '<td><div align="center"><a href="<?php echo WEB_ROOT; ?>cheg/account/?view=detail&accId=<?php echo $acc_id; ?>"><?php echo $acc_no; ?></a></div></td>';
    				   echo '<td><div align="center">$&nbsp;<?php echo $balance; ?></div></td>';
    				   echo '<td width="120" align="center"><?php echo $atype; ?></td>';
    				   echo '<td width="80" align="center">
    					<a href="javascript:changeAccStatus(<?php echo $acc_id; ?>, "<?php echo $status; ?>");">
    					<?php echo $status == "INACTIVE"? "Inactive" : "Active"; ?>
    					</td>';
    				   echo '<td width="70" align="center"><a href="javascript:viewAccountStatement(<?php echo $id; ?>, <?php echo $acc_no; ?>);">Statement</a></td>';
    				  echo '</tr>';
    				} // end while
     
    				  echo '<tr>';
    				   echo '<td colspan="5">&nbsp;</td>';
    				  echo '</tr>';
    				  echo '<tr>'; 
    				   echo '<td colspan="5" align="right"></td>';
    				  echo '</tr>';
    				 echo '</table>';
    				 echo '<p>&nbsp;</p>';
    					}
    					echo '<hr/>';
    		} else {
    		    echo "Il n'y a aucun résultat trouvé pour le Numéro de compte: <strong>$query</strong><hr/>";
    		}
     
     
    	}
     
    ?>
     
    <!DOCTYPE html>
    <html>
    	<head>
    		<title>Moteur de Recherche</title>
    		<meta charset="UTF-8" />
    	</head>
    	<body> 
     		<center><form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    			<input type="search" name="query" size="24" placeholder="Rechercher un Numéro ..." /><br/>
    		</form></center>
     
    		<?php echo $resultats; ?>
    	</body>
    </html>

  12. #12
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- as-tu fait un DEBOGAGE DE BASE ?
    • Afficher les variable / requête (echo), pour voir ce qu'elles contiennent ?
    • Afficher les array (var_dump) ?

    2- As-tu testé la requête dans phpMyAdmin ??

    $sql_from_where = " FROM tbl_accounts a INNER JOIN ON tbl_users u ON u.id=a.user_id WHERE a.acc_no LIKE ? ORDER BY a.acc_no ";
    Je doute que ça fonctionne...
    Un try catch aurait sans doute permis d'afficher l'erreur.

    Cette erreur (un "ON" en trop), avait été faite par Dendrite, puis CORRIGE par elle !
    Citation Envoyé par Dendrite Voir le message
    ...edit test CE code sql, j'avais laissé un on de trop dans la proposition précédente :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT u.id, u.fname, u.lname, a.acc_no, a.balance, a.status, a.bdate, a.type, a.id AS acc_id
    FROM tbl_accounts a 
    inner join  tbl_users u on u.id=a.user_id
    WHERE a.acc_no LIKE "123%"
    order by a.acc_no

  13. #13
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Je vais poser une question bête : de quel type est le champ acc_no en base ? (et au passage, sur quel type de SGDB es-tu ?)
    Et est-ce que la requête fonctionne directement sur la base (par PhpMyAdmin ou équivalent) ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  14. #14
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 453
    Par défaut
    Citation Envoyé par Celira Voir le message
    Je vais poser une question bête : de quel type est le champ acc_no en base ? (et au passage, sur quel type de SGDB es-tu ?)
    Et est-ce que la requête fonctionne directement sur la base (par PhpMyAdmin ou équivalent) ?
    Merci à chacun de vous pour vos réponse.
    Pour répondre à Célira, j'utilise MySQL et le champs acc_no est du type int.

  15. #15
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 453
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Bonjour,

    1- as-tu fait un DEBOGAGE DE BASE ?
    • Afficher les variable / requête (echo), pour voir ce qu'elles contiennent ?
    • Afficher les array (var_dump) ?

    2- As-tu testé la requête dans phpMyAdmin ??


    Je doute que ça fonctionne...
    Un try catch aurait sans doute permis d'afficher l'erreur.

    Cette erreur (un "ON" en trop), avait été faite par Dendrite, puis CORRIGE par elle !
    Merci jreaux62. Mais je voulais savoir à quel niveau de mon Code dois-je afficher :

    • Afficher les variable / requête (echo), pour voir ce qu'elles contiennent ?
    • Afficher les array (var_dump) ?


    ???

    Et de 2, comment corriger cette erreur (un "ON" en trop), qu'avait été faite par Dendrite dans la Requête ???

    Merci.

  16. #16
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Citation Envoyé par cheboy Voir le message
    le champs acc_no est du type int.
    ah ben forcément ! LIKE ne fonctionne que sur des chaines.
    Tu as donc deux possibilités :
    Soit tu utilise le numéro exact et tu vires le LIKE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        $sql_from_where = " FROM tbl_accounts a INNER JOIN ON tbl_users u ON u.id=a.user_id WHERE a.acc_no = ? ORDER BY a.acc_no ";
    Soit tu convertis ton numéro en chaine à la volée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        $sql_from_where = " FROM tbl_accounts a INNER JOIN ON tbl_users u ON u.id=a.user_id WHERE CAST(a.acc_no as CHAR) LIKE ? ORDER BY a.acc_no ";
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  17. #17
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 453
    Par défaut
    Ok Célira. Je vais vérifier cela. Encore grand merci pour l'assistance.

  18. #18
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 453
    Par défaut
    Bonjour à tous.

    Encore une fois merci à tous pour le soutien.
    Après correction, je reçois finalement avec succès les messages de vérification du TRUE et du FALSE qui vérifient si le Numéro recherché existe dans la BDD ou non.

    Mais mon premier souci actuel est que je reçois les erreur suivantes afficher sur la Page de Recherche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Notice: Undefined variable: resultats in C:\xampp\htdocs\bk\cheg\include\template.php on line 40
    
    Notice: Undefined variable: result in C:\xampp\htdocs\bk\cheg\include\template.php on line 102
    
    Fatal error: Call to a member function fetch() on null in C:\xampp\htdocs\bk\library\database.php on line 43
    ET le second souci est que les résultats des contenus représentés par les Variables de la Ligne 43 à la Ligne 69 du Code du Fichier template.php (qui contient le Code du Moteur de Recherche) ne s'affiche pas alors que mon souhait est d'afficher sous les <td> des informations "User Name, Account No., Balance, Account Type, Account status, Statement" à travers les variables définies de la Ligne 43 à la Ligne 69 du Code du Fichier template.php.

    CODE Template.php:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    <?php
    	//Connexion à la base de données
    	include("includes/connect_db.php");
     
    	//Initialisation de la variable contenant les résultats
    	$resultats = "";
    //	$nbreParametres = 2; // Nombre de paramètres à renseigner
     
    	//Traitement de la requête
    	if(isset($_POST['query']) && !empty($_POST['query'])){
    		//Si l'utilisateur a entré quelque chose, on traite sa requête
     
    		//On rend clean la requête de l'utilisateur
    		$query = preg_replace("#[^a-z ?0-9]#i", "", $_POST['query']);
     
        $sql_count = "SELECT COUNT(*) ";
        $sql_search = "SELECT u.id, u.fname, u.lname, a.acc_no, a.balance, a.status, a.bdate, a.type, a.id AS acc_id ";
        $sql_from_where = " FROM tbl_accounts a INNER JOIN tbl_users u ON u.id = a.user_id WHERE a.acc_no LIKE ? ORDER BY a.acc_no ";
        $params = array('%' . $query . '%' );
     
        $req_count = $db->prepare($sql_count.$sql_from_where);
        $req_count->execute($params);
     
        $count = $req_count->fetchColumn();
     
        if ($count >= 1) {
            echo "$count résultat(s) trouvé(s) pour <strong>$query</strong><hr/>";
            // on exécute la vraie requête 
            $req = $db->prepare($sql_search.$sql_from_where);
            $req->execute($params);
     
            while ($data = $req->fetch(PDO::FETCH_OBJ)) {
                echo '<div id="errorCls" style="color:#FF0000 !important;font-size:14px;font-weight:bold;"><?php echo $errorMessage; ?></div>';
    				echo '<table width="100%" border="0" align="center" cellpadding="2" cellspacing="1" class="text">';
    				echo '<tr align="center" id="listTableHeader">';
    				   echo '<td>User Name</td>';
    				   echo '<td>Account No.</td>';
    				   echo '<td>Balance</td>';
    				   echo '<td width="120">Account Type</td>';
    				   echo '<td width="80">Account status</td>';
    				   echo '<td width="70">Statement</td>';
    				  echo '</tr>';
    				while($row = dbFetchAssoc($result)) {
    					extract($row);
    					if ($i%2) {
    						$class = 'row1';
    					} else {
    						$class = 'row2';
    					}
     
    					$i += 1;
     
    					$atype = "";
    					if($type == "CA"){$atype = "Checking Account";}
    					else if($type == "SA") {$atype = "Saving Account";}
    					else if($type == "FDA") {$atype = "Fixed deposit Account";}
     
    				  echo '<tr class="<?php echo $class; ?>">'; 
    				   echo "<td><?php echo $fname .' '.$lname; ?></td>";
    				   echo '<td><div align="center"><a href="<?php echo WEB_ROOT; ?>cheg/account/?view=detail&accId=<?php echo $acc_id; ?>"><?php echo $acc_no; ?></a></div></td>';
    				   echo '<td><div align="center">$&nbsp;<?php echo $balance; ?></div></td>';
    				   echo '<td width="120" align="center"><?php echo $atype; ?></td>';
    				   echo '<td width="80" align="center">
    					<a href="javascript:changeAccStatus(<?php echo $acc_id; ?>, "<?php echo $status; ?>");">
    					<?php echo $status == "INACTIVE"? "Inactive" : "Active"; ?>
    					</td>';
    				   echo '<td width="70" align="center"><a href="javascript:viewAccountStatement(<?php echo $id; ?>, <?php echo $acc_no; ?>);">Statement</a></td>';
    				  echo '</tr>';
    				} // end while
     
    				  echo '<tr>';
    				   echo '<td colspan="5">&nbsp;</td>';
    				  echo '</tr>';
    				  echo '<tr>'; 
    				   echo '<td colspan="5" align="right"></td>';
    				  echo '</tr>';
    				 echo '</table>';
    				 echo '<p>&nbsp;</p>';
    					}
    					echo '<hr/>';
    		} else {
    		    echo "Il n'y a aucun résultat trouvé pour le Numéro de compte: <strong>$query</strong><hr/>";
    		}
     
     
    	}
     
    ?>
     
    <!DOCTYPE html>
    <html>
    	<head>
    		<title>Moteur de Recherche</title>
    		<meta charset="UTF-8" />
    	</head>
    	<body> 
     		<center><form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    			<input type="search" name="query" size="24" placeholder="Rechercher un Numéro ..." /><br/>
    		</form></center>
     
    		<?php echo $resultats; ?>
    	</body>
    </html>
    ET LE CODE Database.php:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    <?php
    require_once 'near.php';
    require_once 'MySQL.php';
     
    function dd($data){
    	echo "<pre>";
    	print_r($data);
    	echo "</pre>";
    }
     
    function dbQuery($sql)
    {
    	$args = func_get_args();
    	if($args != null){
    		array_shift($args);
    		/* if(is_array($args) && count($args) === 1){
    			$tab = $args[0];
    			$args = (is_array($args)) ? $tab : array($tab);
    		  }*/
    	}
    	$db = new MySQL();
    	$result = ($args != null) ? $db->query($sql,$args) : $db->query($sql);
    	return $result;
    }
     
    /* 
    Remplacer les appels de cette fonction par dbNumRows($result)
    Quand tous les appels seront remplacer alors supprimer cette fonction
    */
    function dbAffectedRows()
    {
    	die('<h1 style="color:red">Remplacer dbAffectedRows() par dbNumRows($result)</h1>');
    }
     
    // Je laisse le $resultType mais il ne sert à rien
    // Pour le retirer faut avant retirer ce $resultType de tous les appels a cette fonction
    function dbFetchArray($result, $resultType = null) {
    	return $result->fetch(PDO::FETCH_NUM);
    }
     
    function dbFetchAssoc($result)
    {
    	return $result->fetch(PDO::FETCH_ASSOC);
    }
     
    function dbFetchRow($result) 
    {
    	return $result->fetch(PDO::FETCH_BOTH);
    }
     
    function dbFreeResult($result)
    {
    	return $result->closeCursor();
    }
     
    function dbNumRows($result)
    {
    	return $result->rowCount();
    }
     
    function dbInsertId()
    {
    	return MySQL::lastInsertId();
    }
     
    // fonction ajouter pour récupérer tous les enregistrement d'un coup sous forme de tableau
    // $type peut avoir comme valeur "both", "num" ou "assoc"
    function dbFetchAll($result, $type = "both") {
    	if($type == "num"){
    		return $result->fetchAll(PDO::FETCH_NUM);
    	} else if($type == "assoc"){
    		return $result->fetchAll(PDO::FETCH_ASSOC);
    	} else {
    		return $result->fetchAll(PDO::FETCH_BOTH);
    	}
    }
     
    ?>
    Comment donc corriger ces Erreurs et permettre au Moteur de Recherche de fonctionner normalement en reconnaissant et en affichant les Variable de la Ligne 43 à la Ligne 69 du Code du Fichier template.php ???

    Merci de m'aider svp.

  19. #19
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    On veut bien te "soutenir",... mais tu es lourd à porter...

    Les numéros de lignes dans les messages d'erreurs ne correspondent pas dans le scripts donnés.

    Par contre, on peut voir ligne 43 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Line 43: 				while($row = dbFetchAssoc($result)) {
    où $result ne correspond à rien.

    Quant à $resultats :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Line 6: 	$resultats = "";
    Line 101: 		<?php echo $resultats; ?>

  20. #20
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Salut. Je sais pas pourquoi, j'ai corrigé et indenté ton code.
    Parce qu'il fait très beau, parce qu'on est vendredi, Thanks God it's Friday !, parce que c'était lui, parce que c'était moi !
    Repars de ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    <?php
    include("includes/connect_db.php");
    $result = '';
    if(isset($_POST['query']) && !empty($_POST['query'])){
    	$query = preg_replace("#[^a-z ?0-9]#i", "", $_POST['query']);
    	$sql_count = "SELECT COUNT(*) ";
    	$sql_search = "SELECT u.id, u.fname, u.lname, a.acc_no, a.balance, a.status, a.bdate, a.type, a.id AS acc_id ";
    	$sql_from_where = " FROM tbl_accounts a INNER JOIN tbl_users u ON u.id = a.user_id WHERE a.acc_no LIKE ? ORDER BY a.acc_no ";
    	$params = array('%' . $query . '%' );
    	$req_count = $db->prepare($sql_count.$sql_from_where);
    	$req_count->execute($params);
    	$count = $req_count->fetchColumn();
    	if ($count >= 1) {
    		echo "$count résultat(s) trouvé(s) pour <strong>$query</strong><hr/>";
    		$req = $db->prepare($sql_search.$sql_from_where);
    		$req->execute($params);
    		while ($data = $req->fetch(PDO::FETCH_OBJ)) {
    			echo '<div id="errorCls" style="color:#FF0000 !important;font-size:14px;font-weight:bold;">'.$errorMessage.'</div>';
    			$result.= '<table width="100%" border="0" align="center" cellpadding="2" cellspacing="1" class="text">';
    			$result.= '<tr align="center" id="listTableHeader">';
    			$result.= '<td>User Name</td>';
    			$result.= '<td>Account No.</td>';
    			$result.= '<td>Balance</td>';
    			$result.= '<td width="120">Account Type</td>';
    			$result.= '<td width="80">Account status</td>';
    			$result.= '<td width="70">Statement</td>';
    			$result.= '</tr>';
    			$i=0;
    			while($row = dbFetchAssoc($data)) {
    				extract($row);
    				if ($i%2) {
    					$class = 'row1';
    				} else {
    					$class = 'row2';
    				}
    				$i += 1;
    				$atype = "";
    				if($type == "CA"){$atype = "Checking Account";}
    				elseif($type == "SA") {$atype = "Saving Account";}
    				elseif($type == "FDA") {$atype = "Fixed deposit Account";}
    				$result.= '<tr class="'.$class.'">'; 
    				$result.= '<td>'.$fname .' '.$lname.'</td>';
    				$result.= '<td><div align="center"><a href="'.WEB_ROOT.'/cheg/account/?view=detail&accId='.$acc_id.'" >'.$acc_no.'</a></div></td>';
    				$result.= '<td><div align="center">'.$balance.'</div></td>';
    				$result.= '<td width="120" align="center">'.$atype.'</td>';
    				$result.= '<td width="80" align="center"><a href="javascript:changeAccStatus('.$acc_id.','.$status.');" '.($status == "INACTIVE")?"Inactive":"Active".'></td>';
    				$result.= '<td width="70" align="center"><a href="javascript:viewAccountStatement('.$id.','.$acc_no.');">Statement</a></td>';
    				$result.= '</tr>';
    			}
    			$result.= '<tr>';
    			$result.= '<td colspan="5">&nbsp;</td>';
    			$result.= '</tr>';
    			$result.= '<tr>'; 
    			$result.= '<td colspan="5" align="right"></td>';
    			$result.= '</tr>';
    			$result.= '</table>';
    			$result.= '<p>&nbsp;</p>';
    		}
    		$result.= '<hr/>';
    	} else {
    		$result.= "Il n'y a aucun résultat trouvé pour le Numéro de compte: <strong>$query</strong><hr/>";
    	}
    }
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    	<title>Moteur de Recherche</title>
    	<meta charset="UTF-8" />
    </head>
    <body> 
    	<center><form action="<?php $result.= $_SERVER['PHP_SELF']; ?>" method="post">
    		<input type="search" name="query" size="24" placeholder="Rechercher un Numéro ..." /><br/>
    	</form></center>
    	<?php echo $result; ?>
    </body>
    </html>
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/03/2018, 17h19
  2. Réponses: 8
    Dernier message: 10/03/2015, 13h25
  3. [MCD] Aidez moi à corriger mon MCD avant de generer MLR
    Par erusie dans le forum Schéma
    Réponses: 14
    Dernier message: 26/08/2010, 20h03
  4. Commande SQL pour afficher les résultats d'une lettre
    Par floctc dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 06/04/2009, 11h37
  5. problème pour éviter les doublons dans une table
    Par bonnet85 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 19/02/2008, 04h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo