Définir un nom en fonction de plusieurs autres choses

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Définir un nom en fonction de plusieurs autres choses

par Cyrano » 07 févr. 2006, 11:07

Excellent :D

par Sebe » 06 févr. 2006, 23:36

J'ai certainement dû suivre un entraînement pour être aussi nul ... je ne sais pas lire! Je me suis braqué sur la ligne supplèmentaire de la requête hors que l'erreur venait d'un espace manquant!

Maintenant, tout fonctionne bien! Les classements sortent comme je le voulais avec le bon proprio du dossard ... je vais pouvoir m'atteler au script pour l'encodage!

Merci

par Sebe » 06 févr. 2006, 12:10

Salut,

J'ai bien lu ta réponse hier mais je devais aller bosser ce qui m'a permis de réfléchir un peu ... je me demande si je ne dois pas ajouter un champs 'annee' dans ma table [acrho_classement ou t6]!

Donc voici ce que j'ai ajouter à ma requête:
"AND YEAR(t5.date) = t4.annee".
Mais cela ne fonctionne pas:
You have an error in your SQL syntax near 'AS t1, acrho_categorie AS t2, acrh' at line 24
Je ne vois pas ce qu'il y a!

Merci

par Cyrano » 05 févr. 2006, 21:53

YEAR() est une fonction SQL qui permet de tester la valeur d'un champ de type DATE ou DATETIME uniquement sur l'année. Donc tu peux l'utiliser dans la liste des champs à récupérer

Code : Tout sélectionner

SELECT YEAR(ton_champ_date) FROM etc...
Tu peux également utiliser cette fonction dans une clause WHERE :

Code : Tout sélectionner

SELECT champ_1, champ_2, ..., champ_n FROM table xyz WHERE YEAR(le_champ_date_de_la_table) = 2004;
Est-ce que ça t'éclaire un peu mieux ?

par Sebe » 05 févr. 2006, 17:54

Je n'ai fait aucun test puisque je ne sais pas comment m'y prendre. Je n'ai, en faite, pas vraiment chercher, sans savoir, si j'étais dans la bonne direction ... c'est juste une réflexion que je me faisais!

J'avoue ne pas savoir dans quelle direction poursuivre mes recherches:
  • 1. IF THEN ELSE (bride de basic)
    2. Travailler la requête
Merci

par Cyrano » 05 févr. 2006, 17:28

Quelle sortes de tests as-tu déjà fait ? quand tu as une idée comme ça, explore-là : crée des requêtes et teste les dans phpMyAdmin et observe le résultat : il va forcément te revenir un résultat ou un message d'erreur. Je ne peux pas faire le test à ta place n'ayant pas accès à ta base :arrow: CQFD : teste, et si tu as des erreurs que tu n'arrives pas à résoudre, reviens avec ce que tu as testé et le message d'erreur obtenu.

par Sebe » 05 févr. 2006, 16:44

J'ai un peu de mal à m'y retrouver, mais pour extraire l'année d'un champ de type DATE ou DATETIME dans une base, tu fais:

Code : Tout sélectionner

SELECT YEAR(nom_du_champ) FROM etc...
Salut,

J'ai une question par rapport à ta proposition:
Si je selectionne un champ de cette manière 'YEAR(t5.date)' en la joignant à ma requête déjà existante (c'est bien cela que je dois faire ou dois refaire une nouvelle requête?), je ne dois pas utiliser 'FROM' pour dire à quelle table je fais référence?
Par la suite, je ne peux pas faire 'WHERE t4.annee = YEAR(t5.date)' car il y a déjà une valeur dans 't4.annee' ... je dois rechercher la valeur dans 't4.annee' qui correspond à 'YEAR(t5.date)'? Comment, puis-je m'y prendre?
J'ai quelques souvenirs avec le basic 'IF', 'THEN', 'ELSE' ... dois-je continuer à propecter dans ce sens là?
Merci

par Sebe » 04 févr. 2006, 15:33

Comme je l'avais pensé, ma requête ne tient pas compte de l'année pour retrouver le propriétaire du dossard! Donc, je vais devoir travailler sur ce point dès demain (méthode Cyrano) afin de permettre à mes classements de s'afficher correctement. Si vous voyez ce qui clôche ... !

Merci

par Sebe » 04 févr. 2006, 10:20

Moi non plus, je n'aime pas trop défaire mais, je suis capable de passer beaucoup de temps pour comprendre le fonctionnement ... cela doit certainement compenser car j'en passe du temps à étudier mon propre code et comparer avec des codes existants! Mais c'est vrai qu'une méthode de travail me serait bénéfique ... je compte sur toi :P

par Cyrano » 04 févr. 2006, 10:11

D'où je viens? Certainement pas de la programmation ...
Si ça peut te rassurer, moi non plus, j'ai exercé pas mal de métiers les plus divers avant d'en arriver à utiliser un ordinateur, et quand c'est arrivé, j'étais camionneur ;)

