Page 1 sur 1
Transposition de lettres d'une chaine de caractère à partir d'une table de correspondances sql
Posté : 24 déc. 2015, 12:06
par boazee
Bonjour à tous et toutes,
je suis ravi de découvrir ce forum qui va m'être d'une grande aide et me permettre de me plonger un peu plus dans ce nouveau hobbi qu'est la programmation web.
Je connais PHP depuis quelques années mais je ne le pratique que peu et à loisir.
Je me heurte en ce moment à un problème que j'ai du mal à résoudre et votre aide ou vos suggestions me seront certainement d'une grande aide.
Je cherche à écrire un bout de code qui me permettre de changer les lettres d'une phrase codée par les lettres correspondantes dans une table sql.
Je sais déjà faire via une fonction créée en utilisant : str_replace
exemple :
function transpo($transpo)
{
$transpoa = array(A,B,C,D,E,F,G,H,I);
$transpob = array(J,K,L,M,N,O,P,Q,R);
return str_replace($transpoa, $transpob, $transpo);
}
ainsi la chaine $transpo="AGE" par exemple deviendrait "JPN" après être passé sous la fonction
mais, Je voudrais faire la même chose mais en récupérant les correspondance dans une table sql
la table sql est compose de plusieurs colonne : alphabet, code1, code2, code3
Je voudrais donc faire une page où l'on peut insérer une chaîne de caractère dans un formulaire, et ensuite à l'aide d'un menu déroulant ou d'un choix à cocher choisir le codage (code1, code2 ou code3),
Puis en validant, le bout de code nous renverrez la chaîne de caractère (insérée dans la formulaire) transposée en code1 ou code2 ou code 3 selon le choix.
(Note les codes 2 et 3 utiliseront des symboles et non pas des lettres, mais c'est un détail pour l'instant)
J’espère m'être suffisamment bien expliqué et que quelqu'un pourra me donner la solution ou des éléments de solution pour me permettre de parvenir à mes fins.
Merci par avance... et bonnes fêtes à vous.
Re: Transposition de lettres d'une chaine de caractère à partir d'une table de correspondances sql
Posté : 24 déc. 2015, 12:16
par KriSpiX
Salut,
A quel moment es-tu coincé ? A priori, tu as bien décrit les étapes à faire donc quel est ton problème réellement ?
Re: Transposition de lettres d'une chaine de caractère à partir d'une table de correspondances sql
Posté : 24 déc. 2015, 12:32
par boazee
Bonjour
je suis coincé au moment où je dois récupérer le correspondances dans ma table sql pour les utiliser dans la fonction "str_replace"
en gros je ne sais pas comment récupérer les "array" de ma table sql pour les insérer dans ma fonction "str_replace".
pour reprendre mon exemple :
function transpo($transpo)
{
$transpoa = array(A,B,C,D,E,F,G,H,I); <--- je voudrai insérer ici les données de la colonne alphabet de ma table transpo
$transpob = array(J,K,L,M,N,O,P,Q,R); <--- je voudrai insérer ici les données correspondantes de la colonne code1, code2 ou code3 de ma table transpo
return str_replace($transpoa, $transpob, $transpo);
}
auriez-vous une suggestion?
Ou peut-être qu'il faut partir sur une piste totalement différente?
Cordialement.
Re: Transposition de lettres d'une chaine de caractère à partir d'une table de correspondances sql
Posté : 24 déc. 2015, 12:40
par boazee
Re-bonjour
ou encore mieux, de manière à pouvoir les inter-changer plus tard (en améliorant le formulaire), je voudrais pouvoir attribuer aux variables "$transpoa" et "$transpob" les données correspondantes à un choix de colonne
et ainsi en gros pouvoir définir dans la fonction que :
$transpoa = données de la colonne alphabet
et
$transpob = données de la colonne code 1 ou code ou code 3.
Merci par avance pour votre contribution.
Re: Transposition de lettres d'une chaine de caractère à partir d'une table de correspondances sql
Posté : 24 déc. 2015, 12:50
par boazee
Note :
j'ai essayé il y a quelque jour de faire un truc du genre :
mysql_select_db($database, $identifiant);
$query_lettres = "SELECT * FROM codification";
$lettres = mysql_query($query_lettres, $identifiant) or die(mysql_error());
$totalRows_lettres = mysql_num_rows($lettres);
puis
$transpoa = mysql_fetch_array($lettres['alphabet']);
et
$transpob = mysql_fetch_array($lettres['code1']);
mais j'ai du faire une erreur dans le code car ça n'a pas marché.
Re: Transposition de lettres d'une chaine de caractère à partir d'une table de correspondances sql
Posté : 24 déc. 2015, 16:56
par or 1
$lettres = mysql_query($query_lettres, $identifiant) or die(mysql_error());
$totalRows_lettres = mysql_num_rows($lettres);
$transpoa = $transpob = array();
while ($row = mysql_fetch_array($lettres)) {
$transpoa[] = $row['alphabet'];
$transpob[] = $row['code1'];
}
Re: Transposition de lettres d'une chaine de caractère à partir d'une table de correspondances sql
Posté : 24 déc. 2015, 18:08
par boazee
Merci OR1 pour ta suggestion,
malheureusement je ne comprends pas comment appliquer ta suggestion à ma fonction j'ai essayé ça en local mais sans succès :
Code : Tout sélectionner
<?php
$bobo = mysql_connect('localhost','identifiant','MdP') or die ("erreur de connexion");
mysql_select_db('***********',$******) or die ("erreur de connexion base");
?>
<html>
<?php header( 'content-type: text/html; charset=utf-8' ); ?>
<head>
<title>Test PHP</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
<?php
$query_lettres = "SELECT * FROM transpo";
$lettres = mysql_query($query_lettres, $bobo) or die(mysql_error());
$totalRows_lettres = mysql_num_rows($lettres);
function transpo($transpo)
{
$transpoa = $transpob = array();
while ($row = mysql_fetch_array($lettres)) {
$transpoa[] = $row['alphabet'];
$transpob[] = $row['code1'];
}
return str_replace($transpoa, $transpob, $transpo);
}
$texte = 'ABCD' ;
echo 'le texte avant :<br>';
echo $texte ;
echo '<br>et maintenant le texte après :<br>' ;
echo transpo($texte) ;
?>
</body>
</html>
Re: Transposition de lettres d'une chaine de caractère à partir d'une table de correspondances sql
Posté : 24 déc. 2015, 18:22
par boazee
et voilà ce que ça m'affiche :
le texte avant :
ABCD
et maintenant le texte après :
Notice: Undefined variable: lettres in C:\xampp\htdocs\test\test1.php on line 21
Warning: mysql_fetch_array() expects parameter 1 to be resource, null given in C:\xampp\htdocs\test\test1.php on line 21
ABCD
Re: Transposition de lettres d'une chaine de caractère à partir d'une table de correspondances sql
Posté : 24 déc. 2015, 18:32
par or 1
<?php
$bobo = mysql_connect('localhost','identifiant','MdP') or die ("erreur de connexion");
mysql_select_db('***********',$******) or die ("erreur de connexion base");
?>
<html>
<?php header( 'content-type: text/html; charset=utf-8' ); ?>
<head>
<title>Test PHP</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
<?php
$query_lettres = "SELECT * FROM transpo";
$lettres = mysql_query($query_lettres, $bobo) or die(mysql_error());
$totalRows_lettres = mysql_num_rows($lettres);
$transpoa = $transpob = array();
while ($row = mysql_fetch_array($lettres)) {
$transpoa[] = $row['alphabet'];
$transpob[] = $row['code1'];
}
$texte = 'ABCD' ;
echo 'le texte avant :<br>';
echo $texte ;
echo '<br>et maintenant le texte après :<br>' ;
echo str_replace($transpoa, $transpob, $texte) ;
?>
</body>
</html>
Re: Transposition de lettres d'une chaine de caractère à partir d'une table de correspondances sql
Posté : 24 déc. 2015, 18:35
par boazee
Bonsoir,
je vais essayer d'être un peu plus clair avec ce code :
Code : Tout sélectionner
<html>
<?php header( 'content-type: text/html; charset=utf-8' ); ?>
<head>
<title>Test PHP</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
<?php
function transpo($transpo)
{
$transpoa = array('A','B','C','D');
$transpob = array('W','X','Y','Z');
return str_replace($transpoa, $transpob, $transpo);
}
$texte = 'ABCD' ;
echo 'le texte avant :<br>';
echo $texte ;
echo '<br>et maintenant le texte après :<br>' ;
echo transpo($texte) ;
?>
</body>
</html>
ça affiche ça :
le texte avant :
ABCD
et maintenant le texte après :
WXYZ
je voudrais faire la même chose mais en récupérant les lettres (ou symboles) A,B,C,D et W,X,Y,Z dans un tableau
ces lettres pourraient tout aussi bien être des mots, et la fonction "str_replace" à ce moment là remplacerai les mots d'une phrase trouvés dans la "colonne1" par les mots correspondants dans la "colonne2".
Mais j'ai beau essayer toutes sortes de choses je n'arrive pas à solutionner ce problème.
J'étais à deux doigt d'y arriver en passant par deux "SELECT" mais non seulement j'y suis pas arrivé au final, mais en plus je trouve dommage de faire 2 requêtes alors que je suis convaincu que l'on doit pouvoir y arriver avec une seule.
Re: Transposition de lettres d'une chaine de caractère à partir d'une table de correspondances sql
Posté : 24 déc. 2015, 18:38
par boazee
Oups!... nos messages se sont croisé.
Merci infiniment OR1,
ton script fonctionne.
Je vais mettre en application ça et voir si ça fonctionne dans tous les cas de figure que j'entrevois.
Mais ça va vraiment bien m'aider en tous cas.
Problème résolu.
Encore merci.
Re: [RESOLU] Transposition de lettres d'une chaine de caractère à partir d'une table de correspondances sql
Posté : 25 déc. 2015, 00:19
par boazee
Bonsoir
Il est tard, Je rentre à peine et bien que ce sujet soit résolu je me sens de nouveau obligé de te remercuer OR1. Je suis surpris par ton bout de code, sa simplicité, sa limpidité et surtout son efficacité.
J'ai déjà monté deux petite application en local avec et ça convient parfaitement à ce que je veux faire. En quelque sorte c'est mon cadeau de noel ce bout de code.
Bravo! Encore merci. Et je vous souhaite à tous de bonnes fêtes de fin d'année.