[Résolu] Comparaison d'éléments avec accents dans 2 bases

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 : [Résolu] Comparaison d'éléments avec accents dans 2 bases

Re: Comparaison d'éléments avec accents dans 2 bases

par fabulon » 04 mars 2011, 18:15

Impec, t'es un chef.
Merci, je passe le message en résolu...

Re: Comparaison d'éléments avec accents dans 2 bases

par stealth35 » 04 mars 2011, 16:05

Pour régler les tables, c'est dans phpmyadmin? (j'utilise wamp...)
oui

Re: Comparaison d'éléments avec accents dans 2 bases

par fabulon » 04 mars 2011, 16:04

le # est juste une marque pour savoir quels UID ont été remplis et ceux non.
C'est sur que cela fait des requêtes...

Pour régler les tables, c'est dans phpmyadmin? (j'utilise wamp...)

Re: Comparaison d'éléments avec accents dans 2 bases

par stealth35 » 04 mars 2011, 15:40

Ah pardi... c'est mieux que ma triple requete...

Et pour ce qui est du problème d'accent? Est-ce que cela peut se faire sans le premier fichier?
Tu m'avais parlé de charset !?
Sinon, comment outrepasser ce souci de maximum execution time quand je veux remplacer mes accents?
il faut que les table est le même charset (et même collation)

ex : latin1_swedish_ci
chaset : latin1
collation : swedish
ci : case insensitive

ton script est long car tes requêtes ne sont pas bonne, la condition sur le # n'est pas bonne, essaye de comprendre pas à pas ce que t'as écris tu verras que ca n'as pas trop de sens :wink:

Re: Comparaison d'éléments avec accents dans 2 bases

par fabulon » 04 mars 2011, 15:35

Ah pardi... c'est mieux que ma triple requete...

Et pour ce qui est du problème d'accent? Est-ce que cela peut se faire sans le premier fichier?
Tu m'avais parlé de charset !?
Sinon, comment outrepasser ce souci de maximum execution time quand je veux remplacer mes accents?

Re: Comparaison d'éléments avec accents dans 2 bases

par stealth35 » 04 mars 2011, 15:30

ça peux se faire en une seule requête :
UPDATE `magret`, `ent` 
SET `magret`.`uid_ent` = `ent`.`uid_ent` 
WHERE `magret`.`nom` = `ent`.`nom` 
  AND `magret`.`prenom` = `ent`.`prenom` 
  AND `magret`.`class` = `ent`.`class`

Re: Comparaison d'éléments avec accents dans 2 bases

par fabulon » 04 mars 2011, 15:27

Tu as raison, c'est mieux comme ça! :wink:

Re: Comparaison d'éléments avec accents dans 2 bases

par stealth35 » 04 mars 2011, 15:20

met la balise PHP du forum on verra mieux

Re: Comparaison d'éléments avec accents dans 2 bases

par fabulon » 04 mars 2011, 15:19

Celui-ci ne sert qu'à supprimer les accents.
Ensuite, j'ai un autre fichier qui compare les champs. En voici le code:
<?php
	// Connection à mysql
	include('connexion.php');
	// fin de la partie connexion
	
	$requete="SELECT * from magret"; // requête proprement dite 
	$result = mysql_query($requete) or die(mysql_error()); // envoi de la requête 
	while($row = mysql_fetch_array($result))  //le résultat revient sous forme d'une matrice
		{
		$CLASSE_MAGRET = $row ['CLASSE'];
		$NOM_MAGRET = $row['NOM'];
		$PRENOM_MAGRET = strtolower($row['PRENOM']);
		$UID_ENT = $row['UID_ENT'];
		if ($UID_ENT == '#') {
			$requete2="SELECT * from ENT"; // requête proprement dite 
			$result2 = mysql_query($requete2) or die(mysql_error()); // envoi de la requête 
			while($row2 = mysql_fetch_array($result2))  //le résultat revient sous forme d'une matrice
				{
				$CLASSE_ENT = $row2 ['CLASSE'];
				$NOM_ENT = $row2['NOM'];
				$PRENOM_ENT = strtolower($row2['PRENOM']);
				$UID_ENT = $row2['UID_ENT'];
				
				IF (($NOM_MAGRET == $NOM_ENT) && ($PRENOM_MAGRET == $PRENOM_ENT) && ($CLASSE_MAGRET == $CLASSE_ENT)) {
					$requete3="UPDATE MAGRET SET UID_ENT = '$UID_ENT' WHERE NOM = '$NOM_MAGRET'&& PRENOM = '$PRENOM_MAGRET' && CLASSE = '$CLASSE_MAGRET'" ; // requête proprement dite
					$result3 = mysql_query($requete3) or die(mysql_error()); // envoi de la requête 
					}
				}
		}
		}

?>

Re: Comparaison d'éléments avec accents dans 2 bases

par stealth35 » 04 mars 2011, 15:16

a quoi sert le code à part supprimé les accents ?

Re: Comparaison d'éléments avec accents dans 2 bases

par fabulon » 04 mars 2011, 15:07

Le voici:
<?php
	// Connection à mysql
	include('connexion.php');
	// fin de la partie connexion
	
	$requete="SELECT * from ent"; // requête proprement dite 
	$result = mysql_query($requete) or die(mysql_error()); // envoi de la requête 
	while($row = mysql_fetch_array($result)) { //le résultat revient sous forme d'une matrice
		
		$UID_ENT = $row['UID_ENT'];
		$PRENOM = $row['PRENOM'];
		$PRENOM = preg_replace('#[éèêë]#', 'e', $PRENOM);
		$PRENOM = preg_replace('#[ï]#', 'i', $PRENOM);
		$PRENOM = preg_replace('#[äà]#','a',$PRENOM);
		$PRENOM = preg_replace('#[öô]#','o',$PRENOM);
		$PRENOM = preg_replace('#[ç]#','c',$PRENOM);
		$requete2="UPDATE ENT SET PRENOM = '$PRENOM' WHERE UID_ENT = '$UID_ENT'" ; // requête proprement dite
		$result2 = mysql_query($requete2) or die(mysql_error()); // envoi de la requête 
		}
?>

Re: Comparaison d'éléments avec accents dans 2 bases

par stealth35 » 04 mars 2011, 15:06

montre ton code

Re: Comparaison d'éléments avec accents dans 2 bases

par fabulon » 04 mars 2011, 15:01

mais non,
normalement si ton charset est bien choisie il fais les correspondances pour les accents, en SQL c'est fait exprès pour
Ton idée fonctionne.
J'ai fait marcher mon script pour une dizaine d'éléments, ça tourne.

En revanche, pour ma liste de plus de 2000 utilisateurs, je suis confronté au maximum execution time de 30s.
J'ai beau modifié le php.ini, ça ne change rien, ça reste à 30S. Et puis de toute façon, sur un site hébergé, je ne pourrais pas modifier ce paramètre.

Une idée?

Re: Comparaison d'éléments avec accents dans 2 bases

par fabulon » 04 mars 2011, 14:59

mais non,
normalement si ton charset est bien choisie il fais les correspondances pour les accents, en SQL c'est fait exprès pour
Est-ce que tu pourrais préciser un peu cette histoire de charset ? Je débute...

Re: Comparaison d'éléments avec accents dans 2 bases

par stealth35 » 04 mars 2011, 14:39

mais non,
normalement si ton charset est bien choisie il fais les correspondances pour les accents, en SQL c'est fait exprès pour