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. #21
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    452
    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 : 452
    Points : 66
    Points
    66
    Par défaut
    Merci Dendrite. Grand merci à toi.

  2. #22
    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 : 58
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Attention Cheboy, dernière modif à 17H43... J'aime bien éditer, corriger, éditer, corriger etc. etc.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  3. #23
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    452
    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 : 452
    Points : 66
    Points
    66
    Par défaut
    Bonjour à tous et surtout à Dendrite.

    J'ai testé le Code que tu m'as faire corriger. Mais malheureusement je reçois toujours des (2) erreurs dont:

    1 - Fatal error: Call to undefined method stdClass::fetch() in C:\xampp\htdocs\bk\library\database.php on line 43

    2 - /bk/cheg/user/index.php (qui s'affiche sur la Page) indiquant la Page sur laquelle je suis actuellement.

    C'est vrai que je semble lourd à porter mais je ne saurai m'en sortir sans votre aide.

    NB: Pour rappel, le Code database.php contient:

    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);
    	}
    }
     
    ?>
    Merci de m'aider svp.

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

    1- Il faut être plus rigoureux dans l'écriture, et l'indentation, pour une meilleure compréhension et lisibilité du code.

    2- Inutile de mettre des $result .= à chaque ligne (voir mon code)

    3- tu avais un while en trop, et mal placé
    Les echo doivent être remplacés par $result .= (puisqu'on est ici AVANT l'affichage HTML)

    4- isset(...) est inclus dans !empty(...) : inutile de mettre les deux
    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
    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
    <?php
    include("includes/connect_db.php");
    $result = '';
    if( !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)
    	{
    		$result .= "$count résultat(s) trouvé(s) pour <strong>$query</strong><hr/>";
     
    		$req = $db->prepare($sql_search.$sql_from_where);
    		$req->execute($params);
     
    		$result .= '
    		<div id="errorCls" style="color:#FF0000 !important;font-size:14px;font-weight:bold;">'.$errorMessage.'</div>
    		<table width="100%" border="0" align="center" cellpadding="2" cellspacing="1" class="text">
    			<tr align="center" id="listTableHeader">
    				<td>User Name</td>
    				<td>Account No.</td>
    				<td>Balance</td>
    				<td width="120">Account Type</td>
    				<td width="80">Account status</td>
    				<td width="70">Statement</td>
    			</tr>
    			';
    		$i=0;
    		while($row = dbFetchAssoc($req)) 
    		{
    			extract($row);
    			$class = ($i%2)? 'row1' : '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.'">
    				<td>'.$fname .' '.$lname.'</td>
    				<td><div align="center"><a href="'.WEB_ROOT.'/cheg/account/?view=detail&accId='.$acc_id.'" >'.$acc_no.'</a></div></td>
    				<td><div align="center">'.$balance.'</div></td>
    				<td width="120" align="center">'.$atype.'</td>
    				<td width="80" align="center"><a href="javascript:changeAccStatus('.$acc_id.','.$status.');" '.($status == "INACTIVE")?"Inactive":"Active".'></td>
    				<td width="70" align="center"><a href="javascript:viewAccountStatement('.$id.','.$acc_no.');">Statement</a></td>
    			</tr>
    			';
    		}
    		$result .= '
    			<tr>
    				<td colspan="5">&nbsp;</td>
    			</tr>
    			<tr>
    				<td colspan="5" align="right"></td>
    			</tr>
    		</table>
    		<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/>";
    	}
    }
    ?>

    5- extract($row); est une très mauvaise pratique !
    Car tu crées alors des variables, qui pourraient rentrer en conflit avec d'autres (et les écraser...)
    Puisque tu as ->fetch(PDO::FETCH_ASSOC), remplace :
    • $type par $row['type']
    • $lname par $row['lname']
    • (et ainsi de suite)

    Là, plus aucune confusion possible.

    6- Enfin (?), ajoute des COMMENTAIRES/explications dans ton code :tu seras content le jour où tu devras faire des modifications...

    Il y aurait encore beaucoup à dire, mais on garde ça pour la prochaine fois...
    Dernière modification par Invité ; 21/04/2018 à 11h58.

  5. #25
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    452
    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 : 452
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    5- extract($row); est une très mauvaise pratique !
    Car tu crées alors des variables, qui pourraient rentrer en conflit avec d'autres (et les écraser...)
    Puisque tu as ->fetch(PDO::FETCH_ASSOC), remplace :
    • $type par $row['type']
    • $lname par $row['lname']
    • (et ainsi de suite)

    Là, plus aucune confusion possible.

    6- Enfin (?), ajoute des COMMENTAIRES/explications dans ton code :tu seras content le jour où tu devras faire des modifications...

    Il y aurait encore beaucoup à dire, mais on garde ça pour la prochaine fois...
    Ok Merci Jreaux62.
    En disant que extract($row); est une mauvaise pratique. Et qu'il faudrait le changer, comment pourrai-je donc le faire car dans ton nouveau Code, extract($row); s'y trouve encore.

    Dois-je un truc du genre:

    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
    		while($row = dbFetchAssoc($req)) 
    		{
                            // Je viens d'effacer le extract($row); sur cette même ligne.
    			$class = ($i%2)? 'row1' : 'row2';
    			$i += 1;
    			$row['atype'] = "";
    			if($row['type'] == "CA"){ $row['atype'] = "Checking Account";}
    			elseif($row['type'] == "SA") { $row['atype'] = "Saving Account";}
    			elseif($row['type'] == "FDA") { $row['atype'] = "Fixed deposit Account";}
     
    			$result .= '
    			<tr class="'.$class.'">
    				<td>'.$row['name'] .' '.$row['lname'].'</td>
    				<td><div align="center"><a href="'.WEB_ROOT.'/cheg/account/?view=detail&accId='.$row['acc_id'].'" >'.$row['acc_no'].'</a></div></td>
    				<td><div align="center">'.$row['balance'].'</div></td>
    				<td width="120" align="center">'.$row['atype'].'</td>
    				<td width="80" align="center"><a href="javascript:changeAccStatus('.$acc_id.','.$status.');" '.($status == "INACTIVE")?"Inactive":"Active".'></td>
    				<td width="70" align="center"><a href="javascript:viewAccountStatement('.$row['id'].','.$row['acc_no'].');">Statement</a></td>
    			</tr>
    			';
    		}
    ???
    Car je ne comprends pas exactement comment remplacer ou Récupérer les Variables avec $row['...'] ???

    Merci de m'éclaircir.

  6. #26
    Invité
    Invité(e)
    Par défaut
    1- $row est un array, qui contient DEJA toutes ces données.

    2- Pour t'en convaincre, ajoute après le while :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<pre>'; print_r($row); echo '</pre>';

    3- A mon avis, c'est ta fonction dbFetchAssoc qui ne va pas ici.
    REMPLACE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    		while($row = dbFetchAssoc($req))
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    		while( $row = $req->fetch(PDO::FETCH_ASSOC) )

  7. #27
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    452
    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 : 452
    Points : 66
    Points
    66
    Par défaut
    Bonjour à tous et surtout à jreaux62.

    En utilisant la dernière correction de jreaux62:

    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
    <?php
    include("includes/connect_db.php");
    $result = '';
    if( !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)
    	{
    		$result .= "$count résultat(s) trouvé(s) pour <strong>$query</strong><hr/>";
     
    		$req = $db->prepare($sql_search.$sql_from_where);
    		$req->execute($params);
     
    		$result .= '
    		<div id="errorCls" style="color:#FF0000 !important;font-size:14px;font-weight:bold;">'.$errorMessage.'</div>
    		<table width="100%" border="0" align="center" cellpadding="2" cellspacing="1" class="text">
    			<tr align="center" id="listTableHeader">
    				<td>User Name</td>
    				<td>Account No.</td>
    				<td>Balance</td>
    				<td width="120">Account Type</td>
    				<td width="80">Account status</td>
    				<td width="70">Statement</td>
    			</tr>
    			';
    		$i=0;
    		while($row = dbFetchAssoc($req)) 
    		{
    			extract($row);
    			$class = ($i%2)? 'row1' : '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.'">
    				<td>'.$fname .' '.$lname.'</td>
    				<td><div align="center"><a href="'.WEB_ROOT.'/cheg/account/?view=detail&accId='.$acc_id.'" >'.$acc_no.'</a></div></td>
    				<td><div align="center">'.$balance.'</div></td>
    				<td width="120" align="center">'.$atype.'</td>
    				<td width="80" align="center"><a href="javascript:changeAccStatus('.$acc_id.','.$status.');" '.($status == "INACTIVE")?"Inactive":"Active".'></td>
    				<td width="70" align="center"><a href="javascript:viewAccountStatement('.$id.','.$acc_no.');">Statement</a></td>
    			</tr>
    			';
    		}
    		$result .= '
    			<tr>
    				<td colspan="5">&nbsp;</td>
    			</tr>
    			<tr>
    				<td colspan="5" align="right"></td>
    			</tr>
    		</table>
    		<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/>";
    	}
    }
    ?>
    Je reçois des erreur du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Notice: Undefined variable: errorMessage in C:\xampp\htdocs\bk\cheg\include\template.php on line 74
     
    Inactive
     
    /bk/cheg/user/index.php
    Et ça n'en fini plus les erreurs. Vraiment je suis presque découragé PUISQUE les erreurs n'en finissent plus et se succèdent.

    Le but est d'afficher les valeurs (représentées par les variables du Code au Niveau de la Table dans le Code) recherchées sous les Titres (Username, Account No, Balance, Account type, Account status, Statement).

    Nom : CAPTURE D'ECRAN ERREUR CHEGBK.png
