|
|
|
|
txiki, le vendredi 23 février 2007 à 20:38:34
<?
// ==================================================
// On se connecte et on choisi la base de données
// ==================================================
mysql_pconnect("localhost","txiki","txikito") or die ("Impossible de se connecter à MySQL");
mysql_select_db("test") or die("Impossible de sélectionner la base de données");
//=====================================================================================
// requête SQL qui affiche les infos de la fiche correspondante au lien cliqué
//=====================================================================================
$link = '$link';
$select = "select * FROM test";
$result = mysql_query($select) or die ('Erreur : '.mysql_error() );
// ===========================================
// récupération des variables a afficher
// ===========================================
$_POST = '$id';
$_POST = '$groupe';
$_POST = '$categorie';
$_POST = '$source';
$_POST = '$editeur';
$_POST = '$nom';
$_POST = 'ligne_produit';
$_POST = 'socle';
$_POST = 'reference_DSI';
$_POST = 'standard_DSI';
$_POST = 'type_licence';
$_POST = 'version_standard';
$_POST = 'compatibilite_XP';
$_POST = 'versions_exploitation';
$_POST = 'type_deploiement';
$_POST = 'type_installation';
$_POST = 'domaine';
$_POST = 'fonctionnalite';
$_POST = 'description';
$_POST = 'instructions';
$_POST = 'pre_requis';
$_POST = 'referent_metier';
$_POST = 'commentaires';
// ===================================================
// Affichage de la fiche dans un tablea&u dynamique
// ===================================================
echo "<table width='80%' bgcolor='#FFFFFF' border='1' cellspacing='0' cellpadding='8' align='center'>\n";
// première ligne on affiche le titre "Fiche logicielle" dans 2 colonnes fusionnées
echo "<tr text-align='center' padding='3px' class='blanc'>";
echo "<td colspan='2' bgcolor='#669999'><h2> Fiche logicielle </h2></td>";
echo "</tr>\n";
// lecture et affichage des résultats sur 2 colonnes, 1 résultat par lot de 3 lignes.
echo "<tr bgcolor='#FF9900' text-align='center'>";
echo "<td colspan='2'> N° d'enregistrement: <strong>" .$row = 'id'."</strong></td>"; // première ligne fusionnée pour le n° d'enregistrement (id)
echo "<tr>";
echo "<td bgcolor='#F0F0F0'>" .$row = 'groupe'."</td>"; // affiche le groupe du logiciel
echo "<td bgcolor='#F0F0F0'>" .$row = 'categorie'."</td>"; // affiche la catégorie du logiciel
echo "</tr>\n";
echo "<tr>";
echo "<td bgcolor='#F0F0F0'>" .$row = 'source'."</td>"; // affiche la source du logiciel
echo "<td bgcolor='#F0F0F0'>" .$row = 'editeur'."</td>"; // affiche l'éditeur du logiciel
echo "</tr>\n";
echo "<td bgcolor='#F0F0F0'>" .$row = 'nom'."</td>"; // affiche le nom du logiciel
echo "<td bgcolor='#F0F0F0'>" .$row = 'ligne_produit'."</td>"; // affiche le nom (interne) de la ligne produit du logiciel
echo "</tr>\n";
echo "<td bgcolor='#F0F0F0'>" .$row = 'socle'."</td>"; // affiche le socle nécessaire pour son installation
echo "<td bgcolor='#F0F0F0'>" .$row = 'reference_DSI'."</td>"; // affiche la référence DSI (cat, ref etc...)
echo "</tr>\n";
echo "<td bgcolor='#F0F0F0'>" .$row = 'standard_DSI'."</td>"; // affiche le standard de la DSI
echo "<td bgcolor='#F0F0F0'>" .$row = 'type_licence'."</td>"; // affiche le type de licence (flottante, etc...)
echo "</tr>\n";
echo "<td bgcolor='#F0F0F0'>" .$row = 'version_standard'."</td>"; // affiche la version utilisée en standard à TM
echo "<td bgcolor='#F0F0F0'>" .$row = 'compatibilite_XP'."</td>"; // affiche la compatibilité avec XP ou pas
echo "</tr>\n";
echo "<td bgcolor='#F0F0F0'>" .$row = 'versions_exploitation'."</td>"; // affiche le nombre de versions en exploitation
echo "<td bgcolor='#F0F0F0'>" .$row = 'type_deploiement'."</td>"; // affiche le type de déploiement (script, manuelle etc...)
echo "</tr>\n";
echo "<td bgcolor='#F0F0F0'>" .$row = 'type_installation'."</td>"; // affiche le type d'installation (locale, réseau etc...)
echo "<td bgcolor='#F0F0F0'>" .$row = 'domaine'."</td>"; // affiche le domaine d'application
echo "</tr>\n";
echo "<td bgcolor='#F0F0F0'>" .$row = 'fonctionnalite'."</td>"; // affiche une courte description de sa fonctionnalité
echo "<td bgcolor='#F0F0F0'>" .$row = 'description'."</td>"; // affiche une description plus détaillée
echo "</tr>\n";
echo "<td bgcolor='#F0F0F0'>" .$row = 'instructions'."</td>"; // affiche les instructions particulières s'il y en a
echo "<td bgcolor='#F0F0F0'>" .$row = 'pre-requis'."</td>"; // affiche les pré-requis nécessaires a son installation
echo "</tr>\n";
echo "<td bgcolor='#F0F0F0'>" .$row = 'referent_metier'."</td>"; // affiche le référent métier de l'application
echo "<td bgcolor='#F0F0F0'>" .$row = 'commentaires'."</td>"; // affiche des commentaires s'il y en a
echo "</tr>\n";
echo "</table>\n";
// fin du tableau.
mysql_close();
?>
Le bonheur est la seule chose que l'on peut donner sans l'avoir.Configuration: Windows XP Firefox 1.5.0.9
je n'ai pas vraiment compris l'utilité de certaines parties de ton code mais dis moi si j'ai bon :
tu a sune page qui affiche un tablaeu contenant plusieurs produits.. tu clic sur un produit et la tu veux afficher des infos détaillés. OK j'imagine que dans ta BDD tu as une table avec pour champs : "id", "nom".. je ne connais pas la sturcture de ta base don je l'invente.. pour ta page de liste des produits, je mettrai une requete comme celle qui suit $requete=mysql_query("SELECT * FROM test"); / while($infos= @mysql_fetch_array($requete)) { echo '<a href="tapage.php?id='.$infos["id"].'">Fiche détaillée</a>'; } apres pour ton tableau ou tu affiche les infos detaillées, je vois pas l'utilité de la partie " récupération des variables a afficher" en effet : que viennent faire les POSt dans le script? tu recupere les infos sur le produit particulier avec
$requete=mysql_query("SELECT * FROM test WHERE id=$_GET['id']");
$infos_produit= mysql_fetch_row($requete);
donc tu te retrouve avec un tableau contenant les infos sur le produit ayant pour id celui recuperer dans le lien : tu recupere ses infos en faisant : $infos_produit["nomduchampqui t'interesse"] : exemple $infos_produit["Prix"] apres, tu remplace toutes tes variables du tableau (comme $row = 'id') par $infos_tableau["nomduchampquit'interesse"] je suis sur de ne pas avoir été assez clair donc si tu veux plus d'infos ou que je te modifie ton code pour qu'il tourne, n'hesite pas a demander |
Salut Thecanardwc44
TOut d'abord un très merci pour ta réponse. Je l'ai tellement modifié , tripatouillé que je ne sais plus où j'habite du coup. Et je m'arrache les cheveux.... grrrrrr ! Tu peux voir le comportement sur: http://txiki.free.fr (mais j'y ai ajouter des choses comme une page d'authentification pour effectuer des modifs par certaines personnes uniquement). cette page qui affiche un premier tableau fonctionne très bien donc on n'y touche pas (même si c'est pas optimisé ?") <?
//==================================================================================
// Affichage du catalogue par pages de 10 produits
// includes du fichier fonctions séparé pour les vérifs des limites et Nb de pages
//==================================================================================
require 'fonctions.php';
//=========================================
// information pour la connection à le DB
//=========================================
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'test';
//=========================================
// initialisation des variables
//=========================================
$nombre = 10; // on va afficher 10 résultats par page.
// si la limite a été passée par un lien, on la prend en compte.
// Sinon, si elle a été passée par le bouton, on la prend en compte.
// Dans tous les autres cas, elle vaut 0.
if (isset($_GET["limite"]))
$limite = $_GET["limite"];
elseif (isset($_POST["limite"]))
$limite = $_POST["limite"];
else
$limite = 0;
$path_parts = pathinfo($_SERVER['PHP_SELF']); // on cherche le nom de la page.
$page = $path_parts["basename"];
//======================
// connection à la DB
//======================
$link = mysql_pconnect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); // connection à la base
mysql_select_db($db) or die ('Impossible de se connecter à la base'); // sélection de la table
//==========================================================================
// requête SQL qui compte le nombre total d'enregistrements dans la table.
//==========================================================================
$select = 'SELECT count(id) FROM test';
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$row = mysql_fetch_row($result);
$total = $row[0];
//===================================================
// vérifier la validité de notre variable $limite;
//===================================================
$verifLimite = verifLimite($limite,$total,$nombre);
// si la limite passée n'est pas valide on la remet à zéro
if(!$verifLimite) {
$limite = 0;
}
//=====================================================================================
// requête SQL qui ne prend que le nombre d'enregistrement necessaire à l'affichage.
//=====================================================================================
$select = 'select id,nom,editeur FROM test ORDER BY nom ASC limit '.$limite.','.$nombre;
$result = mysql_query($select) or die ('Erreur : '.mysql_error() );
//=============================================
// si on a récupéré un resultat on l'affiche.
//=============================================
if($total) {
echo "<table width='65%' bgcolor='#FFFFFF' border='1' cellspacing='0' cellpadding='8' align='center'>\n";
// première ligne on affiche les titres Accès et Logiciels dans 2 colonnes
echo "<tr text-align='center' padding='3px' class='blanc'>";
echo "<td bgcolor='#B1C3D9'><h2> Action </h2></td>";
echo "<td bgcolor='#B1C3D9'><h2> Logiciels </h2></td>";
echo "</tr>\n";
// lecture et affichage des résultats sur 2 colonnes, 1 résultat par lot de 3 lignes.
while($row = mysql_fetch_array($result)) {
echo "<tr>";
echo "<td rowspan='2' bgcolor='#FF9900' text-align='center' width='20%'>"; // largeur de la première colonne (fusion de 3 lignes)
echo "<p><a href='fiche_dyn.php?id=['id']'> Fiche détaillée </a><br>"; // <br> pour 1 saut moins important entre les 2 liens
echo "<a href='authentification.htm?id=['id']'> Modifier </a><br>"; // <br> pour 1 saut moins important entre les 2 liens
echo "<a href='fiche.php?id=['id']'> supprimer </a></p>";
echo "</td>";
echo "<td bgcolor='#F0F0F0'>Nom du logiciel: <strong>" .$row['nom']."</strong></td>"; // affiche le nom du logiciel (1ere cellule)
echo "</td>";
echo "</tr>\n";
echo "<tr>";
echo "<td bgcolor='#F0F0F0'>Editeur du logiciel: <strong>" .$row['editeur']."</strong></td>"; // affiche l'éditeur du logiciel (la 2eme cellule)
echo "</td>";
echo "</tr>\n";
}
echo "</table>\n";
// fin du tableau.
}
else echo "Pas d\'enregistrements dans cette table";
// on libère le résultat
mysql_free_result($result);
//==========================================================================
// si le nombre d'enregistrement à afficher est plus grand que $nombre
//==========================================================================
if($total > $nombre) {
affichePages($nombre,$page,$total); // affichage des liens vers les pages
displayNextPreviousButtons($limite,$total,$nombre,$page); // affichage des boutons
}
mysql_close();
?>
Ensuite, je regarde ce que tu me préconise. Mais j'aurai sans doute besoin d'un sérieux coup de main (je débute en PHP alors faut etre tolérant en pédagogue (plein de // comments...... ne seraient pas inutiles) ;-)) Merci encore. Le bonheur est la seule chose que l'on peut donner sans l'avoir.
|
bonjour
chose promise..
<?
//==================================================================================
// Affichage du catalogue par pages de 10 produits
// includes du fichier fonctions séparé pour les vérifs des limites et Nb de pages
//==================================================================================
require 'fonctions.php';
//=========================================
// information pour la connection à le DB
//=========================================
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'test';
//=========================================
// initialisation des variables
//=========================================
$nombre = 10; // on va afficher 10 résultats par page.
// si la limite a été passée par un lien, on la prend en compte.
// Sinon, si elle a été passée par le bouton, on la prend en compte.
// Dans tous les autres cas, elle vaut 0.
if (isset($_GET["limite"]))
$limite = $_GET["limite"];
elseif (isset($_POST["limite"]))
$limite = $_POST["limite"];
else
$limite = 0;
$path_parts = pathinfo($_SERVER['PHP_SELF']); // on cherche le nom de la page.
$page = $path_parts["basename"];
//======================
// connection à la DB
//======================
$link = mysql_pconnect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); // connection à la base
mysql_select_db($db) or die ('Impossible de se connecter à la base'); // sélection de la table
//==========================================================================
// requête SQL qui compte le nombre total d'enregistrements dans la table.
//==========================================================================
$select = 'SELECT count(id) FROM test';
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$row = mysql_fetch_row($result);
$total = $row[0];
//===================================================
// vérifier la validité de notre variable $limite;
//===================================================
$verifLimite = verifLimite($limite,$total,$nombre);
// si la limite passée n'est pas valide on la remet à zéro
if(!$verifLimite) {
$limite = 0;
}
//=====================================================================================
// requête SQL qui ne prend que le nombre d'enregistrement necessaire à l'affichage.
//=====================================================================================
$select = 'select id,nom,editeur FROM test ORDER BY nom ASC limit '.$limite.','.$nombre;
$result = mysql_query($select) or die ('Erreur : '.mysql_error() );
//=============================================
// si on a récupéré un resultat on l'affiche.
//=============================================
if($total) {
echo "<table width='65%' bgcolor='#FFFFFF' border='1' cellspacing='0' cellpadding='8' align='center'>\n";
// première ligne on affiche les titres Accès et Logiciels dans 2 colonnes
echo "<tr text-align='center' padding='3px' class='blanc'>";
echo "<td bgcolor='#B1C3D9'><h2> Action </h2></td>";
echo "<td bgcolor='#B1C3D9'><h2> Logiciels </h2></td>";
echo "</tr>\n";
// lecture et affichage des résultats sur 2 colonnes, 1 résultat par lot de 3 lignes.
while($row = mysql_fetch_array($result)) {
echo "<tr>";
echo "<td rowspan='2' bgcolor='#FF9900' text-align='center' width='20%'>"; // largeur de la première colonne (fusion de 3 lignes)
echo "<p><a href='fiche_dyn.php?id=".$row['id']."'> Fiche détaillée </a><br>"; // <br> pour 1 saut moins important entre les 2 liens
echo "<a href='authentification.htm?id=".$row['id']."'> Modifier </a><br>"; // <br> pour 1 saut moins important entre les 2 liens
echo "<a href='fiche.php?id=".$row['id']."'> supprimer </a></p>";
echo "</td>";
echo "<td bgcolor='#F0F0F0'>Nom du logiciel: <strong>" .$row['nom']."</strong></td>"; // affiche le nom du logiciel (1ere cellule)
echo "</td>";
echo "</tr>\n";
echo "<tr>";
echo "<td bgcolor='#F0F0F0'>Editeur du logiciel: <strong>" .$row['editeur']."</strong></td>"; // affiche l'éditeur du logiciel (la 2eme cellule)
echo "</td>";
echo "</tr>\n";
}
echo "</table>\n";
// fin du tableau.
}
else echo "Pas d\'enregistrements dans cette table";
// on libère le résultat
mysql_free_result($result);
//==========================================================================
// si le nombre d'enregistrement à afficher est plus grand que $nombre
//==========================================================================
if($total > $nombre) {
affichePages($nombre,$page,$total); // affichage des liens vers les pages
displayNextPreviousButtons($limite,$total,$nombre,$page); // affichage des boutons
}
mysql_close();
?>
je n'ai pas fait grand chose.. la partie qui posait probleme echo "<p><a href='fiche_dyn.php?id=['id']'> Fiche détaillée </a><br>"; // <br> pour 1 saut moins important entre les 2 liens echo "<a href='authentification.htm?id=['id']'> Modifier </a><br>"; // <br> pour 1 saut moins important entre les 2 liens echo "<a href='fiche.php?id=['id']'> supprimer </a></p>"; je l'ai remplacée par echo "<p><a href='fiche_dyn.php?id=".$row['id']."'> Fiche détaillée </a><br>"; // <br> pour 1 saut moins important entre les 2 liens echo "<a href='authentification.htm?id=".$row['id']."'> Modifier </a><br>"; // <br> pour 1 saut moins important entre les 2 liens echo "<a href='fiche.php?id=".$row['id']."'> supprimer </a></p>"; Pour les commentaires : $row['id'] correspond a la colonne id de ta requete et j'ai concaténé le tout (grace au ".") pour eviter les conflits avec les apostrophes.. J'ai deux petites remarques : ton lien "modifier" pointe sur un fichier htm.. tu ne pourra donc pas te servir de la variable (surement une faute de frappe) deuxieme remarque : ca serai bien de rendre ton code conforme au recommandations W3C... ----------------------------- Page information détaillées ------------------ Maintenant, c'est le tableau détaillé, j'ai commenté les changements :
<?
// ==================================================
// On recupere la variable "id" correspondant au logiciel choisi
// ==================================================
$id=$_GET["id"]; // La manipulation de $id est plus simple que celle de $_POST["id"]
// ==================================================
// On se connecte et on choisi la base de données
// ==================================================
mysql_pconnect("localhost","txiki","txikito") or die ("Impossible de se connecter à MySQL");
mysql_select_db("test") or die("Impossible de sélectionner la base de données");
//=====================================================================================
// requête SQL qui affiche les infos de la fiche correspondante au lien cliqué
//=====================================================================================
$link = '$link';
$select = "select * FROM test WHERE id='$id'"; // On selectionne seulement la ligne qui correspond au logiciel choisi
$result = mysql_query($select) or die ('Erreur : '.mysql_error() );
$row= mysql_fetch_row($result); // mysql_fetch_row genere un tableau correspondant a la ligne selectionnée de la BDD
// Les informations sont accessibles par $row["id"], $row["nom"], $row["source"]...
// ===================================================
// Affichage de la fiche dans un tablea&u dynamique
// ===================================================
echo "<table width='80%' bgcolor='#FFFFFF' border='1' cellspacing='0' cellpadding='8' align='center'>\n";
// première ligne on affiche le titre "Fiche logicielle" dans 2 colonnes fusionnées
echo "<tr text-align='center' padding='3px' class='blanc'>";
echo "<td colspan='2' bgcolor='#669999'><h2> Fiche logicielle </h2></td>";
echo "</tr>\n";
// lecture et affichage des résultats sur 2 colonnes, 1 résultat par lot de 3 lignes.
echo "<tr bgcolor='#FF9900' text-align='center'>";
echo "<td colspan='2'> N° d'enregistrement: <strong>" .$row['id']."</strong></td>"; // première ligne fusionnée pour le n° d'enregistrement (id)
echo "<tr>";
echo "<td bgcolor='#F0F0F0'>" .$row['groupe']."</td>"; // affiche le groupe du logiciel
echo "<td bgcolor='#F0F0F0'>" .$row['categorie']."</td>"; // affiche la catégorie du logiciel
echo "</tr>\n";
echo "<tr>";
echo "<td bgcolor='#F0F0F0'>" .$row['source']."</td>"; // affiche la source du logiciel
echo "<td bgcolor='#F0F0F0'>" .$row['editeur']."</td>"; // affiche l'éditeur du logiciel
echo "</tr>\n";
echo "<td bgcolor='#F0F0F0'>" .$row['nom']."</td>"; // affiche le nom du logiciel
echo "<td bgcolor='#F0F0F0'>" .$row['ligne_produit']."</td>"; // affiche le nom (interne) de la ligne produit du logiciel
echo "</tr>\n";
echo "<td bgcolor='#F0F0F0'>" .$row['socle']."</td>"; // affiche le socle nécessaire pour son installation
echo "<td bgcolor='#F0F0F0'>" .$row['reference_DSI']."</td>"; // affiche la référence DSI (cat, ref etc...)
echo "</tr>\n";
echo "<td bgcolor='#F0F0F0'>" .$row['standard_DSI']."</td>"; // affiche le standard de la DSI
echo "<td bgcolor='#F0F0F0'>" .$row['type_licence']."</td>"; // affiche le type de licence (flottante, etc...)
echo "</tr>\n";
echo "<td bgcolor='#F0F0F0'>" .$row['version_standard']."</td>"; // affiche la version utilisée en standard à TM
echo "<td bgcolor='#F0F0F0'>" .$row['compatibilite_XP']."</td>"; // affiche la compatibilité avec XP ou pas
echo "</tr>\n";
echo "<td bgcolor='#F0F0F0'>" .$row['versions_exploitation']."</td>"; // affiche le nombre de versions en exploitation
echo "<td bgcolor='#F0F0F0'>" .$row['type_deploiement']."</td>"; // affiche le type de déploiement (script, manuelle etc...)
echo "</tr>\n";
echo "<td bgcolor='#F0F0F0'>" .$row['type_installation']."</td>"; // affiche le type d'installation (locale, réseau etc...)
echo "<td bgcolor='#F0F0F0'>" .$row['domaine']."</td>"; // affiche le domaine d'application
echo "</tr>\n";
echo "<td bgcolor='#F0F0F0'>" .$row['fonctionnalite']."</td>"; // affiche une courte description de sa fonctionnalité
echo "<td bgcolor='#F0F0F0'>" .$row['description']."</td>"; // affiche une description plus détaillée
echo "</tr>\n";
echo "<td bgcolor='#F0F0F0'>" .$row['instructions']."</td>"; // affiche les instructions particulières s'il y en a
echo "<td bgcolor='#F0F0F0'>" .$row['pre-requis']."</td>"; // affiche les pré-requis nécessaires a son installation
echo "</tr>\n";
echo "<td bgcolor='#F0F0F0'>" .$row['referent_metier']."</td>"; // affiche le référent métier de l'application
echo "<td bgcolor='#F0F0F0'>" .$row['commentaires']."</td>"; // affiche des commentaires s'il y en a
echo "</tr>\n";
echo "</table>\n";
// fin du tableau.
mysql_close();
?>
Si tu as d'autres problemes, n'hesite pas à me contacter (en MP) PS : Je suis admiratif devant la qualité de la présentation/ les commentaires de ton code... |
Salut Thecanardwc44 et mille percis pour t'etre penché sur mon Pb.
Hélàs ! J'ai recopié tes 2 codes et voici ce que ça m'affiche: Notice: Undefined index: id in g:\sites web\txiki\fiche_dyn.php on line 42 Notice: Undefined index: groupe in g:\sites web\txiki\fiche_dyn.php on line 44 Notice: Undefined index: categorie in g:\sites web\txiki\fiche_dyn.php on line 45pour toutes les variables. et le tableau en dessous (dans le bon format (couleur de l'entête etc... mais toujours vide. En fait, je reviens au point de départ ! C'est a s'arracher les cheveux cette histoire. Pour ce qui est de la page modif, effectivement, j'ai fait un formulaire pour les ajouts éventuels (donc tous les champs sont libres et a renseigner pour ajouter un logiciel dans la BDD. J'ai pas modifié le lien. Mais le tableau a afficher doit etre un formulaire SAUF que les champs doivent etre rempli selon le lien cliqué pour pouvoir modifier un élément du tableau. Le Pb étant quand même que je voulais que celui qui fait une modif ou un ajout puisse voir ce qu'il a fait en affichant soit le premier tableau mais réduit a une lignesoit, une fiche comme le second tableau détaillé (celui qui s'affiche en cliquant sur le lien "Fiche détaillée"). J'ai bien le message correspondant (votre demande a bien été enregistrée) mais il ne montre rien et l'enregistrement est bien réalisé dans la base (vide puisque je ne rentre rien, juste valider) Donc, l'enregistrement est vide mais c'est normal. Bon, mais ça: on verra plus tard ! En tous cas, encore merci pour ta générosité ! Le bonheur est la seule chose que l'on peut donner sans l'avoir.
|