par
bartoon » 24 mars 2017, 01:14
rebonjour !
j'ai mis un peu de temps pour revenir compléter mes messages car entre temps j'ai télécharger les cours d'openclassroom et je les aient lus (oui c'est mieux quand même

)
J ai bien avancer, j'ai récupérer les donner du fichiers xls, je les aient mis dans plusieurs bases de données, car il y a plusieurs calculs et donc plusieurs définitions et cela semble fonctionner.
Mais j'ai quelques soucis et malgré mes recherches il y a des choses que je ne comprends pas
Je veux maintenant récupérer mes résultats et les afficher au propre dans un tableau.
J ai une fonction dont le nom est aspiration_intime_texte
function aspiration_intime_texte($aspiration_intime) {
$host = 'localhost';
$db = 'test';
$table = 'aspiration';
$user = 'root';
$pass = '';
$charset = 'utf8';
$opt = [];
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$pdo = new PDO($dsn, $user, $pass, $opt);
// On va preparer un statement plutot que executer directement.
// Ca nous permet de neutraliser les entrees dangereuses en
// demandant a la base de donnee de les nettoyer elle-meme
// (c'est l'utilite de ':chiffre' ici)
$stmt = $pdo->prepare(
'SELECT texte FROM aspiration WHERE chiffre=:chiffre');
$stmt->execute(['chiffre' => $aspiration_intime]);
$row = $stmt->fetch();
return $row['texte'];
}
une autre qui s'appelle chemin_de_vie_texte
function chemin_vie_texte($chemin_de_vie) {
$host = 'localhost';
$db = 'test';
$table = 'chemin';
$user = 'root';
$pass = '';
$charset = 'utf8';
$opt = [];
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$pdo = new PDO($dsn, $user, $pass, $opt);
// On va preparer un statement plutot que executer directement.
// Ca nous permet de neutraliser les entrees dangereuses en
// demandant a la base de donnee de les nettoyer elle-meme
// (c'est l'utilite de ':chiffre' ici)
$stmt = $pdo->prepare(
'SELECT texte FROM chemin WHERE chiffre=:chiffre');
$stmt->execute(['chiffre' => $chemin_de_vie]);
$row = $stmt->fetch();
return $row['texte'];
}
bon j'ai d'autre fonction mais pour faire simple j'explique avec 2
donc j'appelle mes infos sur une page avec des formulaires (nom/prenom) (date de naissance jour/mois/annee) et avec ca je fais mes calculs. Ensuite je veux les affichés, donc je fais :
echo "<p><strong>Voici le texte pour la personnalite:</strong></p>";
echo nl2br(aspiration_intime_texte($resultats['aspiration_intime']));
echo "<p><strong>Voici le texte pour chemin de vie:</strong></p>";
echo nl2br(chemin_vie_texte($resultats['chemin_de_vie']));
et la ca affiche bien ce que je veux MAIS comme il y en a plusieurs je me suis dis si j'utilise des variables peut etre que cela sera mieux si plus tard j'en rajoute.
j'ai donc tester avec
echo "<p><strong>Voici le tableau qui contient les resultats:</strong></p>";
print_r($resultats);
et j'ai bien comme résultats :
aspiration_intime 5
chemin_de_vie 6
donc je fais un tableau et histoire de lire tout d'un coup je fais un foreach :
foreach ($resultats as $_POST => $element)
{
echo "<table><tr><td>$_POST</td><td>$element</td><td>";
echo (aspiration_intime_texte($resultats['aspiration_intime']));
echo "</td></tr></table>";
}
mais je vois que mon $_POST m'affiche bien aspiration_intime et chemin_de_vie (comme nom)
et $element le chiffre qui va avec. Donc j'en déduis que si je fais un
foreach ($resultats as $_POST => $element)
{
echo "<table><tr><td>$_POST</td><td>$element</td><td>";
echo ($_POST_texte($resultats[$_POST]));
echo "</td></tr></table>";
}
Sauf que dans ce cas, quand je fais un test il m'affiche bien dans ma première case de mon tableau aspiration_intime, dans la 2eme le chiffre correspondant mais dans la 3eme case il me crie du fond du coeur : Notice: Undefined variable: _POST_texte in F:\www\testphp\numtest.php on line 42
ne devrait il pas m'afficher a la place de $_POST la chaîne de caractères correspondante ? ( $_POST étant la première fois aspiration_intime et la 2eme chemin_de_vie ? Le probleme est dans le 1er $_POST celui que j'aimerais qu'il me remplace la premiere partie du nom de ma fonction. Car si je mets :
foreach ($resultats as $_POST => $element)
{
echo "<table><tr><td>$_POST</td><td>$element</td><td>";
echo (aspiration_intime_texte($resultats[$_POST]));
echo "</td></tr></table>";
}
Il m'affiche bien le bon chiffre dans la partie ($resultats[$_POST]));
En fait du coup je me pose la question est ce que je peux remplacer réellement une partie du nom d'une fonction par un morceau de variable ? et si non comment je peux faire pour ne pas avoir a retaper plusieurs fois la même ligne juste pour écrire les différentes fonction puisque mes définitions, suivant le nom de $_POST dans le tableau sont différentes car elles ne sont pas dans les mêmes bases de données ?
je sais mon message est très long ... j’espère qu moins qu'il est clair
je vous mets pour finir tout mon code au cas ou cela vous aide.
Je vous remercie d'avance, j'ai passer la journée pour chercher la solution avant de vous demander.
<?php
/* Ce fichier contient code qui displait une page avec un formulaire,
* et le code qui est invoque quand ce formulaire est soumis.
* Donc, nos variables seront contenues dans $_POST
* Variables in $_POST: nom, annee_naissance, mois_naissance, jour_naissance
*/
// Reporte erreurs. Ce bordel marche jamais et reporte pas
// de toute facon. Saloperie, php.
error_reporting(E_ALL); ini_set('display_errors', 1);
// Le corps de la logique
if(empty($_POST['fais_le_calcul'])) {
affiche_formulaire();
}
else {
if(
empty($_POST['nom']) ||
empty($_POST['jour_naissance']) ||
empty($_POST['mois_naissance']) ||
empty($_POST['annee_naissance'])
) {
affiche_formulaire("Vous devez entrer toute l'information");
}
else {
$resultats = fais_le_calcul(
$_POST['nom'],
$_POST['jour_naissance'],
$_POST['mois_naissance'],
$_POST['annee_naissance']);
// C'est la pour afficher l'info pour verifier les resultats.
// Le code pour afficher les resultats remplacerait celui-ci.
echo "<p><strong>Voici le tableau qui contient les resultats:</strong></p>";
print_r($resultats);
foreach ($resultats as $_POST => $element)
{
echo "<table><tr><td>$_POST</td><td>$element</td><td>";
echo nl2br(aspiration_intime_texte($resultats['$_POST']));
echo "</td></tr></table>";
}
// Convertis personnalite dans son texte, retrouve dans
// la base de donnee
echo "<p><strong>Voici le texte pour la personnalite:</strong></p>";
echo nl2br(personnalite_texte($resultats['personnalite']));
echo "<p><strong>Voici le texte pour chemin de vie:</strong></p>";
echo nl2br(chemin_vie_texte($resultats['chemin_de_vie']));
}
}
function affiche_formulaire($texte_erreur="") {
echo str_replace(
"<!--TEXTE_ERREUR-->",
$texte_erreur,
file_get_contents('indextest.php'));
}
function fais_le_calcul($nom, $jour, $mois, $annee) {
$nom_bien_propre = nettoie_nom($nom);
return array(
"personnalite" => personnalite($nom_bien_propre),
"aspiration_intime" => intime_aspiration($nom_bien_propre),
"capacite_realisation" => capacite_realisation($nom_bien_propre),
"chemin_de_vie" => chemin_de_vie($jour, $mois, $annee),
"energie_cette_annee" => cette_annee_energie(),
"cette_annee_ton_energie" => cette_annee_ton_energie($jour, $mois),
"psychique" => psychique($jour),
"evolution" => evolution($jour, $mois)
);
}
function chemin_vie_texte($chemin_de_vie) {
$host = 'localhost';
$db = 'test';
$table = 'chemin';
$user = 'root';
$pass = '';
$charset = 'utf8';
$opt = [];
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$pdo = new PDO($dsn, $user, $pass, $opt);
// On va preparer un statement plutot que executer directement.
// Ca nous permet de neutraliser les entrees dangereuses en
// demandant a la base de donnee de les nettoyer elle-meme
// (c'est l'utilite de ':chiffre' ici)
$stmt = $pdo->prepare(
'SELECT texte FROM chemin WHERE chiffre=:chiffre');
$stmt->execute(['chiffre' => $chemin_de_vie]);
$row = $stmt->fetch();
return $row['texte'];
}
function aspiration_intime_texte($aspiration_intime) {
$host = 'localhost';
$db = 'test';
$table = 'aspiration';
$user = 'root';
$pass = '';
$charset = 'utf8';
$opt = [];
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$pdo = new PDO($dsn, $user, $pass, $opt);
// On va preparer un statement plutot que executer directement.
// Ca nous permet de neutraliser les entrees dangereuses en
// demandant a la base de donnee de les nettoyer elle-meme
// (c'est l'utilite de ':chiffre' ici)
$stmt = $pdo->prepare(
'SELECT texte FROM aspiration WHERE chiffre=:chiffre');
$stmt->execute(['chiffre' => $aspiration_intime]);
$row = $stmt->fetch();
return $row['texte'];
}
function personnalite_texte($personnalite) {
$host = 'localhost';
$db = 'test';
$table = 'personnalites';
$user = 'root';
$pass = '';
$charset = 'utf8';
$opt = [];
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$pdo = new PDO($dsn, $user, $pass, $opt);
// On va preparer un statement plutot que executer directement.
// Ca nous permet de neutraliser les entrees dangereuses en
// demandant a la base de donnee de les nettoyer elle-meme
// (c'est l'utilite de ':chiffre' ici)
$stmt = $pdo->prepare(
'SELECT texte FROM personnalites WHERE chiffre=:chiffre');
$stmt->execute(['chiffre' => $personnalite]);
$row = $stmt->fetch();
return $row['texte'];
}
function personnalite($nom) {
return reduit_nombre(converti_nom_nombre($nom, 0));
}
function intime_aspiration($nom) {
return reduit_nombre(converti_nom_nombre(garde_voyelles($nom), 0));
}
function capacite_realisation($nom) {
return reduit_nombre(converti_nom_nombre(garde_consones($nom), 0));
}
function chemin_de_vie($jour, $mois, $annee) {
return reduit_nombre($jour + $mois + $annee);
}
function cette_annee_energie() {
$cette_annee = intval(date('Y'));
// rajout de redui_nombre_sans_11 sinon on a 10 au lieu de 1
return reduit_nombre_sans_11(accumule_nombre($cette_annee, 0));
}
function cette_annee_ton_energie($jour, $mois) {
$cette_annee = intval(date('Y'));
return reduit_nombre($jour + $mois + $cette_annee);
}
function psychique($jour) {
return reduit_nombre($jour);
}
function evolution($jour, $mois) {
return reduit_nombre($jour + $mois);
}
/* Recursif: voir le commentaire a la fin
* pour uncons()
*/
function converti_nom_nombre($nom, $accu) {
if($nom == "") {
return $accu;
}
else {
list($head, $tail) = uncons($nom);
return converti_nom_nombre($tail,
$accu + converti_lettre_chiffre($head));
}
}
// J' ai compris !!!!! on prend le code ascii de la lettre on enleve le code ascii de a et on rajoute 1 et on a la valeur de la lettre c'est dingue !!!!
function converti_lettre_chiffre($lettre) {
return 1 + ord($lettre) - ord('A');
}
function reduit_nombre($nombre) {
if($nombre < 10 OR $nombre == 11 OR $nombre == 22 ) {
return $nombre;
}
else {
return reduit_nombre(
intval($nombre / 10) + $nombre % 10);
// exemple 38 38/10=3 modulo de 38/10 =8 3+8=11 le modulo % c'est le reste de la division
}
}
function reduit_nombre_sans_11($nombre) {
if($nombre < 10 ) {
return $nombre;
}
else {
return reduit_nombre_sans_11(
// exemple 38 38/10=3 modulo de 38/10 =8 3+8=11 le modulo % c'est le reste de la division
intval($nombre / 10) + $nombre % 10);
}
}
function accumule_nombre($nombre, $accu) {
if($nombre == 0 OR $nombre == 11 OR $nombre == 22) {
return $accu;
}
else {
return accumule_nombre(
intval($nombre / 10),
$accu + $nombre % 10);
}
}
// on met tout en majuscule et on enleve les accents
function nettoie_nom($nom) {
$nom_majuscule = strtoupper($nom);
$nom_sans_accents = remove_accents($nom_majuscule);
// Enleve tout ce qui n'est PAS (^) une lettre
return preg_replace('/[^A-Z]/', '', $nom_sans_accents);
}
// la aussi j ai compris tout ce qui n'est pas aeiouy est supprimer
function garde_voyelles($nom) {
return preg_replace(
'/[^AEIOUY]+/',
'',
$nom);
}
// pareil tout ce qui est aeiouy est supprimer
function garde_consones($nom) {
return preg_replace(
'/[AEIOUY]+/',
'',
$nom);
}
/* Emprunte de Wordpress: normalement, PHP convertit a l'aide d'une command
* 'iconv' mais en realite c'est casse sur certain serveurs, donc on
* va utiliser la facon de wordpress
* (bonus: elle supporte plus que l'alphabet 7-bit)
*/
function remove_accents($string) {
if ( !preg_match('/[\x80-\xff]/', $string) )
return $string;
$chars = array(
// Decompositions for Latin-1 Supplement
chr(195).chr(128) => 'A', chr(195).chr(129) => 'A',
chr(195).chr(130) => 'A', chr(195).chr(131) => 'A',
chr(195).chr(132) => 'A', chr(195).chr(133) => 'A',
chr(195).chr(135) => 'C', chr(195).chr(136) => 'E',
chr(195).chr(137) => 'E', chr(195).chr(138) => 'E',
chr(195).chr(139) => 'E', chr(195).chr(140) => 'I',
chr(195).chr(141) => 'I', chr(195).chr(142) => 'I',
chr(195).chr(143) => 'I', chr(195).chr(145) => 'N',
chr(195).chr(146) => 'O', chr(195).chr(147) => 'O',
chr(195).chr(148) => 'O', chr(195).chr(149) => 'O',
chr(195).chr(150) => 'O', chr(195).chr(153) => 'U',
chr(195).chr(154) => 'U', chr(195).chr(155) => 'U',
chr(195).chr(156) => 'U', chr(195).chr(157) => 'Y',
chr(195).chr(159) => 's', chr(195).chr(160) => 'a',
chr(195).chr(161) => 'a', chr(195).chr(162) => 'a',
chr(195).chr(163) => 'a', chr(195).chr(164) => 'a',
chr(195).chr(165) => 'a', chr(195).chr(167) => 'c',
chr(195).chr(168) => 'e', chr(195).chr(169) => 'e',
chr(195).chr(170) => 'e', chr(195).chr(171) => 'e',
chr(195).chr(172) => 'i', chr(195).chr(173) => 'i',
chr(195).chr(174) => 'i', chr(195).chr(175) => 'i',
chr(195).chr(177) => 'n', chr(195).chr(178) => 'o',
chr(195).chr(179) => 'o', chr(195).chr(180) => 'o',
chr(195).chr(181) => 'o', chr(195).chr(182) => 'o',
chr(195).chr(182) => 'o', chr(195).chr(185) => 'u',
chr(195).chr(186) => 'u', chr(195).chr(187) => 'u',
chr(195).chr(188) => 'u', chr(195).chr(189) => 'y',
chr(195).chr(191) => 'y',
// Decompositions for Latin Extended-A
chr(196).chr(128) => 'A', chr(196).chr(129) => 'a',
chr(196).chr(130) => 'A', chr(196).chr(131) => 'a',
chr(196).chr(132) => 'A', chr(196).chr(133) => 'a',
chr(196).chr(134) => 'C', chr(196).chr(135) => 'c',
chr(196).chr(136) => 'C', chr(196).chr(137) => 'c',
chr(196).chr(138) => 'C', chr(196).chr(139) => 'c',
chr(196).chr(140) => 'C', chr(196).chr(141) => 'c',
chr(196).chr(142) => 'D', chr(196).chr(143) => 'd',
chr(196).chr(144) => 'D', chr(196).chr(145) => 'd',
chr(196).chr(146) => 'E', chr(196).chr(147) => 'e',
chr(196).chr(148) => 'E', chr(196).chr(149) => 'e',
chr(196).chr(150) => 'E', chr(196).chr(151) => 'e',
chr(196).chr(152) => 'E', chr(196).chr(153) => 'e',
chr(196).chr(154) => 'E', chr(196).chr(155) => 'e',
chr(196).chr(156) => 'G', chr(196).chr(157) => 'g',
chr(196).chr(158) => 'G', chr(196).chr(159) => 'g',
chr(196).chr(160) => 'G', chr(196).chr(161) => 'g',
chr(196).chr(162) => 'G', chr(196).chr(163) => 'g',
chr(196).chr(164) => 'H', chr(196).chr(165) => 'h',
chr(196).chr(166) => 'H', chr(196).chr(167) => 'h',
chr(196).chr(168) => 'I', chr(196).chr(169) => 'i',
chr(196).chr(170) => 'I', chr(196).chr(171) => 'i',
chr(196).chr(172) => 'I', chr(196).chr(173) => 'i',
chr(196).chr(174) => 'I', chr(196).chr(175) => 'i',
chr(196).chr(176) => 'I', chr(196).chr(177) => 'i',
chr(196).chr(178) => 'IJ',chr(196).chr(179) => 'ij',
chr(196).chr(180) => 'J', chr(196).chr(181) => 'j',
chr(196).chr(182) => 'K', chr(196).chr(183) => 'k',
chr(196).chr(184) => 'k', chr(196).chr(185) => 'L',
chr(196).chr(186) => 'l', chr(196).chr(187) => 'L',
chr(196).chr(188) => 'l', chr(196).chr(189) => 'L',
chr(196).chr(190) => 'l', chr(196).chr(191) => 'L',
chr(197).chr(128) => 'l', chr(197).chr(129) => 'L',
chr(197).chr(130) => 'l', chr(197).chr(131) => 'N',
chr(197).chr(132) => 'n', chr(197).chr(133) => 'N',
chr(197).chr(134) => 'n', chr(197).chr(135) => 'N',
chr(197).chr(136) => 'n', chr(197).chr(137) => 'N',
chr(197).chr(138) => 'n', chr(197).chr(139) => 'N',
chr(197).chr(140) => 'O', chr(197).chr(141) => 'o',
chr(197).chr(142) => 'O', chr(197).chr(143) => 'o',
chr(197).chr(144) => 'O', chr(197).chr(145) => 'o',
chr(197).chr(146) => 'OE',chr(197).chr(147) => 'oe',
chr(197).chr(148) => 'R',chr(197).chr(149) => 'r',
chr(197).chr(150) => 'R',chr(197).chr(151) => 'r',
chr(197).chr(152) => 'R',chr(197).chr(153) => 'r',
chr(197).chr(154) => 'S',chr(197).chr(155) => 's',
chr(197).chr(156) => 'S',chr(197).chr(157) => 's',
chr(197).chr(158) => 'S',chr(197).chr(159) => 's',
chr(197).chr(160) => 'S', chr(197).chr(161) => 's',
chr(197).chr(162) => 'T', chr(197).chr(163) => 't',
chr(197).chr(164) => 'T', chr(197).chr(165) => 't',
chr(197).chr(166) => 'T', chr(197).chr(167) => 't',
chr(197).chr(168) => 'U', chr(197).chr(169) => 'u',
chr(197).chr(170) => 'U', chr(197).chr(171) => 'u',
chr(197).chr(172) => 'U', chr(197).chr(173) => 'u',
chr(197).chr(174) => 'U', chr(197).chr(175) => 'u',
chr(197).chr(176) => 'U', chr(197).chr(177) => 'u',
chr(197).chr(178) => 'U', chr(197).chr(179) => 'u',
chr(197).chr(180) => 'W', chr(197).chr(181) => 'w',
chr(197).chr(182) => 'Y', chr(197).chr(183) => 'y',
chr(197).chr(184) => 'Y', chr(197).chr(185) => 'Z',
chr(197).chr(186) => 'z', chr(197).chr(187) => 'Z',
chr(197).chr(188) => 'z', chr(197).chr(189) => 'Z',
chr(197).chr(190) => 'z', chr(197).chr(191) => 's'
);
$string = strtr($string, $chars);
return $string;
}
/* Cette fonction fait quelque chose de fonctionel:
* elle retourne le premier charactere et le reste
* d'une chaine de caracteres separement.
* C'est beaucoup plus facile a comprendre pour
* un debutant, a mon avis.
*/
function uncons($string) {
return array(substr($string, 0, 1), substr($string, 1));
}
// header("Location:resultatnum.php");
?>
rebonjour !
j'ai mis un peu de temps pour revenir compléter mes messages car entre temps j'ai télécharger les cours d'openclassroom et je les aient lus (oui c'est mieux quand même :))
J ai bien avancer, j'ai récupérer les donner du fichiers xls, je les aient mis dans plusieurs bases de données, car il y a plusieurs calculs et donc plusieurs définitions et cela semble fonctionner.
Mais j'ai quelques soucis et malgré mes recherches il y a des choses que je ne comprends pas :)
Je veux maintenant récupérer mes résultats et les afficher au propre dans un tableau.
J ai une fonction dont le nom est aspiration_intime_texte
[PHP]function aspiration_intime_texte($aspiration_intime) {
$host = 'localhost';
$db = 'test';
$table = 'aspiration';
$user = 'root';
$pass = '';
$charset = 'utf8';
$opt = [];
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$pdo = new PDO($dsn, $user, $pass, $opt);
// On va preparer un statement plutot que executer directement.
// Ca nous permet de neutraliser les entrees dangereuses en
// demandant a la base de donnee de les nettoyer elle-meme
// (c'est l'utilite de ':chiffre' ici)
$stmt = $pdo->prepare(
'SELECT texte FROM aspiration WHERE chiffre=:chiffre');
$stmt->execute(['chiffre' => $aspiration_intime]);
$row = $stmt->fetch();
return $row['texte'];
}[/PHP]
une autre qui s'appelle chemin_de_vie_texte
[PHP]function chemin_vie_texte($chemin_de_vie) {
$host = 'localhost';
$db = 'test';
$table = 'chemin';
$user = 'root';
$pass = '';
$charset = 'utf8';
$opt = [];
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$pdo = new PDO($dsn, $user, $pass, $opt);
// On va preparer un statement plutot que executer directement.
// Ca nous permet de neutraliser les entrees dangereuses en
// demandant a la base de donnee de les nettoyer elle-meme
// (c'est l'utilite de ':chiffre' ici)
$stmt = $pdo->prepare(
'SELECT texte FROM chemin WHERE chiffre=:chiffre');
$stmt->execute(['chiffre' => $chemin_de_vie]);
$row = $stmt->fetch();
return $row['texte'];
}[/PHP]
bon j'ai d'autre fonction mais pour faire simple j'explique avec 2 :)
donc j'appelle mes infos sur une page avec des formulaires (nom/prenom) (date de naissance jour/mois/annee) et avec ca je fais mes calculs. Ensuite je veux les affichés, donc je fais :
[PHP]echo "<p><strong>Voici le texte pour la personnalite:</strong></p>";
echo nl2br(aspiration_intime_texte($resultats['aspiration_intime']));
echo "<p><strong>Voici le texte pour chemin de vie:</strong></p>";
echo nl2br(chemin_vie_texte($resultats['chemin_de_vie']));[/PHP]
et la ca affiche bien ce que je veux MAIS comme il y en a plusieurs je me suis dis si j'utilise des variables peut etre que cela sera mieux si plus tard j'en rajoute.
j'ai donc tester avec
[PHP]echo "<p><strong>Voici le tableau qui contient les resultats:</strong></p>";
print_r($resultats);[/PHP]
et j'ai bien comme résultats :
aspiration_intime 5
chemin_de_vie 6
donc je fais un tableau et histoire de lire tout d'un coup je fais un foreach :
[PHP]foreach ($resultats as $_POST => $element)
{
echo "<table><tr><td>$_POST</td><td>$element</td><td>";
echo (aspiration_intime_texte($resultats['aspiration_intime']));
echo "</td></tr></table>";
}[/PHP]
mais je vois que mon $_POST m'affiche bien aspiration_intime et chemin_de_vie (comme nom)
et $element le chiffre qui va avec. Donc j'en déduis que si je fais un
[PHP]foreach ($resultats as $_POST => $element)
{
echo "<table><tr><td>$_POST</td><td>$element</td><td>";
echo ($_POST_texte($resultats[$_POST]));
echo "</td></tr></table>";
}[/PHP]
Sauf que dans ce cas, quand je fais un test il m'affiche bien dans ma première case de mon tableau aspiration_intime, dans la 2eme le chiffre correspondant mais dans la 3eme case il me crie du fond du coeur : Notice: Undefined variable: _POST_texte in F:\www\testphp\numtest.php on line 42
ne devrait il pas m'afficher a la place de $_POST la chaîne de caractères correspondante ? ( $_POST étant la première fois aspiration_intime et la 2eme chemin_de_vie ? Le probleme est dans le 1er $_POST celui que j'aimerais qu'il me remplace la premiere partie du nom de ma fonction. Car si je mets :
[PHP]foreach ($resultats as $_POST => $element)
{
echo "<table><tr><td>$_POST</td><td>$element</td><td>";
echo (aspiration_intime_texte($resultats[$_POST]));
echo "</td></tr></table>";
}[/PHP]
Il m'affiche bien le bon chiffre dans la partie ($resultats[$_POST]));
En fait du coup je me pose la question est ce que je peux remplacer réellement une partie du nom d'une fonction par un morceau de variable ? et si non comment je peux faire pour ne pas avoir a retaper plusieurs fois la même ligne juste pour écrire les différentes fonction puisque mes définitions, suivant le nom de $_POST dans le tableau sont différentes car elles ne sont pas dans les mêmes bases de données ?
je sais mon message est très long ... j’espère qu moins qu'il est clair
je vous mets pour finir tout mon code au cas ou cela vous aide.
Je vous remercie d'avance, j'ai passer la journée pour chercher la solution avant de vous demander.
[PHP]<?php
/* Ce fichier contient code qui displait une page avec un formulaire,
* et le code qui est invoque quand ce formulaire est soumis.
* Donc, nos variables seront contenues dans $_POST
* Variables in $_POST: nom, annee_naissance, mois_naissance, jour_naissance
*/
// Reporte erreurs. Ce bordel marche jamais et reporte pas
// de toute facon. Saloperie, php.
error_reporting(E_ALL); ini_set('display_errors', 1);
// Le corps de la logique
if(empty($_POST['fais_le_calcul'])) {
affiche_formulaire();
}
else {
if(
empty($_POST['nom']) ||
empty($_POST['jour_naissance']) ||
empty($_POST['mois_naissance']) ||
empty($_POST['annee_naissance'])
) {
affiche_formulaire("Vous devez entrer toute l'information");
}
else {
$resultats = fais_le_calcul(
$_POST['nom'],
$_POST['jour_naissance'],
$_POST['mois_naissance'],
$_POST['annee_naissance']);
// C'est la pour afficher l'info pour verifier les resultats.
// Le code pour afficher les resultats remplacerait celui-ci.
echo "<p><strong>Voici le tableau qui contient les resultats:</strong></p>";
print_r($resultats);
foreach ($resultats as $_POST => $element)
{
echo "<table><tr><td>$_POST</td><td>$element</td><td>";
echo nl2br(aspiration_intime_texte($resultats['$_POST']));
echo "</td></tr></table>";
}
// Convertis personnalite dans son texte, retrouve dans
// la base de donnee
echo "<p><strong>Voici le texte pour la personnalite:</strong></p>";
echo nl2br(personnalite_texte($resultats['personnalite']));
echo "<p><strong>Voici le texte pour chemin de vie:</strong></p>";
echo nl2br(chemin_vie_texte($resultats['chemin_de_vie']));
}
}
function affiche_formulaire($texte_erreur="") {
echo str_replace(
"<!--TEXTE_ERREUR-->",
$texte_erreur,
file_get_contents('indextest.php'));
}
function fais_le_calcul($nom, $jour, $mois, $annee) {
$nom_bien_propre = nettoie_nom($nom);
return array(
"personnalite" => personnalite($nom_bien_propre),
"aspiration_intime" => intime_aspiration($nom_bien_propre),
"capacite_realisation" => capacite_realisation($nom_bien_propre),
"chemin_de_vie" => chemin_de_vie($jour, $mois, $annee),
"energie_cette_annee" => cette_annee_energie(),
"cette_annee_ton_energie" => cette_annee_ton_energie($jour, $mois),
"psychique" => psychique($jour),
"evolution" => evolution($jour, $mois)
);
}
function chemin_vie_texte($chemin_de_vie) {
$host = 'localhost';
$db = 'test';
$table = 'chemin';
$user = 'root';
$pass = '';
$charset = 'utf8';
$opt = [];
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$pdo = new PDO($dsn, $user, $pass, $opt);
// On va preparer un statement plutot que executer directement.
// Ca nous permet de neutraliser les entrees dangereuses en
// demandant a la base de donnee de les nettoyer elle-meme
// (c'est l'utilite de ':chiffre' ici)
$stmt = $pdo->prepare(
'SELECT texte FROM chemin WHERE chiffre=:chiffre');
$stmt->execute(['chiffre' => $chemin_de_vie]);
$row = $stmt->fetch();
return $row['texte'];
}
function aspiration_intime_texte($aspiration_intime) {
$host = 'localhost';
$db = 'test';
$table = 'aspiration';
$user = 'root';
$pass = '';
$charset = 'utf8';
$opt = [];
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$pdo = new PDO($dsn, $user, $pass, $opt);
// On va preparer un statement plutot que executer directement.
// Ca nous permet de neutraliser les entrees dangereuses en
// demandant a la base de donnee de les nettoyer elle-meme
// (c'est l'utilite de ':chiffre' ici)
$stmt = $pdo->prepare(
'SELECT texte FROM aspiration WHERE chiffre=:chiffre');
$stmt->execute(['chiffre' => $aspiration_intime]);
$row = $stmt->fetch();
return $row['texte'];
}
function personnalite_texte($personnalite) {
$host = 'localhost';
$db = 'test';
$table = 'personnalites';
$user = 'root';
$pass = '';
$charset = 'utf8';
$opt = [];
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$pdo = new PDO($dsn, $user, $pass, $opt);
// On va preparer un statement plutot que executer directement.
// Ca nous permet de neutraliser les entrees dangereuses en
// demandant a la base de donnee de les nettoyer elle-meme
// (c'est l'utilite de ':chiffre' ici)
$stmt = $pdo->prepare(
'SELECT texte FROM personnalites WHERE chiffre=:chiffre');
$stmt->execute(['chiffre' => $personnalite]);
$row = $stmt->fetch();
return $row['texte'];
}
function personnalite($nom) {
return reduit_nombre(converti_nom_nombre($nom, 0));
}
function intime_aspiration($nom) {
return reduit_nombre(converti_nom_nombre(garde_voyelles($nom), 0));
}
function capacite_realisation($nom) {
return reduit_nombre(converti_nom_nombre(garde_consones($nom), 0));
}
function chemin_de_vie($jour, $mois, $annee) {
return reduit_nombre($jour + $mois + $annee);
}
function cette_annee_energie() {
$cette_annee = intval(date('Y'));
// rajout de redui_nombre_sans_11 sinon on a 10 au lieu de 1
return reduit_nombre_sans_11(accumule_nombre($cette_annee, 0));
}
function cette_annee_ton_energie($jour, $mois) {
$cette_annee = intval(date('Y'));
return reduit_nombre($jour + $mois + $cette_annee);
}
function psychique($jour) {
return reduit_nombre($jour);
}
function evolution($jour, $mois) {
return reduit_nombre($jour + $mois);
}
/* Recursif: voir le commentaire a la fin
* pour uncons()
*/
function converti_nom_nombre($nom, $accu) {
if($nom == "") {
return $accu;
}
else {
list($head, $tail) = uncons($nom);
return converti_nom_nombre($tail,
$accu + converti_lettre_chiffre($head));
}
}
// J' ai compris !!!!! on prend le code ascii de la lettre on enleve le code ascii de a et on rajoute 1 et on a la valeur de la lettre c'est dingue !!!!
function converti_lettre_chiffre($lettre) {
return 1 + ord($lettre) - ord('A');
}
function reduit_nombre($nombre) {
if($nombre < 10 OR $nombre == 11 OR $nombre == 22 ) {
return $nombre;
}
else {
return reduit_nombre(
intval($nombre / 10) + $nombre % 10);
// exemple 38 38/10=3 modulo de 38/10 =8 3+8=11 le modulo % c'est le reste de la division
}
}
function reduit_nombre_sans_11($nombre) {
if($nombre < 10 ) {
return $nombre;
}
else {
return reduit_nombre_sans_11(
// exemple 38 38/10=3 modulo de 38/10 =8 3+8=11 le modulo % c'est le reste de la division
intval($nombre / 10) + $nombre % 10);
}
}
function accumule_nombre($nombre, $accu) {
if($nombre == 0 OR $nombre == 11 OR $nombre == 22) {
return $accu;
}
else {
return accumule_nombre(
intval($nombre / 10),
$accu + $nombre % 10);
}
}
// on met tout en majuscule et on enleve les accents
function nettoie_nom($nom) {
$nom_majuscule = strtoupper($nom);
$nom_sans_accents = remove_accents($nom_majuscule);
// Enleve tout ce qui n'est PAS (^) une lettre
return preg_replace('/[^A-Z]/', '', $nom_sans_accents);
}
// la aussi j ai compris tout ce qui n'est pas aeiouy est supprimer
function garde_voyelles($nom) {
return preg_replace(
'/[^AEIOUY]+/',
'',
$nom);
}
// pareil tout ce qui est aeiouy est supprimer
function garde_consones($nom) {
return preg_replace(
'/[AEIOUY]+/',
'',
$nom);
}
/* Emprunte de Wordpress: normalement, PHP convertit a l'aide d'une command
* 'iconv' mais en realite c'est casse sur certain serveurs, donc on
* va utiliser la facon de wordpress
* (bonus: elle supporte plus que l'alphabet 7-bit)
*/
function remove_accents($string) {
if ( !preg_match('/[\x80-\xff]/', $string) )
return $string;
$chars = array(
// Decompositions for Latin-1 Supplement
chr(195).chr(128) => 'A', chr(195).chr(129) => 'A',
chr(195).chr(130) => 'A', chr(195).chr(131) => 'A',
chr(195).chr(132) => 'A', chr(195).chr(133) => 'A',
chr(195).chr(135) => 'C', chr(195).chr(136) => 'E',
chr(195).chr(137) => 'E', chr(195).chr(138) => 'E',
chr(195).chr(139) => 'E', chr(195).chr(140) => 'I',
chr(195).chr(141) => 'I', chr(195).chr(142) => 'I',
chr(195).chr(143) => 'I', chr(195).chr(145) => 'N',
chr(195).chr(146) => 'O', chr(195).chr(147) => 'O',
chr(195).chr(148) => 'O', chr(195).chr(149) => 'O',
chr(195).chr(150) => 'O', chr(195).chr(153) => 'U',
chr(195).chr(154) => 'U', chr(195).chr(155) => 'U',
chr(195).chr(156) => 'U', chr(195).chr(157) => 'Y',
chr(195).chr(159) => 's', chr(195).chr(160) => 'a',
chr(195).chr(161) => 'a', chr(195).chr(162) => 'a',
chr(195).chr(163) => 'a', chr(195).chr(164) => 'a',
chr(195).chr(165) => 'a', chr(195).chr(167) => 'c',
chr(195).chr(168) => 'e', chr(195).chr(169) => 'e',
chr(195).chr(170) => 'e', chr(195).chr(171) => 'e',
chr(195).chr(172) => 'i', chr(195).chr(173) => 'i',
chr(195).chr(174) => 'i', chr(195).chr(175) => 'i',
chr(195).chr(177) => 'n', chr(195).chr(178) => 'o',
chr(195).chr(179) => 'o', chr(195).chr(180) => 'o',
chr(195).chr(181) => 'o', chr(195).chr(182) => 'o',
chr(195).chr(182) => 'o', chr(195).chr(185) => 'u',
chr(195).chr(186) => 'u', chr(195).chr(187) => 'u',
chr(195).chr(188) => 'u', chr(195).chr(189) => 'y',
chr(195).chr(191) => 'y',
// Decompositions for Latin Extended-A
chr(196).chr(128) => 'A', chr(196).chr(129) => 'a',
chr(196).chr(130) => 'A', chr(196).chr(131) => 'a',
chr(196).chr(132) => 'A', chr(196).chr(133) => 'a',
chr(196).chr(134) => 'C', chr(196).chr(135) => 'c',
chr(196).chr(136) => 'C', chr(196).chr(137) => 'c',
chr(196).chr(138) => 'C', chr(196).chr(139) => 'c',
chr(196).chr(140) => 'C', chr(196).chr(141) => 'c',
chr(196).chr(142) => 'D', chr(196).chr(143) => 'd',
chr(196).chr(144) => 'D', chr(196).chr(145) => 'd',
chr(196).chr(146) => 'E', chr(196).chr(147) => 'e',
chr(196).chr(148) => 'E', chr(196).chr(149) => 'e',
chr(196).chr(150) => 'E', chr(196).chr(151) => 'e',
chr(196).chr(152) => 'E', chr(196).chr(153) => 'e',
chr(196).chr(154) => 'E', chr(196).chr(155) => 'e',
chr(196).chr(156) => 'G', chr(196).chr(157) => 'g',
chr(196).chr(158) => 'G', chr(196).chr(159) => 'g',
chr(196).chr(160) => 'G', chr(196).chr(161) => 'g',
chr(196).chr(162) => 'G', chr(196).chr(163) => 'g',
chr(196).chr(164) => 'H', chr(196).chr(165) => 'h',
chr(196).chr(166) => 'H', chr(196).chr(167) => 'h',
chr(196).chr(168) => 'I', chr(196).chr(169) => 'i',
chr(196).chr(170) => 'I', chr(196).chr(171) => 'i',
chr(196).chr(172) => 'I', chr(196).chr(173) => 'i',
chr(196).chr(174) => 'I', chr(196).chr(175) => 'i',
chr(196).chr(176) => 'I', chr(196).chr(177) => 'i',
chr(196).chr(178) => 'IJ',chr(196).chr(179) => 'ij',
chr(196).chr(180) => 'J', chr(196).chr(181) => 'j',
chr(196).chr(182) => 'K', chr(196).chr(183) => 'k',
chr(196).chr(184) => 'k', chr(196).chr(185) => 'L',
chr(196).chr(186) => 'l', chr(196).chr(187) => 'L',
chr(196).chr(188) => 'l', chr(196).chr(189) => 'L',
chr(196).chr(190) => 'l', chr(196).chr(191) => 'L',
chr(197).chr(128) => 'l', chr(197).chr(129) => 'L',
chr(197).chr(130) => 'l', chr(197).chr(131) => 'N',
chr(197).chr(132) => 'n', chr(197).chr(133) => 'N',
chr(197).chr(134) => 'n', chr(197).chr(135) => 'N',
chr(197).chr(136) => 'n', chr(197).chr(137) => 'N',
chr(197).chr(138) => 'n', chr(197).chr(139) => 'N',
chr(197).chr(140) => 'O', chr(197).chr(141) => 'o',
chr(197).chr(142) => 'O', chr(197).chr(143) => 'o',
chr(197).chr(144) => 'O', chr(197).chr(145) => 'o',
chr(197).chr(146) => 'OE',chr(197).chr(147) => 'oe',
chr(197).chr(148) => 'R',chr(197).chr(149) => 'r',
chr(197).chr(150) => 'R',chr(197).chr(151) => 'r',
chr(197).chr(152) => 'R',chr(197).chr(153) => 'r',
chr(197).chr(154) => 'S',chr(197).chr(155) => 's',
chr(197).chr(156) => 'S',chr(197).chr(157) => 's',
chr(197).chr(158) => 'S',chr(197).chr(159) => 's',
chr(197).chr(160) => 'S', chr(197).chr(161) => 's',
chr(197).chr(162) => 'T', chr(197).chr(163) => 't',
chr(197).chr(164) => 'T', chr(197).chr(165) => 't',
chr(197).chr(166) => 'T', chr(197).chr(167) => 't',
chr(197).chr(168) => 'U', chr(197).chr(169) => 'u',
chr(197).chr(170) => 'U', chr(197).chr(171) => 'u',
chr(197).chr(172) => 'U', chr(197).chr(173) => 'u',
chr(197).chr(174) => 'U', chr(197).chr(175) => 'u',
chr(197).chr(176) => 'U', chr(197).chr(177) => 'u',
chr(197).chr(178) => 'U', chr(197).chr(179) => 'u',
chr(197).chr(180) => 'W', chr(197).chr(181) => 'w',
chr(197).chr(182) => 'Y', chr(197).chr(183) => 'y',
chr(197).chr(184) => 'Y', chr(197).chr(185) => 'Z',
chr(197).chr(186) => 'z', chr(197).chr(187) => 'Z',
chr(197).chr(188) => 'z', chr(197).chr(189) => 'Z',
chr(197).chr(190) => 'z', chr(197).chr(191) => 's'
);
$string = strtr($string, $chars);
return $string;
}
/* Cette fonction fait quelque chose de fonctionel:
* elle retourne le premier charactere et le reste
* d'une chaine de caracteres separement.
* C'est beaucoup plus facile a comprendre pour
* un debutant, a mon avis.
*/
function uncons($string) {
return array(substr($string, 0, 1), substr($string, 1));
}
// header("Location:resultatnum.php");
?>
[/PHP]