aide pour une attestation de présence

Eléphant du PHP | 150 Messages

31 mai 2011, 08:25

Bonjour tout le monde,

Voila j'ai créé une attestation de présence pour des étudiants où l'on choisis juste le nom de l'élève et cela rempli le nombre d'heures d'absences, le nombre d'heures de présences, sa civilité, son prénom. Le truc c'est que j'arrive à récupérer les champs de la table "etudiant" mais je voudrais récupérer les champs de la table "entreprise" qui est lié par "idEntreprise".

Voici comment sont constituée les tables :
etudiant (idEtudiant, civilite, nom, prenom, adresse, code_postal, [...], idEntreprise)
entreprise (idEntreprise, nom, adresse, code_postal, ville, [...], civilite_tuteur, nom_tuteur, prenom_tuteur)


Donc j'aimerais savoir comment faire, enfin surtout la requête SQL qu'il faut utiliser.

Merci d'avance.
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Eléphant du PHP | 80 Messages

31 mai 2011, 09:16

Si c'est pour récupérer des champs avec les deux tables en relation :
Select idEtudiant, civilité, civilite_tuteur
From Etudiant E, Entreprise T
Where E.IdEtudiant=T.IdEntreprise 
And [ici tes autres restrictions]... ;

Sinon un simple
Select * From Entreprise; 
En informatique, lorsqu'il y a un bug, le souci est toujours entre la chaise et le clavier.

Eléphant du PHP | 150 Messages

31 mai 2011, 09:36

Si c'est pour récupérer des champs avec les deux tables en relation :
Select idEtudiant, civilité, civilite_tuteur
From Etudiant E, Entreprise T
Where E.IdEtudiant=T.IdEntreprise 
And [ici tes autres restrictions]... ;
Merci. aurais tu un exemple d'autres restrictions?
sinon entre "SELECT" et "FROM" je met tout les champs que je veux récupérer c'est bien ça?
Sinon un simple
Select * From Entreprise; 
j'ai essayer de faire ça :
$sql = "SELECT * FROM entreprise WHERE idEntreprise='". $idEntreprise ."' ";
							$result = mysql_query($sql) or die(mysql_error());
							while($result && $row=mysql_fetch_array($result))
							{
																	$idEntreprise =$row['idEntreprise'];
																	$nom_entr =$row['nom_entr'];
																	$adresse_entr =$row['adresse_entr'];
																	$adresse2_entr =$row['adresse2_entr'];
																	$code_postal_entr =$row['code_postal_entr'];
																	$ville_entr =$row['ville_entr'];
																	$civilite_tuteur =$row['civilite_tuteur'];
																	$nom_tuteur =$row['nom_tuteur'];
																	$prenom_tuteur =$row['prenom_tuteur'];
							}
