Condition assez complexe

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 : Condition assez complexe

par Ryle » 14 juin 2007, 14:30

En fait, la charge au niveau de la base de données sera la même que tu fasses un insert multiple ou plusieurs insert consécutifs. En revanche l'insert multiple permet de réduire les communications entre le client et le serveur... c'est là dessus que tu vas pouvoir gagner un peu sur de gros volumes :)

Concernant les quotes inversées ` c'est du spécifique mysql, d'avantage destiné - selon moi - à rattrapper les erreurs des dba sans imagination, qui abusent des mots clés protégés du langage :) C'est pas plus judicieux que de créer des variables nommée $while, $for ou $function en php... Le mieux est de choisir intelligement ses libellés pour ne pas avoir à utiliser ces apostrophes :)

par Snipy » 14 juin 2007, 12:47

Oui, en règle générale, moins tu fais de requètes SQL, mieux ton serveur se porte.
Tu veux qu'en utilisant cette "fonction" pour inserer plusieurs entré c'est compté comme une seule requete (certes grosse)

par Sékiltoyai » 13 juin 2007, 17:18

Sékiltoyai> Y a t'il un gain de performance notable ? En tout cas merci du conseil.
Oui, en règle générale, moins tu fais de requètes SQL, mieux ton serveur se porte.
Et sinon pouruqoi mettre des ` ` aux champs ?
Ca permet de dire au serveur SQL que ce sont des noms de tables ou de champs et non des noms spéciaux. C'est utile quand tu utilises un mot réservé pour désigner un nom de table ou de champ...

par Snipy » 13 juin 2007, 16:38

Sékiltoyai> Y a t'il un gain de performance notable ? En tout cas merci du conseil.

Et sinon pouruqoi mettre des ` ` aux champs ?

par Sékiltoyai » 13 juin 2007, 15:42

il faut créer une deuxième connexion à la base de données et l'utiliser pour ces instructions "Insert into equipes ...".
Non, pas une deuxième connexion, tu peux très bien faire plusieurs requètes sur une même connexion sans influer sur le résultat des autres. Il faut juste prévoir plusieurs ressources résultats dans le cas de plusieurs requètes SELECT.
Sinon, au passage, si tu as plusieurs insertions à faire en même temps, tu peux utiliser la syntaxe

Code : Tout sélectionner

INSERT INTO `table`(`field1`,`field2`,`field3`, ...) VALUES('val11','val12','val13',...),('val21','val22','val23',...),...

par Snipy » 13 juin 2007, 14:16

Merci pour vos réponses, je vais regarder ça dans l'après midi, et je vous tiens au courant. :)

par Henri » 13 juin 2007, 09:36

La solution de Sékiltoyai te donne une piste intéressante à suivre.

Toutefois, attention : si le code qu'il décrit comme blablabla consiste à insérer des enregistrements puisque te tu parles de "compléter à 8", il faut créer une deuxième connexion à la base de données et l'utiliser pour ces instructions "Insert into equipes ...".

par Sékiltoyai » 12 juin 2007, 18:07

Les serveurs SQL ont des fonctions, il faut les utiliser :
  $request = mysql_query("SELECT id_champ, COUNT(*) AS cnt FROM equipe GROUP BY id_champ");

  while($fetch = mysql_fetch_assoc($request))
  {
     while($fetch['cnt'] < 8)
     {
        Blablabla
        $fetch['cnt']++;
     }
  } 

par Klomac » 12 juin 2007, 17:36

Je dirais ceci (peut-être qu'il y a plus simple) :
<?php
  $request = mysql_query("SELECT id_champ FROM equipe");
  $array = array();
  while ($fetch = mysql_fetch_assoc($request)) array_push($array,$fetch['id_champ']);
  $countValues = array_count_values($array);

  foreach ($array AS $value)
  {
     if ($countValues[$value] < 8) { Blablabla }
  }

Condition assez complexe

par Snipefire » 12 juin 2007, 17:31

Bonjour à tous,
Voila je ne sais pas trop comment m'y prendre.

J'ai une table équipe avec un des champs : id_champ (championnat).

J'aimerais compter le nombre d'entrée qu'il y a pour chaque id_champ existant, et à chaque fois que id_champ < 8 créer le nombre adéquat d'équipe pour qu'il y en ai 8 avec le même id_champ.

J'arrive pas trop a faire la liaison condition boucle requête sur ce coup la :oops:

Si vous avez aps compris (j'imagine que c'est pas très clair quant on a pas les tables devant soi, n'hésitez pas afin que j'explique plus clairement.

Merci d'avance pour votre aide;
Bonne soirée