Affichages : 104
Taille : 40,9 Ko.

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

    Bis repetita : Si tu veux t'en sortir, il faut commencer par COMPRENDRE les messages d'erreurs, et SAVOIR où regarder !

    .../template.php on line 74
    Là, le message dit : fichier template.php à la ligne 74 -> c'est LA qu'il faut regarder !

    (Et le code que je t'ai donné fait.... 73 lignes ! )


    A priori, on peut supposer que $errorMessage n'est pas défini. (?)
    On peut éviter cette reeur avec :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo ( !empty($errorMessage) )? $errorMessage : '';

  9. #29
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    452
    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 : 452
    Points : 66
    Points
    66
    Par défaut
    C'est plutôt sur la ligne 46.
    Cette même erreur sur la ligne 74 est signalé quand j'avais ajouté le Code à une autre partie du Code existant ce qui fait ce décalage sur la Ligne 74.
    Sinon au niveau du Code c'est sur la Ligne 46 que l'erreur est signalé:

    Nom : CAPTURE_D_ECRAN_ERREUR_CHEGBK.png
Affichages : 88
Taille : 41,0 Ko

  10. #30
    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 : 58
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Et ça n'en fini plus les erreurs. Vraiment je suis presque découragé PUISQUE les erreurs n'en finissent plus et se succèdent.
    Oui, ça fait ça quand on veut tout faire d'un coup et tout tester à la fin.
    Pour ton prochain code, prends cette habitude : J'écris une ligne, je teste, une boucle je teste, une condition je teste... etc. etc.
    Toujours savoir ce que tu as testé ou non. N'avancer que quand tu as toujours un pied sur la terre ferme, sinon tu te noies, car les combinaisons d'erreur à chaque ligne sont redoutables !

    bon, maintenant, faut que tu termines.
    Le mieux, c'est d'appliquer les 2 conseils de Jreaux, vu que tu dis que tu l'as fait... et que tu nous montres un code qui ne les a pas faits, les changements !
    Relis le message de Jreaux et applique les modifs, c'est du copié-collé !

    https://www.developpez.net/forums/d1.../#post10179057

    Toi, tu as laissé extract et tu as laissé ta méthode maison dbFetchAssoc()
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  11. #31
    Invité
    Invité(e)
    Par défaut
    Bon.

    tes copies d'écran n'apportent rien.

    • Montre le message d'erreur COMPLET, avec : nom du fichier et numéro de ligne
    • REGARDE dans le fichier au numéro à la ligne indiquée ! (et/ou un peu au dessus)
    • Montre-nous le BOUT DE CODE concerné !


    D'autre part, on n'a pas une vision GLOBALE de ton code.
    C'est A TOI de nous montrer CE QUI EST UTILE ET NÉCESSAIRE.

  12. #32
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    452
    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 : 452
    Points : 66
    Points
    66
    Par défaut
    Bonjour.

    J'ai pu finalement modifier mon Code en remplaçant le $result .= en echo ' ... ' pour éliminer certaines erreurs qui s'affichaient sur la Page à l'image de l'erreur du répertoire (URL) qui s'affichait au bas de la Page.

    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
    <?php
    include("includes/connect_db.php");
    $errorMessage = '&nbsp;';
    echo ( !empty($errorMessage) )? $errorMessage : '';
    $result = '';
    if( !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);
     
    		echo '
    		<div id="errorCls" style="color:#FF0000 !important;font-size:14px;font-weight:bold;">'.$errorMessage.'</div>
    		<table width="100%" border="0" align="center" cellpadding="2" cellspacing="1" class="text">
    			<tr align="center" id="listTableHeader">
    				<td>User Name</td>
    				<td>Account No.</td>
    				<td>Balance</td>
    				<td width="120">Account Type</td>
    				<td width="80">Account status</td>
    				<td width="70">Statement</td>
    			</tr>
    			';
    		$i=0;
    		while( $row = $req->fetch(PDO::FETCH_ASSOC) )
    		{
    			extract($row);
    			$class = ($i%2)? 'row1' : 'row2';
    			$i += 1;
    			$atype = "";
    			if($type == "CA"){ $atype = "Checking Account";}
    			elseif($type == "SA") { $atype = "Saving Account";}
    			elseif($type == "FDA") { $atype = "Fixed deposit Account";}
     
    			echo '
    			<tr class="'.$class.'">
    				<td>'.$fname .' '.$lname.'</td>
    				<td><div align="center"><a href="'.WEB_ROOT.'/cheg/account/?view=detail&accId='.$acc_id.'" >'.$acc_no.'</a></div></td>
    				<td><div align="center">'.$balance.'</div></td>
    				<td width="120" align="center">'.$atype.'</td>
    				<td width="80" align="center"><a href="javascript:changeAccStatus('.$acc_id.','.$status.');" '.($status == "INACTIVE")?"Inactive":"Active".'></td>
    				<td width="70" align="center"><a href="javascript:viewAccountStatement('.$id.','.$acc_no.');">Statement</a></td>
    			</tr>
    			';
    		}
    		echo '
    			<tr>
    				<td colspan="5">&nbsp;</td>
    			</tr>
    			<tr>
    				<td colspan="5" align="right"></td>
    			</tr>
    		</table>
    		<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/>";
    	}
    }
    ?>
    Mais mon plus gros problème actuel est que les valeurs des variables de la Ligne 48 à la ligne 57 (précisément au niveau des <td> Ligne 50 à Ligne 55) de mon nouveau Code ci-dessus ne s'affichent pas et devraient normalement s'afficher comme valeur recherchés dans le Moteur de Recherche puisque l'idée est de rechercher un Numéro de Compte à partir du Moteur de Recherche qui doit retourner les informations Username, Account No, Balance, Account type, Account status, Statement correspondantes aux Numéro de Compte recherché si celui-ci est disponible dans la BDD sinon retourner la réponse négative.

    Mais mon Problème est que ces informations ne s'affichent pas et seule s'affichent les informations de la première balise <tr> (Ligne 28 - Ligne 35) qui sont comme les Titres des informations importantes (considérées comme sous-titres représentées par des variables de la Ligne 48 à la ligne 57 (précisément au niveau des <td> Ligne 50 à Ligne 55) de mon nouveau Code ci-dessus ne s'affichent pas et devraient normalement s'afficher comme valeur recherchés dans le Moteur de Recherche puisque l'idée est de rechercher un Numéro de Compte à partir du Moteur de Recherche).

    Nom : CAPTURE_D_ECRAN_ERREUR_CHEGBK.png
Affichages : 80
Taille : 18,7 Ko

    Veuillez m'aider à faire afficher ces informations svp.

  13. #33
    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 : 58
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Bon sang, on joue aux devinettes avec toi.
    Au lieu de nous dire "Mais quand j'enlève la ligne extract(), rien ne marche plus... comment faut-il nommer mes variables ?", tu rabâches, et nous remet tout ton code.
    quand tu es bloqué, dis-nous ce que tu as FAIT.
    Bref,

    Enlève la ligne extract($row).

    Et plus loin, remplace $fname par $row['fname'], puis $lname par $row['lname'] et dis-nous si ça fait apparaître tes variables.

    @jreaux : j'ai enfin compris pourquoi extract() est une horrible pratique : Ca rend les choses totalement incompréhensibles pour les débutants ! Les variables apparaissent par miracle sans qu'ils puissent comprendre pourquoi ni comment...
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  14. #34
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Dendrite Voir le message
    @jreaux : j'ai enfin compris pourquoi extract() est une horrible pratique...
    @Dendrite
    Oui, tu as tout compris.

    MAIS SURTOUT :

    1. on ne sait pas forcément QUELLES VARIABLES seront créées ! (pour peu qu'un malpoli y injecte des saletés dans le $_POST ou autre...)
    2. dans le cas d'une requête, pour peu qu'on ait écrit "SELECT *...", on se retrouvera aussi avec des variables dont on n'aura pas forcément besoin...
    3. Autre cas simple : il suffit qu'on ait une colonne 'result' en BDD pour écraser la variable $result !



    Bref : A BANNIR !
    Dernière modification par Invité ; 24/04/2018 à 14h21.

  15. #35
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    452
    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 : 452
    Points : 66
    Points
    66
    Par défaut
    Donc au finish, vous me conseillez quoi ???
    1 - Dois-je modifier la Requête SQL ????
    Si oui, comment ???

    2 - Dois-je nommer des variables lààà encore sachant que vous m'aviez demandé d'attribuer un $row aux différentes variables ???

    Je ne comprends plus rien.

  16. #36
    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 : 58
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Je t'ai dit quoi faire dans mon tout dernier message, il me semble. Tu ne l'as pas fait ? Je suis censée deviner ?

    Bonjour à tous et surtout à jreaux62.
    J'ai trouvé !
    Tu aimes les dalmatiens et tu n'aimes pas Fifi Brin D'acier.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  17. #37
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par cheboy Voir le message
    Je ne comprends plus rien.
    Ça, je veux bien te croire...

    Tu n'as fait AUCUNE des modifications qu'on t'a montrées... et expliquées.

    MON CONSEIL :

    Tu devrais lire quelques tutos et faire des exemples SIMPLES... (select, insert,...)
    Tu as besoin de maitriser la syntaxe.

    Bref : si tu ne comprends pas les BASES, tu ne comprendras pas non plus nos explications.
    Dernière modification par Invité ; 24/04/2018 à 14h13.

  18. #38
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    452
    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 : 452
    Points : 66
    Points
    66
    Par défaut
    J'ai modifier le code comme conseillé par Dendrite en enlevant la ligne extract($row) et en remplaçant les variables par $row['fname'] (Ligne 42 à la Ligne 54). Mais donne toujours la même c'est-à-dire que rien ne s'affiche comme valeur des Variable:

    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
    <?php
    include("includes/connect_db.php");
    $errorMessage = '&nbsp;';
    echo ( !empty($errorMessage) )? $errorMessage : '';
    $result = '';
    if( !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);
     
    		echo '
    		<div id="errorCls" style="color:#FF0000 !important;font-size:14px;font-weight:bold;">'.$errorMessage.'</div>
    		<table width="100%" border="0" align="center" cellpadding="2" cellspacing="1" class="text">
    			<tr align="center" id="listTableHeader">
    				<td>User Name</td>
    				<td>Account No.</td>
    				<td>Balance</td>
    				<td width="120">Account Type</td>
    				<td width="80">Account status</td>
    				<td width="70">Statement</td>
    			</tr>
    			';
    		$i=0;
    		while( $row = $req->fetch(PDO::FETCH_ASSOC) )
    		{
    			$class = ($i%2)? 'row1' : 'row2';
    			$i += 1;
    			$row['atype'] = "";
    			if($row['type'] == "CA"){ $atype = "Checking Account";}
    			elseif($row['type'] == "SA") { $atype = "Saving Account";}
    			elseif($row['type'] == "FDA") { $atype = "Fixed deposit Account";}
     
    			echo '
    			<tr class="'.$class.'">
    				<td>'.$row['fname'] .' '.$row['lname'].'</td>
    				<td><div align="center"><a href="'.WEB_ROOT.'/cheg/account/?view=detail&accId='.$row['acc_id'].'" >'.$row['acc_no'].'</a></div></td>
    				<td><div align="center">'.$row['balance'].'</div></td>
    				<td width="120" align="center">'.$row['atype'].'</td>
    				<td width="80" align="center"><a href="javascript:changeAccStatus('.$row['acc_id'].','.$row['status'].');" '.($row['status'] == "INACTIVE")?"Inactive":"Active".'></td>
    				<td width="70" align="center"><a href="javascript:viewAccountStatement('.$row['id'].','.$row['acc_no'].');">Statement</a></td>
    			</tr>
    			';
    		}
    		echo '
    			<tr>
    				<td colspan="5">&nbsp;</td>
    			</tr>
    			<tr>
    				<td colspan="5" align="right"></td>
    			</tr>
    		</table>
    		<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/>";
    	}
    }
    ?>
    Où se trouve le Bug, je ne sais plus. Aidez-moi svp.

  19. #39
    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 : 58
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Quelle valeur saisis-tu dans ton formulaire (moteur de recherche) et qui renvoie de façon certaine une valeur de ta base ? Donne un exemple qui retourne minimum 2 enregistrements dans ton PHPmyadmin, pour tester.

    Tu ne fais pas ce qu'on te demande ! C'est fatigant à la fin.
    On ne t'a pas dit de mettre $row sur $atype !
    Tu es trop perdu... Tu changes les trucs au pif. tu ne sais pas ce que tu fais ni pourquoi tu le fais.
    ACTIVE tes messages d'erreur.
    Bref, regarde le 1er message de ma signature.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $atype= "";
    			if($row['type'] == "CA"){ $atype = "Checking Account";}
    			elseif($row['type'] == "SA") { $atype = "Saving Account";}
    			elseif($row['type'] == "FDA") { $atype = "Fixed deposit Account";}
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  20. #40
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    452
    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 : 452
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par Dendrite Voir le message
    Quelle valeur saisis-tu dans ton formulaire (moteur de recherche) et qui renvoie de façon certaine une valeur de ta base ? Donne un exemple qui retourne minimum 2 enregistrements dans ton PHPmyadmin, pour tester.
    Citation Envoyé par Dendrite Voir le message
    Quelle valeur saisis-tu dans ton formulaire (moteur de recherche) et qui renvoie de façon certaine une valeur de ta base ? Donne un exemple qui retourne minimum 2 enregistrements dans ton PHPmyadmin, pour tester.
    La valeur que je saisis dans le Moteur de Recherche et qui est disponible dans la Base de données est celle du a.acc_no qui est appelée par la requête SELECT (Ligne 10 du Code) de la variable $sql_search et représentée par un Numéro de compte (bien disponible dans la BDD) : 1255050095

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