Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/05/2011, 09h08   #1
Invité de passage
 
Kurios ETHER
Inscription : septembre 2010
Messages : 4
Détails du profil
Informations personnelles :
Nom : Kurios ETHER

Informations forums :
Inscription : septembre 2010
Messages : 4
Points : 3
Points : 3
Par défaut Résultat d'une requête préparée dans tableau html

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 :
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 :
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 :
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 :
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 :
if($result = $link->query($sql))
vu que j'ai déjà exécuté la requête !!!

Merci d'avance pour vos conseils avisés
Ether.Kurios est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 12h26   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
Tu ne devrais pas créer une table HTML directement à partir d'une ressource MySQL mais à partir de ses données, justement pour t'éviter ce genre de problème.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 13h14   #3
Invité de passage
 
Kurios ETHER
Inscription : septembre 2010
Messages : 4
Détails du profil
Informations personnelles :
Nom : Kurios ETHER

Informations forums :
Inscription : septembre 2010
Messages : 4
Points : 3
Points : 3
Par défaut [RESOLU]

J'ai résolu mon soucis de la manière suivante :
Concaténation de ma variable dans ma requête SQL :
Code :
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
<?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');
 
/* On récupère le nom de l'utilisateur */
$utilisateur_BON = $_SESSION['id_UTILISATEUR'];
 
/* Création de la requête SQL */
$sql = "SELECT * FROM `bon` where utilisateur_BON='$utilisateur_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();
?>
Si ça peut servir à d'autres...
Ether.Kurios est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h37.


 
 
 
 
Partenaires

Hébergement Web