Je n'ai pas une formation universitaire en informatique non plus : en revanche, une chose que je m'efforce de mettre en exergue pour compenser ces éventuelles lacunes, c'est la logique et le bon sens, tout simplement.

Je sais bien que faire et défaire, c'est toujours travailler, mais étant d'un naturel paresseux, j'ai horreur de devoir défaire pour recommencer et je ne suis pas un maniaque du travail pour le travail. Je fais donc en sorte de ne devoir faire les choses qu'une seule fois de façon à ne pas avoir à revenir dessus autrement que pour ajouter des fonctionalités non prévues à l'origine.

par Sebe » 04 févr. 2006, 10:02

Ceci posé, il serait souhaitable que tu en arrives à bien différencier les problèmes sans tout mélanger. Avant de te précipiter pour coder du PHP, commence par mettre au point tes requêtes directement en SQL soit avec phpMyAdmin, soit en local avec un outil comme par exemple MySQL Query Browser. Quand tu auras réussi à définir les requêtes te permettant d'obtenir tous les types de résultats que doit pouvoir lire l'internaute, tu pourras passer à la phase PHP et intégrer tes requêtes déjà prêtes dans lesquelles il faudra remplacer certaines valeurs "en dur" par des variables.
Salut,
D'où je viens? Certainement pas de la programmation ... c'est un peu pour cette raison que je n'ai pas de méthode et que je fais beaucoup de chose à l'envers! Depuis que je fréquente ce forum, j'ai appris beaucoup de chose et là, tu essayes de m'inculquer une méthode de travail! Ok mais ce sera pour les prochains scripts car celui-ci à l'air de fonctionner ... encore un petit test sur l'une ou l'autre année et ce sera bon, on mettra [RESOLU]!
Néanmoins, je sais très bien que je suis fatiguant par moment ... j'ai d'autres défauts aussi :lol: et c'est pour cette raison que je n'oublierai pas qu'ici on m'a permit de mener mon projet (complètement délirant pour un gus comme moi qui n'y connaissait rien) presque au bout!
Est-ce que tu comprends le pourquoi de ce que je veux dire ?
A ton avis? Il faudra certainement que tu m'expliques un peu mieux cette façon de commencer ou m'envoyer vers un tuto car j'ai un peu de mal à te suivre quand même :wink:

Merci

par Cyrano » 04 févr. 2006, 08:11

Sebe, je salue ton opiniâtreté devant les difficultés , néanmoins, je te trouve parfois un brin fatigant: pourquoi nous balances-tu du code inutile ? As-tu correctement lu et interprété mes précédentes réponses ?

En programmation, tu fais face en ce moment à deux parties :
  1. Récupérer des données dans la base de donnnées, les manipuler;
  2. Afficher les données récupérées en 1
Le premier point se fait dans un langage: le SQL
Le second point se fait en PHP pour générer un affichage en HTML

Ceci posé, il serait souhaitable que tu en arrives à bien différencier les problèmes sans tout mélanger. Avant de te précipiter pour coder du PHP, commence par mettre au point tes requêtes directement en SQL soit avec phpMyAdmin, soit en local avec un outil comme par exemple MySQL Query Browser. Quand tu auras réussi à définir les requêtes te permettant d'obtenir tous les types de résultats que doit pouvoir lire l'internaute, tu pourras passer à la phase PHP et intégrer tes requêtes déjà prêtes dans lesquelles il faudra remplacer certaines valeurs "en dur" par des variables.

Est-ce que tu comprends le pourquoi de ce que je veux dire ?

par Sebe » 04 févr. 2006, 01:01

Que je suis CON par moment! Ne trouvant pas les affectations (nom, prénom, club et catégorie) il ne tenait pas compte de l'entrée dans la table acrho_classement! J'te jure :twisted:

Voici le code modifié sans la requête
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title><?php echo $row_course['nom_course']; ?></title>
<link href="../cosmic18.css" rel="stylesheet" type="text/css">
</head>

<body>

<table width="540" border="0" cellpadding="0" cellspacing="0">
  <!--DWLayoutTable-->
  <tr>
    <td width="16" height="34">&nbsp;</td>
    <td width="504">&nbsp;</td>
    <td width="20">&nbsp;</td>
  </tr>
  <tr>
    <td height="38">&nbsp;</td>
    <td valign="top"><table width="100%"  border="1" cellpadding="0" cellspacing="0" class="cosmic18">
      <!--DWLayoutTable-->
        <tr>
          <td><div align="right"><strong>R&eacute;sultats de la course : </strong></div></td>
          <td><?php echo $row_course['nom_course']; ?></td>
          <td><div align="right"><strong>Nombre de participants : </strong></div></td>
          <td><?php echo $row_course['nbre_part']; ?></td>
        </tr>
        <tr>
          <td><div align="right"><strong>A la date du : </strong></div></td>
          <td><?php setlocale (LC_ALL,"fr_FR"); echo strftime("%A %d %B %Y",strtotime($row_course['date'])); ?></td>
          <td><div align="right"><strong>Distance : </strong></div></td>
          <td><?php echo $row_course['kilometrage']; ?></td>
        </tr>
        </table></td>
  <td>&nbsp;</td>
  </tr>
  <tr>
    <td height="16"></td>
    <td></td>
    <td></td>
  </tr>
  <tr>
    <td height="114" colspan="3" valign="top"><table width="100%"  border="1" cellpadding="0" cellspacing="0" class="cosmic18">
      <tr>
        <td><div align="center"><strong>Arr.</strong></div></td>
        <td><div align="center"><strong>Dossard</strong></div></td>
        <td><div align="center"><strong>Nom</strong></div></td>
        <td><div align="center"><strong>Pr&eacute;nom</strong></div></td>
        <td><div align="center"><strong>Club</strong></div></td>
        <td><div align="center"><strong>Cat&eacute;gorie</strong></div></td>
        <td><div align="center"><strong>Temps</strong></div></td>
        <td><div align="center"><strong>Moy/km</strong></div></td>
        <td><div align="center"><strong>Points</strong></div></td>
      </tr>
      <?php
	  $compteur = 1; 
      do 
      { 
      ?>
      <tr>
          <td><div align="right"><?php echo $compteur; ?></div></td>
          <td><div align="right"><?php echo $row_course['ref_dossard']; ?></div></td>
          <td><div align="left"><?php echo $row_course['nom']; ?></div></td>
          <td><div align="left"><?php echo $row_course['prenom']; ?></div></td>
          <td><div align="left"><?php echo $row_course['nom_cub']; ?></div></td>
          <td><div align="center"><?php echo $row_course['nom_categorie']; ?></div></td>
          <td><div align="right"><?php echo $row_course['temps']; ?></div></td>
          <td><div align="right"><?php echo $row_course['moyenne']; ?></div></td>
          <td><div align="right"></div></td>
      </tr>
      <?php
	  $compteur++;
	  }
	  while ($row_course = mysql_fetch_assoc($course)); ?>
    </table></td>
  </tr>
  <tr>
    <td height="46">&nbsp;</td>
    <td></td>
    <td></td>
  </tr>
</table>
</body>
</html>
<?php
mysql_free_result($course);
?>
N'y a-t-il pas moyen qu'il indique les entrées même si les affectations ne sont pas encore encodé?

Merci

par Sebe » 04 févr. 2006, 00:51

C'est bien le problème, je retourne le tout dans tous les sens et je ne comprend pas pourquoi d'un coté, j'ai toutes les entrées et de l'autre, je n'en ai que 2 ... je ne veux pas cela, moi!

Je vais aller pousser une pointe jusqu'à mon oreillé et demain peut-être que j'y verais plus clair!

Merci et A+

par Cyrano » 04 févr. 2006, 00:40

Je me demande ce que tu arrives à comprendre de tout ça : je t'ai dit que le résultat retourné dépendait de la requête: si la requête n'est pas bonne le résultat ne sera pas bon: donc si le résultat retourné n'est pas celui attendu, c'est que les clauses de tri de ta requête sont erronés. Quelles que soient les données enregistrées dans ta base, le problème sera toujours le même.

Donc analyse la requête par rapport aux informations que tu veux récupérer et selon la structure de tes tables.