tri par date + génération csv

Petit nouveau ! | 3 Messages

06 janv. 2010, 12:52

Bonjour, je vais essayé d'être clair :
- j'ai créé un formulaire qui permet d'enregistrer des infos dans une table.
- je souhaite que les résultats soient affichés par jour : c'est à dire qu'il peut y avoir plusieurs enregistrements par jour mais que la date d'enregistrement ne s'affiche qu'une seule fois. J'ai réussi à faire ceci :
<?php
// J'ai choisi le mot de passe "ifas2010"
if (isset($_POST['mot_de_passe'])) // Si la variable existe
{
    // On se crée une variable $mot_de_passe avec le mot de passe entré
    $mot_de_passe = $_POST['mot_de_passe'];
}
else // La variable n'existe pas encore
{
    $mot_de_passe = ""; // On crée une variable $mot_de_passe vide
}
 
if ($mot_de_passe == "ifas2010") // Si le mot de passe est bon
{
// On affiche la page cachée.
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//FR" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
    <body>
        <p>Sélectionnez dans la liste la journée que vous souhaitez télécharger</p>
				
			<?php
			
			$hote="localhost";
			$base="Internet_v2";
			$utilisateur="";
			$pass="";
			$c=@mysql_connect("$hote","$utilisateur","$pass") or die('Echec de la connexion à la base de donnée');
			mysql_select_db("$base") or die('Connexion à la base de donnée réussie mais table manquante ou endommagée'); 
			$sql = "SELECT * FROM jos_ckforms_3 ORDER BY created";
			$Query = mysql_query($sql);
			$created = 0;
			
			echo "<table>";
			while( $Result = mysql_fetch_array($Query) )
				{
				    if( $created == $Result['created'] )
				    {
				        echo "<tr><td>".$Result['NOM']."</td></tr>";
				    }
				    else
				    {
				        echo "<tr><td>".$Result['created']."</td></tr>";
				        echo "<tr><td>".$Result['NOM']."</td></tr>";
				        $created = $Result['created'];
				    }
				}
			echo "</table>";

			?>       
    </body>
</html>
<?php
}
else // le mot de passe n'est pas bon
{
// On affiche la zone de texte pour rentrer le mot de passe.
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//FR" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
	    <head>
	        <title>Page protégée par mot de passe</title>
	        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	    </head>
	    <body>
			<p>Veuillez entrer le mot de passe pour obtenir l'accès à la zone de pré-inscription aux concours IFAS:</p>
			<form action="index.php" method="post">
			<p>
			<input type="text" name="mot_de_passe" /> <input type="submit" value="Valider" />
			</p>
			</form>
	    </body>
</html>


<?php
} // Fin du else
// Fin du code :)
?>
- ensuite et c'est là que ça se complique je veut créer un lien sur les dates qui génèrera un fichier csv avec les enregistrements du jour sélectionné.
Comment faire ? J'arrive à récupérer toutes les donnes de la table dans un fichier csv mais je voudrai pouvoir récupérer jour par jour
J'espère avoir été clair.
Merci d'avance

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

06 janv. 2010, 12:56

Modération :
Afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 70 Messages

06 janv. 2010, 16:34

Un petit détail en passant :
<?php
// J'ai choisi le mot de passe "ifas2010"
if (isset($_POST['mot_de_passe'])) // Si la variable existe
{
    // On se crée une variable $mot_de_passe avec le mot de passe entré
    $mot_de_passe = $_POST['mot_de_passe'];
}
else // La variable n'existe pas encore
{
    $mot_de_passe = ""; // On crée une variable $mot_de_passe vide
}
 
if ($mot_de_passe == "ifas2010") // Si le mot de passe est bon
{
     // INSTRUCTIONS
}
?>
Celà peut très bien se remplacer par :
<?php
// J'ai choisi le mot de passe "ifas2010"
if (isset($_POST['mot_de_passe']) && $_POST['mot_de_passe'] == "ifas2010") // Si la variable existe
{
     // INSTRUCTIONS
}
?>
Pourquoi?

Si tu utilises un AND dans ton if, et que la première instruction est fausse, il ne testera pas la deuxième. En d'autre mots, si isset($_POST['mot_de_passe']) == false, il ne testera pas $_POST['mot_de_passe'] == "ifas2010" et ne génerera donc pas d'erreur si $_POST['mot_de_passe'] n'existe pas.


Pour ton problème, pourquoi ne crées-tu pas un lien à la ligne suivante ? :
echo "<tr><td>".$Result['created']."</td></tr>";

// avec un lien
echo "<tr><td><a href='export.php?created=".$Result['created']."'>>".$Result['created']."</a></td></tr>";

Tu pourras ensuite executer une requête SQL avec WHERE created = [TA VARIABLE] pour récupérer la liste des informations du jour et les exporter.
Damien Vande Kerckhove - Developer PHP & .net
Mon blog

Invité
Invité n'ayant pas de compte PHPfrance

06 janv. 2010, 16:42

Ok merci je vais essayé et je vous tiens au courant.
Encore super merci

Petit nouveau ! | 3 Messages

06 janv. 2010, 17:14

Bon je vais surement te paraitre un peu neuneu :oops: mais j'ai un problème avec la variable.
J'ai créé une page "export.php" dans laquelle je mets la requête suivante qui va générer mon csv
<?
$hote="localhost";
$base="Internet_v2";
$utilisateur="";
$pass="";
$date=$Result['created'];//je souhaite aussi mettre la date sur le fichier csv généré

$c=@mysql_connect("$hote","$utilisateur","$pass") or die('Echec de la connexion à la base de donnée');

mysql_select_db("$base") or die('Connexion à la base de donnée réussie mais table manquante ou endommagée'); 

$sql = "SELECT * FROM jos_ckforms_3 WHERE created=$date";

$Query = mysql_query($sql);

header("Content-Type: application/csv-tab-delimited-table");
header("Content-disposition: attachment; filename=table-".$date.".csv");
header("Pragma: no-cache");
header("Expires: 0");
...
?> 
Je ne sais plus comment on récupère la variable de export.php?created=".$Result['created']." :cry:
Peux tu m'aider ?
Je voulais aussi mettre la date sur le fichier généré mais ça je devrais m'en sortir (ou pas :D )

ViPHP
ViPHP | 5462 Messages

06 janv. 2010, 17:26

pourquoi tu mets un @ et apres une gestion d'erreur ?

Petit nouveau ! | 3 Messages

06 janv. 2010, 17:28

Je viens de trouver la réponse #-o
SELECT * FROM ma_table WHERE created='".$_GET['created']."'";

Et c'est la même chose pour la génération du fichier avec la date.

Merci beaucoup pour m'avoir aiguillé.
A charge de revanche

ViPHP
ViPHP | 5462 Messages

06 janv. 2010, 17:29

protege ta valeur par contre