Etablir un classement avec odtPhp et requete MySQL

deutch36 Messages postés 73 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 11 décembre 2012 - 6 mai 2011 à 14:51
deutch36 Messages postés 73 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 11 décembre 2012 - 18 mai 2011 à 08:54
Bonjour a tous, je suis etudiant en BTS IRIS.
Je suis censé realiser un projet pour le concours de robotique cartec-Inno.
Arrivant a la fin de mon projet j'essai de faire le travail que mes professeurs m'ont rajouter (hors du sujet d'origine).
En effet dans tout concours il y a un classement, et j'essai d'imprimer ce classement via la bibliotheque OdtPHP.

Le soucis je n'arrive a afficher qu'un seul des membres du concours et le dernier.
Je souhaiterai afficher tout le classement.


Voici mon code :

<?php
$host = "localhost"; /*Serveur local*/
$user = "Cartec"; /*Utilisateur*/
$pass = "Cartec"; /*Mot de passe*/
$bdd = "cartec"; /*Nom de la base de donnée*/

mysql_connect($host,$user,$pass) /*Connexion à la base de donnée en utilisant les variables précédentes*/
or die("Impossible de se connecter");

mysql_select_db("$bdd") /*Selectionner la base de donnée*/
or die("Impossible de se connecter");

$requete='SELECT `NomIUT`,`NomRobot`, `PointsTotal` FROM `robot`
ORDER BY `PointsTotal` DESC ,`Temps_Total`'; //On tri les resultats
//en fonction du total de point et du temps

$req = mysql_query($requete) or die('Erreur SQL !
'.$requete.'
'.mysql_error()); /*Execution de la requete*/
$total = mysql_num_rows($req);
$classement=1;


require_once('/Scolaire/Iris2/Deschatre/Base/library/odf.php');

$odf = new odf("classement.odt"); // Creation du fichier odt

$odf->setVars('titre','Classement'); // On remplace les balises
$odf->setVars('position','Position');//(premier argument du setVars)
$odf->setVars('NomIut','IUT'); // du fichier odt par les deuxiemes
$odf->setVars('NomRobot','Robot'); // arguments du setVars
$odf->setVars('NbPts','Nombre de points');

while($row = mysql_fetch_array($req))
{
$Iut = $row["NomIUT"];
$Robot = $row["NomRobot"];
$PointsTotal = $row["PointsTotal"];
$classement = $classement +1;

$listeClassement = array( // Creation d'un tableau de donnée, il sert de liste d'article
'pos' => $classement,
'iut' => $Iut,
'robot' => $Robot,
'pts' => $PointsTotal,
);

$segment = $odf->setSegment('classement'); // Initialisation du segment

foreach ($listeClassement AS $element) // Bouclage du segment
{
$odf->setVars('pos', $classement); //Remplacement des balises
$odf->setVars('iut', $Iut);
$odf->setVars('robot', $Robot);
$odf->setVars('pts', $PointsTotal);
$segment->merge(); // Fusion du segment
}
$odf->mergeSegment($segment); // Ajout du segment au document
}



$odf -> exportAsAttachedFile(); // Permet d'envoyer le resultat sur le navigateur client

echo("Ok");

?>

8 réponses

deutch36 Messages postés 73 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 11 décembre 2012 3
6 mai 2011 à 14:52
Je vous remercie par avance
0
cs_ludwig59 Messages postés 128 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 6 mai 2011 2
6 mai 2011 à 15:24
Bonjour,

Je ne sais pas si c'est la cause du problème mais ta boucle while ne devrait-elle pas être fermée avant initialisation du segment et non après l'ajout du segment au document ?
0
deutch36 Messages postés 73 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 11 décembre 2012 3
6 mai 2011 à 15:41
Bonjour et merci de ta reponse,

J'avais deja penser a fermer la boucle while avant le segment.
Mais le resultat entre fermer la boucle avant l'initialisation et apres l'initialisation reste le meme.

Je vois s'afficher 4 fois le dernier
0
cs_ludwig59 Messages postés 128 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 6 mai 2011 2
6 mai 2011 à 15:48
Essai ceci :

<?php

$host = "localhost"; /*Serveur local*/
$user = "Cartec"; /*Utilisateur*/
$pass = "Cartec"; /*Mot de passe*/
$bdd = "cartec"; /*Nom de la base de donnée*/

mysql_connect($host,$user,$pass) /*Connexion à la base de donnée en utilisant les variables précédentes*/
or die("Impossible de se connecter");

mysql_select_db("$bdd") /*Selectionner la base de donnée*/
or die("Impossible de se connecter");

$requete='SELECT `NomIUT`,`NomRobot`, `PointsTotal` FROM `robot`
ORDER BY `PointsTotal` DESC ,`Temps_Total`'; //On tri les resultats
//en fonction du total de point et du temps

$req = mysql_query($requete) or die('Erreur SQL !
'.$requete.'
'.mysql_error()); /*Execution de la requete*/
$total = mysql_num_rows($req);
$classement=1;


require_once('/Scolaire/Iris2/Deschatre/Base/library/odf.php');

$odf = new odf("classement.odt"); // Creation du fichier odt

$odf->setVars('titre','Classement'); // On remplace les balises
$odf->setVars('position','Position');//(premier argument du setVars)
$odf->setVars('NomIut','IUT'); // du fichier odt par les deuxiemes
$odf->setVars('NomRobot','Robot'); // arguments du setVars
$odf->setVars('NbPts','Nombre de points');

$listeClassement = "";
while($row = mysql_fetch_array($req))
{
$Iut = $row["NomIUT"];
$Robot = $row["NomRobot"];
$PointsTotal = $row["PointsTotal"];
$classement = $classement +1;

$listeClassement[] = array( // Creation d'un tableau de donnée, il sert de liste d'article
'pos' => $classement,
'iut' => $Iut,
'robot' => $Robot,
'pts' => $PointsTotal,
);
} /* fin while */	

$segment = $odf->setSegment('classement'); // Initialisation du segment

foreach ($listeClassement AS $element) // Bouclage du segment
{
$odf->setVars('pos', $element['pos']); //Remplacement des balises
$odf->setVars('iut', $element['iut']);
$odf->setVars('robot', $element['robot']);
$odf->setVars('pts', $element['pts']);
$segment->merge(); // Fusion du segment
}
$odf->mergeSegment($segment); // Ajout du segment au document

$odf -> exportAsAttachedFile(); // Permet d'envoyer le resultat sur le navigateur client

echo("Ok"); 
?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
deutch36 Messages postés 73 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 11 décembre 2012 3
11 mai 2011 à 08:17
Bonjour et desolé pour le retard j'etais en epreuve ces derniers jours.
Je te remercie de ta reponse mais cela ne fonctionne pas.

Je pense que l'erreur se fait entre le bouclage while et le bouclage du segment
0
deutch36 Messages postés 73 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 11 décembre 2012 3
11 mai 2011 à 13:27
Bonjour,

J'ai tester la récupération de mes valeurs avec la fonction print_r($row)

Je récupère bien tout les enregistrement, mais n'affiche que le dernier.
Si vous avez des suggestion je vous ecoute.

Cordialement
0
deutch36 Messages postés 73 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 11 décembre 2012 3
17 mai 2011 à 16:14
Bonjour a tous et a toutes

Apres de nombreuse recherche je me suis apercus que le probleme survenait durant la fusion du segment. Si quelqu'un sait pourquoi je le remercie par avance
0
deutch36 Messages postés 73 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 11 décembre 2012 3
18 mai 2011 à 08:54
Bonjour a tous et a toutes,

Apres modification du code, l'erreur est toujours presente.

Voici le nouveau code :
<?php
$host = "localhost"; /*Serveur local*/
$user = "Cartec";  /*Utilisateur*/
$pass = "Cartec";  /*Mot de passe*/
$bdd = "cartec";  /*Nom de la base de donnée*/
  
mysql_connect($host,$user,$pass) /*Connexion à la base de donnée en utilisant les variables précédentes*/
or die("Impossible de se connecter");
  
mysql_select_db("$bdd") /*Selectionner la base de donnée*/
or die("Impossible de se connecter");

$requete='SELECT `NomIUT`,`NomRobot`, `PointsTotal` FROM `robot` 
  ORDER BY `PointsTotal` DESC ,`Temps_Total`'; //On tri les resultats
   //en fonction du total de point et du temps

$req = mysql_query($requete) or die('Erreur SQL !
'.$requete.'
'.mysql_error());   /*Execution de la requete*/
$total = mysql_num_rows($req);
$classement=1;


require_once('/Scolaire/Iris2/Deschatre/Base/library/odf.php');

$odf = new odf("classement.odt"); // Creation du fichier odt

$odf->setVars('titre','Classement'); // On remplace les balises 
$odf->setVars('position','Position');//(premier argument du setVars) 
$odf->setVars('NomIut','IUT');		 // du fichier odt par les deuxiemes
$odf->setVars('NomRobot','Robot');   // arguments du setVars
$odf->setVars('NbPts','Nombre de points');

$listeClassement = array();
$i=0;
while($row = mysql_fetch_array($req)) 
  {	
  $Iut = $row["NomIUT"];
  $Robot = $row["NomRobot"];
  $PointsTotal = $row["PointsTotal"];  
  $classement = $classement +1; 
  
$listeClassement[$i]["pos"]=$classement;
$listeClassement[$i]["iut"]=$Iut;
$listeClassement[$i]["robot"]=$Robot;
$listeClassement[$i]["pts"]=$PointsTotal;
$i++;

  }  
  $segment = $odf->setSegment('classement'); // Initialisation du segment

  foreach ($listeClassement AS $element) // Bouclage du segment
    {	
$odf->setVars('pos', $element['pos']); //Remplacement des balises
    $odf->setVars('iut', $element['iut']);
    $odf->setVars('robot', $element['robot']);
    $odf->setVars('pts', $element['pts']);
$segment->merge(); // Fusion du segment
}

  $odf->mergeSegment($segment); // Ajout du segment au document

 // }
  
  
$odf -> exportAsAttachedFile("classement.odt"); // Permet d'envoyer le resultat sur le navigateur client
  
  
?>  
0
Rejoignez-nous