Simplifier une requête et affichage dans un tableau

Eléphant du PHP | 106 Messages

28 avr. 2012, 13:58

Bonjour,

Est-il possible de simplifier une requête et un affichage

Voici mon code ci-dessous qui fonctionne très bien mais cependant très long pour les mises à jour ect... et en + il affiche pas ttes les données de ma table :(

Est-il possible de remplacer ma requête pour afficher tt les champs de ma table avec tt les résultats ect..

sans
$select = 'SELECT prenom,nom,titre,phone,email,no,cp FROM tfi2003_contacts ';
à chaque fois ajouter enlever ect.. merci pour votre aide


<html>
<body>
<?php

$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'import';


$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());


$select = 'SELECT prenom,nom,titre,phone,email,no,cp FROM tfi2003_contacts ';
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);


// si on a récupéré un résultat on l'affiche.
if($total) {
    // début du tableau
    echo '<table bgcolor="#FFFFFF">'."\n";
        // première ligne on affiche les titres prénom et surnom dans 2 colonnes
        echo '<tr>';
        echo '<td bgcolor="#669999"><b><u>Prénom</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>nom</u></b></td>';
		echo '<td bgcolor="#669999"><b><u>titre</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>phone</u></b></td>';
		echo '<td bgcolor="#669999"><b><u>email</u></b></td>';
		echo '<td bgcolor="#669999"><b><u>no</u></b></td>';
		echo '<td bgcolor="#669999"><b><u>cp</u></b></td>';
		echo '</tr>'."\n";
    // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.    
    while($row = mysql_fetch_array($result)) {
        echo '<tr>';
        echo '<td bgcolor="#CCCCCC">'.$row['prenom'].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row['nom'].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row['titre'].'</td>';
		echo '<td bgcolor="#CCCCCC">'.$row['phone'].'</td>';
		echo '<td bgcolor="#CCCCCC">'.$row['email'].'</td>';
		echo '<td bgcolor="#CCCCCC">'.$row['no'].'</td>';
		echo '<td bgcolor="#CCCCCC">'.$row['cp'].'</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);

?>
</body>
</html>    


Mammouth du PHP | 2278 Messages

29 avr. 2012, 09:12

À vue de nez, si tu fais un die() quand la requete échoue, il est inutile de s'embêter avec total.
A)
$result = msql_query () or die()
// si on passe dans die, le script s'arrête, je suppose?

B)
total = mysql_num_rows(result)
if ($total)
1) choque ma conceprion : en effet tu traites un entier comme un booléen
2) Si tu y tiens vraiment
if ($result)
encore que si on arrive-là c'est que $result est true. C'est le rôle de die() qui est conceptuellement un goto. On pourrait en effet écrire:
$result = mysql_query();
if ($result)
{
affichage....
}
else
{
explications sur l'absence d'affichage
}
C) Quel est le problème exact?
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 106 Messages

29 avr. 2012, 15:47

le code que j'ai mis fonctionne très bien encore une fois pour être plus précis je souhaite simplement simplifier la reqête sql :
$select = 'SELECT [b][b]prenom,nom,titre,phone,email,no,cp, ect.....[/b][/b] FROM tfi2003_contacts ';
car j'ai 18 champs je souhaite simplement afficher directement tte la table sa à chaque fois ;


avoir un code très long pour l'affichage est-ce possible de simplifier ?
if($total) {
    // début du tableau
    echo '<table bgcolor="#FFFFFF">'."\n";
        // première ligne on affiche les titres prénom et surnom dans 2 colonnes
        echo '<tr>';
        echo '<td bgcolor="#669999"><b><u>Prénom</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>nom</u></b></td>';
                echo '<td bgcolor="#669999"><b><u>titre</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>phone</u></b></td>';
                echo '<td bgcolor="#669999"><b><u>email</u></b></td>';
                echo '<td bgcolor="#669999"><b><u>no</u></b></td>';
                echo '<td bgcolor="#669999"><b><u>cp</u></b></td>';
                echo '</tr>'."\n";
    // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.    
    while($row = mysql_fetch_array($result)) {
        echo '<tr>';
        echo '<td bgcolor="#CCCCCC">'.$row['prenom'].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row['nom'].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row['titre'].'</td>';
                echo '<td bgcolor="#CCCCCC">'.$row['phone'].'</td>';
                echo '<td bgcolor="#CCCCCC">'.$row['email'].'</td>';
                echo '<td bgcolor="#CCCCCC">'.$row['no'].'</td>';
                echo '<td bgcolor="#CCCCCC">'.$row['cp'].'</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);

?>
</body>
</html>    

Eléphant du PHP | 428 Messages

30 avr. 2012, 14:33

Pour faire simple :
$select = 'SELECT * FROM tfi2003_contacts ';
Sinon, pour le reste y a pas grand chose à faire (à moins que j'ai mal compris) ?

ViPHP
xTG
ViPHP | 7331 Messages

30 avr. 2012, 14:58

Pour le bgcolor qui se répète tu peux regarder du côté de CSS et faire une class pour les TDs de ton TABLE.

Eléphant du PHP | 106 Messages

30 avr. 2012, 20:23

Oui la requête c bon c pour l'affichage comment faire un simple tableau qui affiche les resultats de la table
 Pour le bgcolor qui se répète tu peux regarder du côté de CSS et faire une class pour les TDs de ton TABLE.
ne sais pas faire qq un peut-il m'aider ?

ViPHP
xTG
ViPHP | 7331 Messages

30 avr. 2012, 23:20