PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 10-12-2009 15:35:51

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 188

checker :D:D

Chalut à tous.
Mon pti cervo étant en mode pause, je fais appel a vos neurone disponible big_smile

J'ai une base de données contenant plus de 6000 enreg .
Nom, prénom, adresse ..............

Pour tester mes applis, je voudrais composer une autre base de données, de même structure et contenant les memes donnéees, mais mélangées big_smile
du style :
Originale :
Nom                Prenom                  Adresse
Dupont            Pierre                     3 rue de la republique .................................................
Dupuit             Henri                      17 place de la concorde ................................................
Durant            Jose                        44 rue henri martin .......................................................

Mélangée :
Durant            Henri                        44 rue henri martin .......................................................
Dupuit            Pierre                       17 place de la concorde ................................................
Dupont           Jose                          3 rue de la republique .................................................

Vous comprenez bien que je ne peut pas mettre en ligne des informations privées

Merci d'avance pour votre aide big_smile
a++

Dernière modification par Pierrot (10-12-2009 15:37:09)


Hors ligne

#2 10-12-2009 17:43:05

Alnoss
Modérateur absent
Lieu : 06 - PACA
Inscription : 11-05-2009
Messages : 541
Site Web

Re : checker :D:D

Si je comprends bien, tu cherches a affecter a une id(random) les champs d'un autre id(random) ???
Non, la réponse n'est pas en partie dans cette phrase ^^.....

Mais bon, je ne suis pas sûr que l'approche des fêtes te soit d'une influence favorable ^^
En fait, c'est pas si propre que ça lol


MERCI de lire le mode d'emploi avant de poster !!

Hors ligne

#3 10-12-2009 18:24:41

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : checker :D:D

Saluton,
Tu fais une requête pour sélectionner toutes tes lignes et colonnes.
Tu parcours ta requête et tu charges 3 arrays, chacun avec une colonne de chaque ligne.
Tu fais un shuffle() sur deux des arrays, puis tu génères un fichier .csv en parcourant les 3 arrays //ment .
Tu crées ta nouvelle table de BD que tu charges avec ce fichier csv par LOAD DATA


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#4 10-12-2009 18:29:41

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 188

Re : checker :D:D

Alnoss->
cé koi random ???
ca existe pas, ni dans PHP ni dans SQL roll
Donc non, Non, la réponse n'est pas en partie dans cette phrase roll

Bon, y vient ce script tout fait yikes:o

Y a jamais personne pour m'aider sur ce forum roll:)
a++

Hors ligne

#5 11-12-2009 06:53:04

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : checker :D:D

<?php
$sql = "SELECT nom, prenom, adresse FROM table";
$query = mysql_query($sql);
$nom = array();
$prenom = array();
$adresse = array();
while( $res = mysql_fetch_array($mysql) ){
    $nom[] = $res['nom'];
    $prenom[] = $res['prenom'];
    $adresse[] = $res['adresse'];
}
shuffle($nom);
shuffle($prenom);
shuffle($adresse);
//A toi de les mettre dans ta nouvelle table petit feignant ;o
?>

Au passage pour monsieur qui semble ignorer l'anglais : random -> aléatoire smile
Script tout fait ? C'est pour débutant ici, on oriente, on fait pas. yikes

Hors ligne

#6 11-12-2009 09:23:46

Alnoss
Modérateur absent
Lieu : 06 - PACA
Inscription : 11-05-2009
Messages : 541
Site Web

Re : checker :D:D

Pierrot a écrit :

Alnoss->Donc non, Non, la réponse n'est pas en partie dans cette phrase roll

Si si, regarde un peu derrière la crasse ^^ a croire que l'Ajax est moins efficace tout d'un coup tongue


MERCI de lire le mode d'emploi avant de poster !!

Hors ligne

#7 11-12-2009 11:03:34

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 188

Re : checker :D:D

Bon les mecs, un peu d'originalité roll

si je dois noter ça, ça passera pas ma moyenne big_smile
a++

Hors ligne

#8 11-12-2009 12:10:21

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : checker :D:D

xTG>>en toute rigueur,  faire un mélange de 2 des 3 arrays me semble suffisant, on perd ainsi, pour chaque ligne, le lien initial entre les 3 colonnes.

Pierrot>> ne me dis pas que tu ne sais pas parcourir un tableau avec foreach et utiliser un curseur pour synchroniser ce parcours avec celui des deux autres tableaux ?
Quant à la création d'un fichier .csv, je n'y vois pas de difficulté particulière, idem pour LOAD DATA


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#9 11-12-2009 12:38:34

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : checker :D:D

Oui tu as raison Kris. smile
Surtout qu'en mélangeant les trois on obtient plus de probabilité de retrouver un enregistrement inchangé.

Pierrot >> si tu arrives à noter ce que l'on fait c'est que tu sais ce qui est faisable donc fais le. ^_-

Hors ligne

#10 11-12-2009 12:51:51

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 188

Re : checker :D:D

>>Pierrot >> si tu arrives à noter ce que l'on fait c'est que tu sais ce qui est faisable donc fais le. ^_-
bah, evidement que je sais que c'est faisable roll
Mais, vous avez le cervo tordu wink
Moaaaaaaa, je ne ferai pas comme vous big_smile
je ferais tout en SQL:P
a++

Hors ligne

#11 11-12-2009 13:12:29

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : checker :D:D

Il m'étonnerait beaucoup qu'une solution tout en SQL (avec tables temporaires j'imagine) soit moins gourmande en ressources qu'un SELECT et un LOAD DATA.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#12 11-12-2009 13:31:40

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 188

Re : checker :D:D

Pourquoi une table temporaire ?:rolleyes:
a++

Hors ligne

#13 11-12-2009 14:03:11

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : checker :D:D

Expose ta solution TOUT SQL, je te dirais, objectivement, ce que j'en pense.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#14 11-12-2009 14:07:39

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 188

Re : checker :D:D

Tu penses encore a ton age ??? big_smile



CREATE PROCEDURE shuffletable(IN nb INT)
BEGIN
DECLARE i INT DEFAULT 0;
 
  REPEAT
           SET i := i + 1;
    INSERT INTO individu2 VALUES (NULL,
    (SELECT TYPE FROM individu ORDER BY rand() LIMIT 0,1),
    (SELECT matricule FROM individu ORDER BY rand() LIMIT 0,1),
    (SELECT nom FROM individu ORDER BY rand() LIMIT 0,1),
    (SELECT prenom FROM individu ORDER BY rand() LIMIT 0,1),
    (SELECT id_lieu FROM individu ORDER BY rand() LIMIT 0,1),
    (SELECT etat FROM individu ORDER BY rand() LIMIT 0,1));
  UNTIL i = nb END REPEAT;
  SELECT 'Nombre d\'enregistrement(s) insere(s):' + i;
END
 

CALL shuffletable(1999999)

Voilou wink

J'ai une table de test avec plus d'un millions d'enreg's wink:D
a++

Dernière modification par Pierrot (11-12-2009 14:09:58)

Hors ligne

#15 11-12-2009 14:14:22

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : checker :D:D

C'est hyper-gourmand en ressources, tu fais 6*1999999 SELECT et 1999999 INSERT, contre 1 SELECT et un LOAD DATA.
Il n'y a pas photo.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#16 11-12-2009 14:20:02

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 188

Re : checker :D:D

>>C'est hyper-gourmand en ressources

peut être (c'est même sur;)), mais le résultat est instantané sur mon serveur wink
Et en plus, je crois que tu ne sais pas compter roll

a++

Hors ligne

#17 11-12-2009 15:14:58

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : checker :D:D

A ne pas recommander sur un serveur d'hébergement mutualisé, surtout que rand() et LIMIT augmentent encore la gourmandise du bouzin.
Je sais bien que la mode est au SQL épais, (j'abonde d'ailleurs dans ce sens en matière applicative) mais pas dans n'importe quel contexte.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#18 11-12-2009 16:14:45

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : checker :D:D

Je suis désolé Pierrot mais j'appelle cela un gros bordel...
Je rejoins en tout point les arguments de Kris.

Certes cela fait joli de tout faire en SQL... Mais il y a des limites...

Hors ligne

#19 11-12-2009 16:42:47

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : checker :D:D

Non, pourquoi tout de suite les gros mots ?
C'est juste inadapté à certains contextes, par contre, intellectuellement c'est toujours intéressant de rappeler, à l'inverse, qu'on sous-utilise généralement les capacités procédurales de SQL.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#20 11-12-2009 17:02:48

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 188

Re : checker :D:D

>>Je suis désolé Pierrot mais j'appelle cela un gros bordel...
bah nan roll
ton truc, c'est un gros bordel et qui marche pas en plus big_smile:D

>>C'est juste inadapté à certains contextes,
Mais justement, dans mon contexte, c'est tout à fait adapté wink
cette fonction est appeler une fois pour générer mes données et puis c'est tout wink

>>qu'on sous-utilise généralement les capacités procédurales de SQL.
et ca, c'est bien vrai wink
y a des tas de dev qui pissent un max de lignes de php bien souvent faisable en une seul requête wink

a++

ps : Je suis d'accord avec vous, c'est très consomateur de ressources, mais c'etait mon amusement du jour tongue:p big_smile

Hors ligne

#21 11-12-2009 17:58:25

Alnoss
Modérateur absent
Lieu : 06 - PACA
Inscription : 11-05-2009
Messages : 541
Site Web

Re : checker :D:D

Pierrot a écrit :

ps : Je suis d'accord avec vous, c'est très consomateur de ressources, mais c'etait mon amusement du jour tongue:p big_smile

Et c'est là le plus important : s'amuser wink


MERCI de lire le mode d'emploi avant de poster !!

Hors ligne

#22 12-12-2009 15:29:19

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : checker :D:D

Oui c'est sûr, si on ne s'amuse plus où va-t-on ? smile

Par contre sujet à mettre dans les annales, l'auteur demande de l'aide, réfute toutes les solutions et apporte son code. tongue

Par contre je m'intéresserai sur le côté du pourquoi mon code ne fonctionnerait pas ? J'ai beau le regarder en large et en travers je ne pige pas.

Hors ligne

#23 12-12-2009 17:27:03

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 188

Re : checker :D:D

xTg->
je vais te répondre poing par poing wink:D :
1) je n'ai pas besoin d'aide wink
J'ai commencé a coder quand tu n'étais pas encore du jus de couilles big_smile:D ( à mettre dans les anal big_smile )
Si j'ai poster ce topic, c'était pour faire vivre ce forum qui me semble moribond wink
il y a quelques années, le nombre de topic se comptait par dizaine par jour.
Maintenant, qd il y a 2 topic's, c'est le bout du monde.

2) Pourquoi ton code ne fonctionne pas ???
parce qu'il n'est pas fini wink
tu ne fais que lire un table et mélanger des enreg wink

Et le mien peut générer des million d'enreg, et ce, en une ligne de code wink
Et pour preuve, c'est le mien que j'ai utilisé wink

a++

Dernière modification par Pierrot (12-12-2009 17:27:30)

Hors ligne

#24 12-12-2009 17:59:56

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : checker :D:D

Je me passerai de répondre tellement tu es narcissique...

Hors ligne

#25 12-12-2009 18:51:28

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : checker :D:D

C'est Pierrot, ça, gourmand et tout en nuances.
L'envers du décor de notr' Raf !

A ta décharge, xTG, tu ne pouvais pas deviner que derrière sa question, comme souvent, se cachait un challenge.

Ah ces anciens nouveaux, je plains le personnel des maisons de retraite qui vont bientôt les recueillir !!!


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

Pied de page des forums