Bonjour,
J'utilise une fonction qui renvoi le résultat d'une requête SELECT sous forme d'un tableau HTML, avec une requête en dur pas de soucis ma fonction fonctionne à merveille, mais j'ai maintenant besoin de l'utiliser avec une requête préparée et c'est là que les choses se corsent.
Je voudrait pouvoir appeler la même fonction show_table si possible, je cherche juste comment lui transmettre une requête préparée
Voici mon code fonctionnel (MARCHE PARFAITEMENT BIEN) :
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
<?php
/* ------------------------------ */
/* Affichage des Bons de commande */
/* ------------------------------ */
 
/* Inclusion des fonctions */
include_once('include/fonction.inc.php');
 
/* Connexion à la base de données */
include_once('include/connexion.inc.php');
 
/* Création de la requête SQL */
$sql = 'SELECT * FROM `bon` ORDER BY id_BON';
 
/* Affichage du nombre d'enregistrement */
if($result = $link->query($sql)){
	$n = $result->num_rows;
	printf("<p>Nombre d'enregistrements : %d</p>",$n);
	$result->close();
}
 
/* Affiche le résultat d'une requête sous forme de tableau HTML */
if($result = $link->query($sql)){
	show_table($result);
	$result->close();
}
 
/* Ferme la connexion à la base de donné */
$link->close();
?>
Voici ma fonction :
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
<?php
/* Fonction qui affiche le résultat d'une requête sous forme de tableau HTML */
function show_table($result){
	if(!$result) {
		echo"<p>Résultat de requête invalide.</p>\n";
		return;
	}
if($result->num_rows>0 && $result->field_count>0){
	echo "<table>";
	/* Description de la colonne */
	echo "<tr>";
	foreach($result->fetch_fields() as $meta)
		printf("<th>%s</th>", htmlspecialchars($meta->name));
	echo "</tr>\n";
 
	/* Contenu du tableau */
	while($row = $result->fetch_row()){
	echo "<tr>";
	foreach($row as $col)
		printf("<td>%s</td>", htmlspecialchars($col));
	echo "</tr>\n";
	}
	echo "</table>\n";
	}
}?>
J'ai cherché à modifier le code de ma page de la manière suivante :
Concaténation d'une variable dans ma requête SQL :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
/* Création de la requête SQL */
$sql = "'SELECT * FROM `bon` WHERE utilisateur_BON=`".$_SESSION['id_UTILISATEUR']."`'";
Mais sans succès la requête ne me renvoie rien.
et aussi avec 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
<?php
/* ------------------------------ */
/* Afficahge des Bons de commande */
/* ------------------------------ */
 
/* Inclusion des fonctions */
include_once('include/fonction.inc.php');
 
/* Connexion à la base de données */
include_once('include/connexion.inc.php');
 
/* Création de la requête */
$sql = 'select * FROM `bon` where utilisateur_BON=?';
 
/* Préparation de la requête */
$rqp = mysqli_prepare($link, $sql);
 
/* Affectation des paramètres */
mysqli_stmt_bind_param($rqp,"s", $_SESSION['id_UTILISATEUR']);
 
/* Execution de la requête */
mysqli_stmt_execute($rqp); [???] ?>
Mais là je ne sais pas comment adapter mon code après car je ne peux plus utiliser
Code : Sélectionner tout - Visualiser dans une fenêtre à part
if($result = $link->query($sql))
vu que j'ai déjà exécuté la requête !!!

Merci d'avance pour vos conseils avisés