Page 1 sur 1

Calcul entre deux champs est-ce possible ? puis l'afficher

Posté : 27 avr. 2012, 15:33
par debutant10
Bonjour,

J'ai deux champs dans ma table "no" et "cp" Je souhaite faire une soustraction "cp" -"no" ---> dans un future champ qui se nommera calcul

par contre le champ calcul n'existe pas dans ma table à ce jour comment l'afficher avec la sous traction "cp" -"no" ?

comment faire ?

merci pour votre aide


Code : Tout sélectionner

<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>

Re: Calcul entre deux champs est-ce possible ? puis l'affich

Posté : 27 avr. 2012, 16:01
par Mazarini
select (cp - no) as calcul from XXXXXXX
Ca doit marcher ?

Re: Calcul entre deux champs est-ce possible ? puis l'affich

Posté : 27 avr. 2012, 17:22
par debutant10
ou dois-je l 'insérer dans mon code ?

Pour info je souhaite avoir le champ calcul est les résultats à l 'affichage merci



dois-je conserver mon code ou autre

merci de vos explications.

Re: Calcul entre deux champs est-ce possible ? puis l'affich

Posté : 27 avr. 2012, 17:26
par moogli
dans la requete SQL (et j'ai hésité avec un sigle en 3 lettres ^^).

l'alias indiqué (avec le mot as sert a nommer le résultat et tu l'affiche comme tu le souhaiteensuite.

SELECT prenom,nom,titre,phone,email,no,cp, (cp-no) as calcul FROM tfi2003_contacts

tu utilise calcul pour l'affichage (dans $row)

@+

Re: Calcul entre deux champs est-ce possible ? puis l'affich

Posté : 27 avr. 2012, 18:29
par debutant10
merci moogli trop fort ! sa fonctionne j'ai testé merci pour votre aide j'y vois plus clair.

Deux autres questions

1-/ Comment puis-je faire dans mon affichage une mise en forme conditionnelle ?

Exemple dans le calcul et au niveau de l'affichage tout les résultats compris entre 50 et 100 colorié la cellule du tableau en orange.

Merci pour votre aide

2-/ J'ai une liste déroulante en html pour déclencher 4 requêtes mais cela ne fonctionne pas je ne vois pas ou est l'erreur je n'arrive pas à lancer les requête ni à faire le lien entre le fichier Html et Php. Pouvez vous m'aider ?

Requête 1 : je voudrais sélectionner et afficher toute la table
$select = 'SELECT prenom,nom,titre,phone,email,no,cp FROM tfi2003_contacts ';
Requête 2 : tout les nom rempli et pas de phone c'est dire vide
Requête 3 : tout les email rempli
Requête 4 : tout les noms qui commence par la lettre D
mon code html liste déroulante :
<html>
<head>
<title>rechercher</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<form ENCTYPE="multipart/form-data" action="clients2.php" METHOD="POST">
<select name="tri"> 
<option value="Nom">Requête1</option>
<option value="Prenom">Requête2</option>
<option value="Age">Requête3</option>
<option value="Age">Requête4</option>
</select>
<input type="submit" value="Exécuter">
</form>

</body>
</html>

mon code php qui fonction
<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 ';
$select = 'SELECT prenom,nom,titre,phone,email,no,cp,(cp-no) AS calcul 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 '<td bgcolor="#669999"><b><u>calcul</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 '<td bgcolor="#CCCCCC">'.$row['calcul'];
		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>    

Re: Calcul entre deux champs est-ce possible ? puis l'affich

Posté : 27 avr. 2012, 18:38
par moogli
salut,

avec un simple if tu champ la couleur de la css (ou un switch si tu a plus de deux choix
<?php
echo '<td class="';
if ($row['calcul'] >= 50) 
    echo 'lenomdelaclasseorange';
else 
    echo 'lenomdelaclassenormale';

echo '>'.$row['calcul'].'</td>';
?>
@+

Re: Calcul entre deux champs est-ce possible ? puis l'affich

Posté : 27 avr. 2012, 18:40
par smashcfr
Pour ça tu peux, dans ton affichage, évaluer la valeur du champ et agir en fonction pour ton echo.

avec un
if (valeurduchamp >= valeur)
{
    echo blabla;
}
else
{
    echo autrecouleur;
}
Si pas mal de valeurs sont à considérer, tu peux éventuellement utiliser un switch case.


EDIT => Voilà comme moogli a écrit :p

Re: Calcul entre deux champs est-ce possible ? puis l'affich

Posté : 27 avr. 2012, 19:11
par debutant10
merci moogli trop fort ! sa fonctionne j'ai testé merci pour votre aide j'y vois plus clair.

autre question


2-/ J'ai une liste déroulante en html pour déclencher 4 requêtes mais cela ne fonctionne pas je ne vois pas ou est l'erreur je n'arrive pas à lancer les requête ni à faire le lien entre le fichier Html et Php. Pouvez vous m'aider ?

Requête 1 : je voudrais sélectionner et afficher toute la table
$select = 'SELECT prenom,nom,titre,phone,email,no,cp FROM tfi2003_contacts ';
Requête 2 : tout les nom rempli et pas de phone c'est dire vide
Requête 3 : tout les email rempli
Requête 4 : tout les noms qui commence par la lettre D
mon code html liste déroulante :
<html>
<head>
<title>rechercher</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<form ENCTYPE="multipart/form-data" action="clients2.php" METHOD="POST">
<select name="tri"> 
<option value="Nom">Requête1</option>
<option value="Prenom">Requête2</option>
<option value="Age">Requête3</option>
<option value="Age">Requête4</option>
</select>
<input type="submit" value="Exécuter">
</form>

</body>
</html>

mon code php qui fonction
<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 ';
$select = 'SELECT prenom,nom,titre,phone,email,no,cp,(cp-no) AS calcul 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 '<td bgcolor="#669999"><b><u>calcul</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 '<td bgcolor="#CCCCCC">'.$row['calcul'];
		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>    

Re: Calcul entre deux champs est-ce possible ? puis l'affich

Posté : 27 avr. 2012, 19:56
par smashcfr
Dans ton fichier php, tu n'as pas besoin de mettre les deux SELECT à la suite.
Là j'ai l'impression que tu mets ta requête dans le 1er, puis tu l'écrases avec la 2e.
$select = 'SELECT prenom,nom,titre,phone,email,no,cp FROM tfi2003_contacts ';
$select = 'SELECT prenom,nom,titre,phone,email,no,cp,(cp-no) AS calcul FROM tfi2003_contacts ';
Après, quand tu utilises un formulaire, la valeur est récupérée dans le fichier de destination dans une variable (Je crois qu'on l'appelle superglobale) $_POST.

Regarde de ce coté là, je pense qu'il doit y avoir une piste.

(Moogli si tu veux confirmer, tu es bien plus calé que moi en php).

Re: Calcul entre deux champs est-ce possible ? puis l'affich

Posté : 28 avr. 2012, 10:55
par debutant10
J'ai trouvé la solution merci

Par contre je recherche toujours la solution pour la question 2

2-/ J'ai une liste déroulante en html pour déclencher 4 requêtes mais cela ne fonctionne pas je ne vois pas ou est l'erreur je n'arrive pas à lancer les requête ni à faire le lien entre le fichier Html et Php. Pouvez vous m'aider ?

Requête 1 : je voudrais sélectionner et afficher toute la table
Code sql
$select = 'SELECT prenom,nom,titre,phone,email,no,cp FROM tfi2003_contacts ';

Requête 2 : tout les nom rempli et pas de phone c'est dire vide
Requête 3 : tout les email rempli
Requête 4 : tout les noms qui commence par la lettre D
mon code html liste déroulante :
<html>
<head>
<title>rechercher</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<form ENCTYPE="multipart/form-data" action="clients2.php" METHOD="POST">
<select name="tri"> 
<option value="Nom">Requête1</option>
<option value="Prenom">Requête2</option>
<option value="Age">Requête3</option>
<option value="Age">Requête4</option>
</select>
<input type="submit" value="Exécuter">
</form>

</body>
</html>

mon code php qui fonctionne :

<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 ';
$select = 'SELECT prenom,nom,titre,phone,email,no,cp,(cp-no) AS calcul 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 '<td bgcolor="#669999"><b><u>calcul</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 '<td bgcolor="#CCCCCC">'.$row['calcul'];
                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>    
Re: Calcul entre deux champs est-ce possible ? puis l'affich
 par moogli Hier, 16:26

dans la requete SQL (et j'ai hésité avec un sigle en 3 lettres ^^). 

l'alias indiqué (avec le mot as sert a nommer le résultat et tu l'affiche comme tu le souhaiteensuite. 

SELECT prenom,nom,titre,phone,email,no,cp, (cp-no) as calcul FROM tfi2003_contacts

tu utilise calcul pour l'affichage (dans $row)

@+
Re: Calcul entre deux champs est-ce possible ? puis l'affich
 par debutant10 Hier, 16:22

ou dois-je l 'insérer dans mon code ? 

Pour info je souhaite avoir le champ calcul est les résultats à l 'affichage merci 



dois-je conserver mon code ou autre 

merci de vos explications.
Re: Calcul entre deux champs est-ce possible ? puis l'affich
 par Mazarini Hier, 15:01

Syntaxe: [ Télécharger ] [ Masquer ]
Code sql
SELECT (cp - no) AS calcul FROM XXXXXXX

Ca doit marcher ?
Calcul entre deux champs est-ce possible ? puis l'afficher
 par debutant10 Hier, 14:33

Bonjour, 

J'ai deux champs dans ma table "no" et "cp" Je souhaite faire une soustraction "cp" -"no" ---> dans un future champ qui se nommera calcul 

par contre le champ calcul n'existe pas dans ma table à ce jour comment l'afficher avec la sous traction "cp" -"no" ? 

comment faire ? 

merci pour votre aide 



TOUT SÉLECTIONNER
<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>   
Merci pour votre aide

Re: Calcul entre deux champs est-ce possible ? puis l'affich

Posté : 28 avr. 2012, 13:51
par debutant10
merci j 'ai trouvé tt seul