sinon a la base pour mon attestation voici la commande qui permet de récupéré tout mes champs :
 if (isset($_GET['action_attestation']) && !empty($idEtudiant))
                {

                        $sql = "SELECT * FROM etudiant t1 LEFT JOIN entreprise t2 ON t1.idEntreprise=t2.idEntreprise WHERE t1.idEtudiant='". $idEtudiant ."' ";
                        $result = mysql_query($sql) or die(mysql_error());
                        while($result && $row=mysql_fetch_array($result))
                        {
                                 // données élève utiles à l'attestation: etudiant, entreprise et classe
                                                                $idEtudiant = $row['idEtudiant'];
                                                                $nomEtudiant = $row['nom'];
                                                                $prenomEtudiant = $row['prenom'];
                                                                $civiliteEtudiant = $row['civilite'];
                                                                $promotion = $row['promotion'];
                                                                $idClasse = $row['idClasse'];			
                        }
						
en attendant, c'est a dire en trichant un peu : vu que pour l'instant je n'arrive pas a afficher l'entreprise de l'étudiant j'affiche l'entreprise sélectionner mais ça ne fonctionne pas non plus.

sinon je vais tester ta requête.
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Eléphant du PHP | 80 Messages

31 mai 2011, 10:01

Moi c'était juste une requête exemple pour te montrer le principe de jointure entre deux tables, après je ne sais pas ce que tu veux sélectionner ! Enfin si tu veux afficher seulement les entreprises en relations avec les étudiants, si tu les veux toutes, si tu veux juste l'entreprise de l'étudiant numéro xx ou autre.


J'ai jamais été très doué pour les LEFT JOIN, mais si tu fais juste la jointure que je t'ai montré tout en haut et comme restriction tu mets bien ton "AND idEtudiant='.$idEtudiant.';" ? Ca te donne ce que tu souhaites ?

EDIT: Pour afficher l'entreprise de l'étudiant c'est bien :
Select IdEntreprise, [...] 
From Etudiant E, Entreprise T
Where E.IdEntreprise = T.IdEntreprise
And idEtudiant='".$idEtudiant."';"
Enfin normalement ...
En informatique, lorsqu'il y a un bug, le souci est toujours entre la chaise et le clavier.

Eléphant du PHP | 150 Messages

31 mai 2011, 10:27

Moi c'était juste une requête exemple pour te montrer le principe de jointure entre deux tables, après je ne sais pas ce que tu veux sélectionner ! Enfin si tu veux afficher seulement les entreprises en relations avec les étudiants, si tu les veux toutes, si tu veux juste l'entreprise de l'étudiant numéro xx ou autre.


J'ai jamais été très doué pour les LEFT JOIN, mais si tu fais juste la jointure que je t'ai montré tout en haut et comme restriction tu mets bien ton "AND idEtudiant='.$idEtudiant.';" ? Ca te donne ce que tu souhaites ?

EDIT: Pour afficher l'entreprise de l'étudiant c'est bien :
Select IdEntreprise, [...] 
From Etudiant E, Entreprise T
Where E.IdEntreprise = T.IdEntreprise
And idEtudiant='".$idEtudiant."';"
Enfin normalement ...
moi je veux l'entreprise de l'étudiant, car c'est une attestation donc je sélectionne l'étudiant et je veux que en haut a droite cela me mette : le nom de l'entreprise, la civilite du tuteur, le nom du tuteur, le prenom du tuteur, l'adresse de l'entreprise, le code postal de l'entreprise et la ville de l'entreprise.

sinon pour le moment sa fonctionne a moitié :
$sql = "SELECT idEtudiant, nom_entr, adresse_entr, adresse2_entr, code_postal_entr, ville_entr, civilite_tuteur, nom_tuteur, prenom_tuteur FROM Etudiant E, Entreprise T WHERE E.IdEtudiant=T.IdEntreprise AND idEtudiant='".$idEtudiant."'"; 

cette requête m'affiche une entreprise mais pas celle lié a l'étudiant celle qui a idEntreprise=idEtudiant donc si je prend l'élève n°5 cela prend l'entreprise n°5
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Mammouth du PHP | 672 Messages

31 mai 2011, 11:11

C'est normal.

Tu fais ton test sur E.IdEtudiant=T.IdEntreprise ID de l'étudiant dans la table Etudiants = ID de l'entreprise dans la table Entreprises.
Ez3kiel te propose une jointure sur E.IdEntreprise = T.IdEntreprise ID de l'entreprise dans la table Etudiants = ID de l'entreprise dans la table Entreprises.

Eléphant du PHP | 150 Messages

31 mai 2011, 11:21

merci,j'ai compris qu'en relisant bien la requête, mais je fais quoi?je fais sa requête sur PHPmyAdmin?ou bien il faut que je trouve une autre requête pour afficher ce que je veux? je suis perdu alors que j'en suis sur que cela doit pas être très compliqué.
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Eléphant du PHP | 80 Messages

31 mai 2011, 11:36

Je dirais dans ta page PHP, car si j'ai bien compris tu souhaites faire une restriction de recherche sur un étudiant en particulier, mais vu qu'il y a des champs qui portent le même nom entre tes tables, il faut aussi préciser de quelle table vient le champs que tu veux afficher. (Par exemple: tu as un champs code_postale dans Etudiant et aussi dans entreprise, donc si tu veux le champs code_postale de Entreprise, il faut faire Entreprise.code_postale)


Donc si je reprend ta dernière requête et que je la réadapte ça donnerais ceci :
Select Entreprise.nom, Entreprise.civilite_tuteur, Entreprise.nom_tuteur, Entreprise.prenom_tuteur, Entreprise.adresse, Entreprise.code_postal, Entreprise.ville
From Entreprise, Etudiant
Where Entreprise.IdEntreprise=Etudiant.IdEntreprise
And idEtudiant='".$idEtudiant."'"
En informatique, lorsqu'il y a un bug, le souci est toujours entre la chaise et le clavier.

Eléphant du PHP | 150 Messages

31 mai 2011, 13:47

a oui excuse moi mais j'ai aucun champs nommé pareil : mes champs d'entreprise on le suffixe "_entr" donc pour le nom de l'entreprise c'est "nom_entr" etc.dsl d'avoir omis ce détail.
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Eléphant du PHP | 80 Messages

31 mai 2011, 14:23

On rajoute _entr à la fin juste, mais la requête reste valide. :wink:
En informatique, lorsqu'il y a un bug, le souci est toujours entre la chaise et le clavier.

Eléphant du PHP | 150 Messages

31 mai 2011, 14:37

c'est bon j'ai trouvé :
Code php
$sql = "SELECT idEtudiant, nom_entr, adresse_entr, adresse2_entr, code_postal_entr, ville_entr, civilite_tuteur, nom_tuteur, prenom_tuteur FROM Etudiant E, Entreprise T WHERE E.IdEntreprise =T.IdEntreprise AND idEtudiant='".$idEtudiant."'";
Merci pour votre aide et vos réponse rapides, la j'ai un autre souci qui n'a rien a voir : mais quand je souhaite imprimer l'attestation ou j'ai mis le logo de l'entreprise en haut a gauche , a l'impression il ne sort pas, il écrit juste le nom de l'image.cela vient de quoi?
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Eléphant du PHP | 80 Messages

01 juin 2011, 08:47

Content que tu ais trouvé. =D>

Imprimé depuis où ?
En informatique, lorsqu'il y a un bug, le souci est toujours entre la chaise et le clavier.

Eléphant du PHP | 150 Messages

01 juin 2011, 09:04

depuis une page php, voila mon script javascript :
 <script language="JavaScript">
                        function imprime_zone(obj)

                        {
                       // Ouvre une nouvelle fenêtre
                        var f = window.open("", "", "height=50, width=400,toolbar=0, menubar=0, scrollbars=0, resizable=0,status=0, location=0, left=0, top=0");

                        // Définit le Style de la page
                        f.document.body.style.color = '#000000';
                        f.document.body.style.backgroundColor = '#FFFFFF';
                        f.document.body.style.padding = "10px";

                        // Affiche le contenu HTML de obj dans le body de la nouvelle fenêtre
                                                f.document.title = "" + document.getElementById(obj).id;
                        f.document.body.innerHTML  = document.getElementById(obj).innerHTML;

                        // Imprime et ferme la fenêtre
                        f.window.print();
                        f.window.close();
                        return true;
                        }
                        </script>

et voila mon attestation que je veux imprimer :
<div id="attest_page1">
<div align="left"><img src="images/logo.png" alt="logo" /></div>
<br/><br/>

<br/><br/>

<div align="right" ><b>
	<table >
		<tr align="left">
			<td>
					<?php echo isset($nom_entr)?$nom_entr:''; ?><br/>
			</td>
		</tr>
		<tr >
			<td align="left">
					<?php echo isset($civilite_tuteur)?$civilite_tuteur:''; ?> <?php echo isset($nom_tuteur)?$nom_tuteur:''; ?> <?php echo isset($prenom_tuteur)?$prenom_tuteur:''; ?>
			</td>
		</tr>
		<tr>
			<td align="left">
					<?php echo isset($adresse_entr)?$adresse_entr:''; ?>
			</td>
		</tr>
		<tr>
			<td align="left">
					<?php echo isset($adresse2_entr)?$adresse2_entr:''; ?>
			</td>
		</tr>
		<tr>
			<td align="left">
				<?php echo isset($code_postal_entr)?$code_postal_entr:''; ?> <?php echo isset($ville_entr)?$ville_entr:''; ?>
			</td>
		</tr>
	</table>
</b></div>
<br/>
<br/><br/><div align="right">A Cran-Gevrier, le <?php echo isset($dateComplete)?$dateComplete:date("d-m-Y"); ?></div>
<br/><br/>
<br/><br/>
        <table width="100%" border="1" cellspacing="1" cellpadding="1"><tr><td><div align="center"><b>ATTESTATION</b></div></td></tr></table>
        <br/><br/>
       
        Période : <b><?php echo isset($nomMois)?$nomMois:''; ?> (<?php echo isset($annee)?$annee:''; ?>)</b>
        <br/>
        <br/>
        <b><u>Relevé de Présence</b> : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		</u><br/><br/>
       
        Je soussigné M. ..........., en qualité de directeur de ....., Institut Supérieur <br/>
	de Commerce et Gestion,....., certifie que  :

        <br/>
        <br/>
                <?php echo isset($civiliteEtudiant)?$civiliteEtudiant:''; ?> <b><?php echo isset($nomEtudiant)?$nomEtudiant:''; ?> <?php echo isset($prenomEtudiant)?$prenomEtudiant:''; ?></b> inscrit en <b><?php echo isset($idClasse)?$idClasse:''; ?></b>
        &nbsp;(<?php echo isset($promotion)?$promotion:''; ?>)
                <br/>
        <br/>
        A été présent(e) <?php echo isset($nombreheurepresencemois)?$nombreheurepresencemois:'0'; ?> heures

        <br/>
        <br/>
        <u><b>Relevé d'Absence</b> : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		&nbsp;&nbsp;&nbsp;&nbsp;
		</u>
        <br/><br/>
        <b>Total des absences : <?php echo isset($nombreheureabsencemois)?$nombreheureabsencemois:'0'; ?> heures  </b>
		<br/><br/>
        <div id="message1"><?php echo isset($message1)?$message1:''; ?></div>

        <br/><br/>
        <br/><br/>
        <br/><br/>
        <table border="0" width="100%">
        <tr><th>Le Salarié</th><th>Le Directeur de l'établissement</th></tr>
        <tr><th><?php echo isset($nomEtudiant)?$nomEtudiant:''; ?> <?php echo isset($prenomEtudiant)?$prenomEtudiant:''; ?></th><th>...............</th></tr>
        </table>
</div>

<input type="button" value="Imprimer" onClick="imprime_zone('attest_page1');"/>
donc voila je ne sais pas pourquoi je n'arrive pas a imprimer ce logo, peut être que cela viens du script??
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9: