Partage
  • Partager sur Facebook
  • Partager sur Twitter

structure table

nb de champ trop important ?

    2 juillet 2010 à 9:45:23

    bonjour,

    j'utilise une table pour faire remonter des résultats :
    CREATE TABLE `user` (
      `ID` smallint(6) NOT NULL auto_increment,
      `CLASSEMENT` int(4) NOT NULL default '0',
      `ETABLISSEMENT` varchar(50) NOT NULL default '',
      `NOM` varchar(50) character set latin1 collate latin1_general_cs default NULL,
      `PRENOM` varchar(50) character set latin1 collate latin1_general_cs default NULL,
      `ACT` tinyint(4) NOT NULL default '0',
      `CAT` tinyint(4) NOT NULL default '0',
      `CPT` tinyint(4) NOT NULL default '0',
      PRIMARY KEY  (`ID`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    


    cette structure m'oblige à rentrer un par un tous les résultats : 1er envoi, 2ème, envoi ... :colere:
    je souhaite pouvoir rentrer les 50 premiers en une seule fois, je pensais donc créer un champ par classement : champ 1er, champ 2eme ... >_< et comme je peux avoir jusqu'à 150 classements possible, ma table va etre énooorme ! :waw:

    y a-t-il une autre possibilité ?
    merci de vos conseils ?

    ps : desolé pour le doublon, pb au chargement !
    • Partager sur Facebook
    • Partager sur Twitter
      2 juillet 2010 à 10:29:42

      Salut,

      Sur une idée de angelo, je déplace ce topic vers le forum « base de données ». Je ne m'étais pas apperçu qu'il était en PHP. Mais effectivement, il aura plus de chances d'avoir une bonne réponse ici. :)

      Bonne continuation !
      GuilOooo
      • Partager sur Facebook
      • Partager sur Twitter
      J'ai déménagé sur Zeste de savoir — Ex-manager des modérateurs.
        2 juillet 2010 à 10:43:55

        merci GuilOooo

        @dufo: personnellement je n'ai pas compris ce que tu souhaitais faire
        Sans un contexte clair, j'aurai du mal à t'aider :)
        • Partager sur Facebook
        • Partager sur Twitter
          2 juillet 2010 à 10:55:55

          salut Angelo,

          actuellement je fonctionne comme ça :
          // Une connexion classique à un serveur MySQL
          include'connexionbdd.php';
          
          
          			// Une petite fonction qui allège un peu les codes du traitement d'un formulaire. Elle sert ici plus d'exemple qu'autre chose.
          			function securisation($variable)
          			{
          				$variable = mysql_real_escape_string(stripslashes($variable)); //intégration de stripslashes pour éviter les slashs à l'affichage des données ! 
          				return $variable ;
          			}
          
          ?>
          
          <?php
          
          // Le traitement du formulaire d'ajout d'un message.
          if(isset($_POST['ACT'], $_POST['CAT'], $_POST['CLASSEMENT'], $_POST['NOM'], $_POST['PRENOM'], $_POST['ETABLISSEMENT'], $_POST['CPT'])) // Si le formulaire est envoyé.
          {
              if(!empty($_POST['CLASSEMENT']) AND !empty($_POST['ACT']) AND !empty($_POST['ETABLISSEMENT']) AND !empty($_POST['CAT']) AND !empty($_POST['CPT']))// Si tous les champs ont été remplis correctement, on utilse EMPTY car POST est une superglobale
              {
                  $ACT = securisation($_POST['ACT']);
                  $ETABLISSEMENT = securisation($_POST['ETABLISSEMENT']);
                  $NOM = securisation($_POST['NOM']);
                  $PRENOM = securisation($_POST['PRENOM']);
                  $CAT = securisation($_POST['CAT']);
                  $CLASSEMENT = securisation($_POST['CLASSEMENT']);
                  $CPT = securisation($_POST['CPT']);
                  
                  // Et une insertion dans la table user (résultat).
          		mysql_query("INSERT INTO user VALUES('', '$CLASSEMENT', '$ETABLISSEMENT', '$NOM', '$PRENOM', '$ACT', '$CAT', '$CPT')") OR die(mysql_error());
              }
              else // Si le visiteur n'a pas correctement saisi tous les champs, alors on le lui indique.
              {
                  echo '<h3>Erreur : vous n\'avez pas correctement saisi les champs obligatoires.</h3>' ;
              }
          }
          
          ?>
          
          
          <div id="page">
          <form method="post" action="formulaire_resultats.php">
          
          <h3>Les résultats UNSS des établissements du district de Louviers</h3>
          
          Voici un formulaire pour faire remonter les résultats du district et au dessus ! n'hésitez pas remplir les résultats de votre établissement dans les championnats 
          départemental, académique et même au France pour que le district suive vos bons résultats !<br />
          <br />
          Vous devez saisir tous les champs (sauf "noms" et "prénoms") pour que votre enregistrement soit pris en compte !<br />
          Si vous avez un championnat à 6 équipes, vous devez faire 6 enregistrements !<br />
          Pour vérifier que votre saisie a bien été enregistrée, Le dernier enregistrement est affiché en bas de page !<br />
          Suite à votre enregistrement, les résultats sont affichés automatiquement dans la page des résultats correspondant à l'activité dans les pages profs et élèves !<br />
          
          <fieldset>
                 <legend>Résultats  :</legend> <!-- Titre du fieldset -->
          
          <p>
          													<label for="activites">Activités</label> : 
          													
          	<select name="ACT" id="ACT" tabindex="10">
          		<optgroup label="Sports Collectifs">
          			<option value="3">Basket ball</option>
          			<option value="5">Volley ball</option>
          			<option value="7">Football</option>
          			<option value="4">Handball</option>
          			<option value="8">Futsal</option>
          			<option value="6">Rugby</option>
          		</optgroup>
          		<optgroup label="Sports Individuels">
          			<option value="10">Badminton</option>
          			<option value="11">Tennis de Table</option>
          			<option value="12">Athlétisme</option>
          			<option value="13">Cross</option>
          			<option value="14">RAID</option>
          			<option value="16">Equitation</option>
          			<option value="18">Judo</option>
          			<option value="19">Lutte</option>
          			<option value="17">Boxe Française</option>
          			<option value="autre">Autre</option>
          		</optgroup>
          	</select>
          </p>
          
          															<legend>Catégories :</legend>
          	   <p>
          	   <input type="radio" name="CAT" value="1" id="benjamin garcon" tabindex="20"/> <label for="benjamin garcon">Benjamins Garçons</label><br />
                 <input type="radio" name="CAT" value="2" id="benjamines filles" /> <label for="benjamines filles">Benjamines Filles</label><br />
                 <input type="radio" name="CAT" value="3" id="minimes garcons" /> <label for="minimes garcons">Minimes garçons</label><br />
                 <input type="radio" name="CAT" value="4" id="minimes filles" /> <label for="minimes filles">Minimes Filles</label><br />
                 <input type="radio" name="CAT" value="5" id="cadets garcons" /> <label for="cadets garcons">Cadets garçons</label><br />
                 <input type="radio" name="CAT" value="6" id="cadettes filles" /> <label for="cadettes filles">Cadettes Filles</label><br />
          	   </p>
          
          													<label for="classement">Classement :</label> : 
          													
          		<input type="hidden" name="CLASSEMENT[]" id="CLASSEMENT" tabindex="30" value="1">1er
          		<label for="etablissement">Etablissement</label> :
          		<input type="text" name="ETABLISSEMENT" id="ETABLISSEMENT" size="50" tabindex="60" /><br />
          
          		<input type="hidden" name="CLASSEMENT[]" id="CLASSEMENT" tabindex="30" value="2">2er
          		
          		<label for="etablissement">Etablissement</label> :
          		<input type="text" name="ETABLISSEMENT" id="ETABLISSEMENT" size="50" tabindex="60" /><br />
          				
          	   <fieldset>
          
          											<legend>Facultatif :</legend> <!-- Titre du fieldset -->
          	
          		<p>
          		<label for="noms">Nom</label> :
          		<input type="text" name="NOM" id="NOM" size="25" tabindex="40" />
          		</p>
          		
          		<p>
          		<label for="prenoms">Prénom</label> :
          		<input type="text" name="PRENOM" id="PRENOM" size="25" tabindex="50" />
          		</p>
          		</fieldset>
          
          	
          <p>
          											<label for="championnat">championnat</label> :
          		<select name="CPT" id="CPT" tabindex="70">
          			   <option value="1">District de Louviers</option>
                         <option value="2">Départemental</option>
                         <option value="3">Académique</option>
                         <option value="4">Inter-Académique</option>
                         <option value="5">France</option>
          		</select>
          </p>
          
          
          <p>
                 <input type="submit" /> 
          </p>
          	</fieldset>
          
          	
          </div>
          <?php include 'pied.php'; ?>
          
          
          <!-- Vérification des données du dernier enregistrement.-->
          <?php
           
          
           // On se connecte d'abord à MySQL :
          include'connexionbdd.php';
           
          // On utilise la requête suivante pour récupérer les 10 derniers messages :
          $reponse = mysql_query("SELECT * FROM user ORDER BY ID DESC LIMIT 0,1");
           
           
           
          // Puis on fait une boucle pour afficher tous les résultats :
          while ($donnees = mysql_fetch_array($reponse) )
          {
          ?>
          
          <div class="box4">
          
          Récapitulatif du dernier enregistrement :<br /><br />
          <strong>Etablissement : <?php echo $donnees['ETABLISSEMENT']; ?> : classement : <?php echo $donnees['CLASSEMENT']; ?>e<br />
          <?php echo $donnees['noms']; ?> <?php echo $donnees['PRENOM']; ?></strong><br />
          
          </div>
          


          cela m'oblige, quand je remonte mes résultats, à faire une saisie à chaque classement ! 1er envoyer, 2ème envoyer ... en saisissant à chaque fois les différents champs du formulaire.

          je voudrais remonter plusieurs classements en une seule saisie !

          soit modifier ma structure de table en multipliant les champs :
          champ classement 1er
          champ classement 2eme
          champ classement 3eme
          ...
          et dans mon formulaire, j'aurais pour l'activite, le championnat, la catégorie une seule saisie pour avoir mon classement complet ! le problème est que je peux avoir 150 classements possibles, ce qui devient galère !

          je me demandais si il était possible à partir de ma table actuelle et réaliser un formulaire où je peux rentrer plusieurs fois le classement en une saisie ! le problème se situe au niveau de l'envoi des données en PHP car j'ai un champ ID donc il ne vaut me prendre qu'un seul classement par saisie !

          ???
          • Partager sur Facebook
          • Partager sur Twitter
            2 juillet 2010 à 11:07:27

            en résumé, tu souhaites pouvoir faire une insertion multiple dans ta table au lieu de te taper les insertions une à une ?

            Si c'est le cas, le mieux (je pense) est de faire un fichier avec le nom des "sportifs", leur classement, leur activité, leur catégorie. Tu parcours ce fichier et pour chaque ligne, tu va faire une insertion dans la table
            • Partager sur Facebook
            • Partager sur Twitter
              2 juillet 2010 à 11:18:24

              non pas vraiment, le classement n'est pas associé à un nom ou une activité, la classement fait suite à des championnats différents donc il change tout le temps !

              en gardant ma structure actuelle, je voudrais que mon formulaire se présente comme ça
              formulaire :
              champ ID
              champ "activité" : menu déroulant
              champ "catégorie" : menu déroulant
              champ "classement" : hidden : 1er : "champ établissement" : menu déroulant
              champ "classement" : hidden : 2eme : "champ établissement" : menu déroulant
              champ "classement" : hidden : 3eme : "champ établissement" : menu déroulant
              ... valider
              


              en retour dans ma BDD, j'ai un ID différents pour chaque classement rentré, soit :
              ID =>1
              activité =>basket
              catégorie =>benjamin
              classement =>1
              etablissement => truc
              
              ID =>2
              activité =>basket
              catégorie =>benjamin
              classement =>2
              etablissement => trucmuch
              
              ID =>3
              activité =>basket
              catégorie =>benjamin
              classement =>3
              etablissement => bidule
              
              ...
              


              le tout en une seule saisie !
              cela me semble impossible de faire plusieurs ID en une seule validation, d'où ma question de départ sur la structure de ma table !

              cordialement
              • Partager sur Facebook
              • Partager sur Twitter

              structure table

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown