Forum de FilmDeCulte

Le forum cinéma le plus méchant du net...
Nous sommes le 14 Nov 2024, 18:23

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 23 messages ]  Aller à la page 1, 2  Suivante
Auteur Message
 Sujet du message: Question MySQL / PHP
MessagePosté: 22 Avr 2009, 10:37 
Hors ligne
Vaut mieux l'avoir en journal
Avatar de l’utilisateur

Inscription: 04 Juil 2005, 15:21
Messages: 22905
Localisation: Paris
J'ai un petit outil à faire qui doit taper dans une base MySQL (en gros, il faut modifier en masse le champs dans une table, à partir d'un fichier xls/csv/txt)...

Avez-vous des conseils ? Quelqu'un peut m'aider ? Pouvez-vous me diriger vers un site, ou mieux un forum, sur lequel je peux trouver une aide ?

Merci d'avance

_________________
Que lire cet hiver ?
Bien sûr, nous eûmes des orages, 168 pages, 14.00€ (Commander)
La Vie brève de Jan Palach, 192 pages, 16.50€ (Commander)


Haut
 Profil  
 
 Sujet du message: Re: Question MySQL / PHP
MessagePosté: 22 Avr 2009, 11:29 
Hors ligne
Sacré trou du cul
Avatar de l’utilisateur

Inscription: 19 Juin 2005, 22:59
Messages: 11249
C'est simple avec un fichier csv (ou txt), voilà ce que j'ai fait pour un site mobile (pour gérer les terminaux) :

Code:
/*Ca c'est parce que j'ai fait un système d'upload avant*/
$fichier=$_FILES['fichiercsv']['tmp_name'];
if (file_exists($fichier))
   { 
   $fp = fopen("$fichier", "r"); 
   } 
else
   { 
   /*le fichier n'existe pas*/ 
   echo "Fichier introuvable !<br />Importation stoppée."; 
   exit(); 
   } 
echo '<table><tr><th>Terminal</th><th>User Agent</th><th>Langage</th><th>Categorie</th><th>Largeur</th><th>Hauteur</th></tr>';
while (($liste = fgetcsv($fp,4096,";")) != FALSE)
   { 
   /*Tant qu'on n'atteint pas la fin du fichier on lit une ligne*/   
   /*On récupère les champs séparés par , dans liste*/ 
   $marque = trim(ucfirst(strtolower($liste[0]))); 
   $modele = trim($liste[1]);
   $libterminal = ''.$marque.' '.$modele.'';          
   if (!empty($useragent))
      {
      $sql = 'INSERT INTO table...';
      $result= mysql_query($sql); 
      if(mysql_error())
         { 
         } 
      else
         { 
         echo '<tr><td>'.$libterminal.'</td><td>'.$useragent.'</td><td>'.$langage.'</td><td>'.$categorie.'<td>'.$largeurecran.'</td><td>'.$hauteurecran.'</td></tr>';
         }
      }
   }
fclose($fp); 
echo '</table>';


En fait t'as juste le fopen et la boucle avec le fgetcsv, sinon rien que du très classique ! Mon code est même un poil plus complexe que ça, car si y'a un fichier xml qui existe pour un terminal, il va également le récupérer... Si ton fichier est très gros, le mieux c'est de le découper (y'a des logiciels pour ça je crois) ou sinon tu scriptes le découpage.

_________________
Delirium Tremens


Haut
 Profil  
 
 Sujet du message: Re: Question MySQL / PHP
MessagePosté: 22 Avr 2009, 12:46 
Hors ligne
Expert
Avatar de l’utilisateur

Inscription: 04 Juil 2005, 14:45
Messages: 1222
Localisation: --> ici <--
L'interface PHPMyAdmin permet de le faire. C'est ce que j'utilise pour le site des tops par exemple pour faire du chargement massif de films/realisateurs.

Je n'ai pas d'autres exemples gratuits en tete

_________________
Captain phpBB - kikoo lol mdr !!!!!


Haut
 Profil  
 
 Sujet du message: Re: Question MySQL / PHP
MessagePosté: 22 Avr 2009, 14:33 
Hors ligne
Vaut mieux l'avoir en journal
Avatar de l’utilisateur

Inscription: 04 Juil 2005, 15:21
Messages: 22905
Localisation: Paris
Captain N. a écrit:
L'interface PHPMyAdmin permet de le faire. C'est ce que j'utilise pour le site des tops par exemple pour faire du chargement massif de films/realisateurs.

Je n'ai pas d'autres exemples gratuits en tete


Merci pour votre aide...

Pour l'upload d'un fichier xls, je passe aussi par phpmyadmin.

Mais là il s'agit de modifications de données qui existent déjà dans la base.

Pour plus de précision, j'ai une table USER, qui contient notamment les champs suivants :

user_id
user_name
user_login

Le login est de type Gxxxxxx (ou autre), et il va être changé en Yxxxxxx

Je sais faire la modif pour un user (UPDATE USER SET, etc)... Mais là il me faudrait un programme qui fasse la modif en masse, à partir d'un fichier xls, csv, txt...

Ce fichier xls va contenir les colonnes suivante : user_id, user_login, user_new_login

_________________
Que lire cet hiver ?
Bien sûr, nous eûmes des orages, 168 pages, 14.00€ (Commander)
La Vie brève de Jan Palach, 192 pages, 16.50€ (Commander)


Haut
 Profil  
 
 Sujet du message: Re: Question MySQL / PHP
MessagePosté: 22 Avr 2009, 14:49 
Hors ligne
Expert
Avatar de l’utilisateur

Inscription: 04 Juil 2005, 14:45
Messages: 1222
Localisation: --> ici <--
Je vais repondre a coté de la plaque, mais est-ce que tu ne peux pas alors utiliser la fonction SUBSTRING de SQL ?

Une requete du style

Code:
UPDATE TABLE_USER SET USERNAME=CONCAT('Q', SUBSTRING(USERNAME, 1))

ca devrait marcher


SUBSTRING(USERNAME, 1) devrait de retourner le valeur de la colonne USERNAME sans le premier caractere
CONCAT permettra de concatener 'Q' avec le reste de SUBSTRING

_________________
Captain phpBB - kikoo lol mdr !!!!!


Haut
 Profil  
 
 Sujet du message: Re: Question MySQL / PHP
MessagePosté: 22 Avr 2009, 17:26 
Hors ligne
Vaut mieux l'avoir en journal
Avatar de l’utilisateur

Inscription: 04 Juil 2005, 15:21
Messages: 22905
Localisation: Paris
Captain N. a écrit:
Je vais repondre a coté de la plaque, mais est-ce que tu ne peux pas alors utiliser la fonction SUBSTRING de SQL ?

Une requete du style

Code:
UPDATE TABLE_USER SET USERNAME=CONCAT('Q', SUBSTRING(USERNAME, 1))

ca devrait marcher


SUBSTRING(USERNAME, 1) devrait de retourner le valeur de la colonne USERNAME sans le premier caractere
CONCAT permettra de concatener 'Q' avec le reste de SUBSTRING


Ouais... Mais ça marche que si tous les logins ont effectivement la même forme (tu retires la première lettre et la remplace par une autre, si j'ai bien compris). Alors qu'il peut y avoir des exceptions...
La majorité des logins passeront de Gxxxxxx à Yxxxxxx, mais il y aura quand même quelques dizaines (centaines) d'exceptions....


En fait, je pense que je peux reprendre le petit formulaire de Dédé, et le modifier comme suit.

Pour chaque ligne, j'extrais tout simplement les variable $ancien_login et $nouveau_login.

Et ensuite, je fais un "UPDATE table_user set login=$nouveau_login where login=$ancien_login

SI je me trompe pas, la moulinette cherche la ligne qui contient l'ancien login, et le remplace par le nouveau. Et du coup, j'ai même plus besoin du user_id dans mon fichier xls.

_________________
Que lire cet hiver ?
Bien sûr, nous eûmes des orages, 168 pages, 14.00€ (Commander)
La Vie brève de Jan Palach, 192 pages, 16.50€ (Commander)


Haut
 Profil  
 
 Sujet du message: Re: Question MySQL / PHP
MessagePosté: 23 Avr 2009, 10:26 
Hors ligne
Sacré trou du cul
Avatar de l’utilisateur

Inscription: 19 Juin 2005, 22:59
Messages: 11249
Voilà, par contre, je serai toi je garderai le user_id, sinon requête trop lourde sans index (et même avec un index fulltext ce sera plus lourd qu'un index numéraire), charge inutile du serveur...

_________________
Delirium Tremens


Haut
 Profil  
 
 Sujet du message: Re: Question MySQL / PHP
MessagePosté: 23 Avr 2009, 10:30 
Hors ligne
Expert
Avatar de l’utilisateur

Inscription: 04 Juil 2005, 14:45
Messages: 1222
Localisation: --> ici <--
Dlrm Trmns a écrit:
Voilà, par contre, je serai toi je garderai le user_id, sinon requête trop lourde sans index (et même avec un index fulltext ce sera plus lourd qu'un index numéraire), charge inutile du serveur...


Je suis du meme avis que le monsieur. Mieux vaut se baser sur la clé primaire que sur la valeur du texte du login name
L'autre risque de se baser sur le login name, c'est le risque de peter une contrainte d'unicité de ta table et de foirer la migration de ta table

_________________
Captain phpBB - kikoo lol mdr !!!!!


Haut
 Profil  
 
 Sujet du message: Re: Question MySQL / PHP
MessagePosté: 13 Aoû 2009, 15:07 
Hors ligne
Vaut mieux l'avoir en journal
Avatar de l’utilisateur

Inscription: 04 Juil 2005, 15:21
Messages: 22905
Localisation: Paris
Donc, résultat des courses : mon petit script fonctionne bien (sans aucune protection, ni rien, il modifie brutalement), il a servi une fois (et avec succès)... Avant d'être remplacé par un plus gros outil qui passe par l'API de l'application.
C'était bien la peine que je m'emmerde...

_________________
Que lire cet hiver ?
Bien sûr, nous eûmes des orages, 168 pages, 14.00€ (Commander)
La Vie brève de Jan Palach, 192 pages, 16.50€ (Commander)


Haut
 Profil  
 
 Sujet du message: Re: Question MySQL / PHP
MessagePosté: 09 Déc 2011, 13:27 
Hors ligne
Le quoteur fou
Avatar de l’utilisateur

Inscription: 23 Juil 2005, 17:40
Messages: 11786
Localisation: Hill Valley
Image

Question de débutant

J'ai 100 lignes dans une table d'une base de données MySql
J'extrais de ma table les 10 dernières lignes.
"SELECT * FROM tournois ORDER BY IDtournois DESC LIMIT 10"

Je peux les afficher avec une boucle Do While. Ca donne une page qui se présente comme ça :
100° ligne
99° ligne
98° ligne
(...)
91° ligne

Comment je fais pour les afficher dans l'ordre inverse ?
91° ligne
92°
(...)
100°


(php5)

_________________
Tennis de Table Bordeaux


Haut
 Profil  
 
 Sujet du message: Re: Question MySQL / PHP
MessagePosté: 09 Déc 2011, 13:43 
Hors ligne
Sacré trou du cul
Avatar de l’utilisateur

Inscription: 19 Juin 2005, 22:59
Messages: 11249
Code:
SELECT * FROM tournois ORDER BY IDtournois ASC LIMIT 90,10

_________________
Delirium Tremens


Haut
 Profil  
 
 Sujet du message: Re: Question MySQL / PHP
MessagePosté: 09 Déc 2011, 14:10 
Hors ligne
Expert
Avatar de l’utilisateur

Inscription: 18 Aoû 2005, 23:40
Messages: 19464
Localisation: Rebirth Island
A noter que le limit peut être très gourmand : en faisant 90-10, MySQL va devoir quand meme parser les 89 premieres lignes qu'on ne veut pas. Je serais plutôt d'avis de laisser la requete telle qu'elle et de parcourir la liste de résultats à l'envers côté PHP.

Mais si la volumétrie de données n'évolue pas je pinaille, sur 100 enregistrements, tu verras pas trop de différence.


Haut
 Profil  
 
 Sujet du message: Re: Question MySQL / PHP
MessagePosté: 09 Déc 2011, 15:03 
Hors ligne
Le quoteur fou
Avatar de l’utilisateur

Inscription: 23 Juil 2005, 17:40
Messages: 11786
Localisation: Hill Valley
Delirium Tremens a écrit:
Code:
LIMIT 90,10

En fait, j'affiche les 10 dernières tables d'une table dont le nombre de lignes est variable (j'en ajoute en permanence). Donc ce n'est pas toujours à partir de la 91° ligne.
Comment je fais dans ce cas là ?


deudtens a écrit:
laisser la requete telle qu'elle et de parcourir la liste de résultats à l'envers côté PHP.

C'était l'idée. Mais je ne sais pas la parcourir à l'envers côté php.

_________________
Tennis de Table Bordeaux


Haut
 Profil  
 
 Sujet du message: Re: Question MySQL / PHP
MessagePosté: 09 Déc 2011, 15:33 
Hors ligne
Sacré trou du cul
Avatar de l’utilisateur

Inscription: 19 Juin 2005, 22:59
Messages: 11249
rotary [Bot] a écrit:
Delirium Tremens a écrit:
Code:
LIMIT 90,10

En fait, j'affiche les 10 dernières tables d'une table dont le nombre de lignes est variable (j'en ajoute en permanence). Donc ce n'est pas toujours à partir de la 91° ligne.
Comment je fais dans ce cas là ?

Ok j'ai eu un doute en répondant, dans ce cas tu fais comme deud le propose, essaye peut-être avec un array_reverse sur ta fonction "mysql_fetch_assoc" ou "mysql_fetch_row"...

_________________
Delirium Tremens


Haut
 Profil  
 
 Sujet du message: Re: Question MySQL / PHP
MessagePosté: 09 Déc 2011, 17:45 
Hors ligne
Expert
Avatar de l’utilisateur

Inscription: 18 Aoû 2005, 23:40
Messages: 19464
Localisation: Rebirth Island
rotary [Bot] a écrit:
C'était l'idée. Mais je ne sais pas la parcourir à l'envers côté php.


File ta boucle actuelle et je te la renverse.


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 23 messages ]  Aller à la page 1, 2  Suivante

Heures au format UTC + 1 heure


Articles en relation
 Sujets   Auteur   Réponses   Vus   Dernier message 
Aucun nouveau message non-lu dans ce sujet. Petite question MySQL

Cosmo

4

1092

28 Avr 2008, 20:40

Delirium Tremens Voir le dernier message

Aucun nouveau message non-lu dans ce sujet. Requête en MySQL (une de plus)

Cosmo

9

1482

10 Fév 2011, 09:38

deudtens Voir le dernier message

Aucun nouveau message non-lu dans ce sujet. question

Jericho Cane

5

1467

19 Juin 2009, 07:19

Zad Voir le dernier message

Aucun nouveau message non-lu dans ce sujet. Question NAS

[ Aller à la pageAller à la page: 1, 2 ]

Delirium Tremens

26

3105

11 Sep 2013, 17:24

Delirium Tremens Voir le dernier message

Aucun nouveau message non-lu dans ce sujet. question wi-fi

Zad

10

1833

15 Avr 2006, 18:46

Zad Voir le dernier message

Aucun nouveau message non-lu dans ce sujet. Une petite question

the black addiction

7

1288

17 Juin 2009, 20:00

Pandor Voir le dernier message

Aucun nouveau message non-lu dans ce sujet. Question Newsletter

Zaphod

3

1557

29 Juin 2006, 16:09

Janet Voir le dernier message

Aucun nouveau message non-lu dans ce sujet. question réseau

Sam

10

1527

10 Avr 2007, 18:20

Sam Voir le dernier message

Aucun nouveau message non-lu dans ce sujet. question Word

skip mccoy

3

1392

10 Juil 2008, 15:31

Arnotte Voir le dernier message

Aucun nouveau message non-lu dans ce sujet. Question sécurité wi-fi

Sam

5

1307

24 Juil 2007, 16:52

Delirium Tremens Voir le dernier message

 


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  
Powered by phpBB® Forum Software © phpBB Group
Traduction par: phpBB-fr.com
phpBB SEO
Hébergement mutualisé : Avenue Du Web