Encore un problème de php ^^

Any

Membre actif
23 Février 2009
170
10
34
toulouse
Bonjour,

Alors voila mon code pour convertir un chiffre romain en chiffre arabe et inversement, je ne comprend pas pourquoi il ne marche pas !
soyez indulgent je débute xD

CODE HTML

Bloc de code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">


<html>

	<head>
	
		<title>conversion</title>
		
	</head>

	<body>
		
		<h1>Conversion de nombre arabe en nombre romain</h1>
		
		<form action="traitement.php" method="GET"> 
		    <p>Nombre arabe&nbsp;: <input type="text" name="arabe"/>
			<input type="submit" value="->"/>
			<input type="submit" value="<-"/>
			Nombre romain&nbsp;: <input type="text" name="romain" /></p>
			
	</body>

</html>



CODE PHP

Bloc de code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">


<html>

	<head>
	
		<title>conversion</title>
		
	</head>

	<body>
	
		<?php
			
			// Retourne la valeur romaine d'un chiffre décimal.
			function decEnRom($num) 
			{
				// Vérification de l'entier
			    $n = intval($num);
			    $res = '';

			    // Declaration du tableau
			    $tabDecEnRom = array('M' => 1000, 'CM' => 900, 'D' => 500, 'CD' => 400,
			    'C' => 100, 'XC' => 90, 'L' => 50, 'XL' => 40,
			    'X' => 10, 'IX' => 9, 'V' => 5, 'IV' => 4, 'I' => 1);
				 
				// Boucle de convertion
			    foreach ($tabDecEnRom as $romain => $valeur) 
			    {
			        $trouver = intval($n / $valeur);
			        $res .= str_repeat($romain, $trouver);
			        $n = $n % $valeur;
			    }
				
				// Nombre convertis
			    return $res;
			}
			
			// Retourne la valeur decimale d'un chiffre romain.
			function romEnDec($num) 
			{
				$somme = 0;
				for ( $i = 0; $i < strlen($num) - 1; $i++ )
				{	
					if ( valeur($num{$i}) >= valeur($num{$i + 1}))
					{
						somme += valeur($num{$i});
					}
					else
					{
						somme -= valeur($num{$i});
					}
				}
				somme = somme + valeur($num{$i});
			}
			
			// Retourne la valeur d'un caractère romain.
			function valeur($n)
			{	
				switch($n)
				{
			        Case "I": echo "1"
			        Case "V": echo "5"
			        Case "X": echo "10"
			        Case "L": echo "50"
			        Case "C": echo "100"
			        Case "D": echo "500"
			        Case "M": echo "1000"
				}
			}
			
			// Récupération des variables.
			$arabe = $_GET['arabe'];
			$romain = $_GET['romain'];
			
			// Traitement de la variable et message d'erreur possible.
			if( 1 => $arabe || 4999 <= $arabe) 
			{ 
			    echo "<p>Votre nombre n&apos;est pas compris entre 1 et 4999.</p>";
			}
			else
			{	
				// Utilisation des variables.
				if (isset($_GET['->']))
				{ 
					echo " le nombre arabe convertis est&nbsp;: ";
					echo decEnRom($arabe);
				}
				elseif (isset($_GET['<-']))
				{ 
					echo " le nombre romain convertis est&nbsp;: ";
					echo romEnDec($romain);
				}
				else
				{
					echo "Erreur !";
				}
			}
		
		?>
		
	</body>

</html>
 
Et bien en faite sa marche mais le résultat que je veux n'est pas au rendez vous ^^

Je m'explique je veux les résultat dans un autre champs sur la même page ! Or il me les donne sur une autre page xD

ps: jai rajouter les ; dans le switch , j'ai rajouter des $ devant somme et j'ai renommé mes bouton !
 
<form action="traitement.php"
Le formulaire vous envoie sur la page "traitement.php". Est-ce bien la page comportant votre code HTML ?
 
non c'est la page ou le calcul s'effectue !

Dans ce cas il est logique que le résultat ne soit pas sur votre page où figure le code HTML ;) vu que votre script est dirigé vers la page de traitement en PHP. Il faut que vous pointiez le composant "action" du formulaire vers la page où vous souhaitez être redirigé.
 
Dans ce cas il est logique que le résultat ne soit pas sur votre page où figure le code HTML ;) vu que votre script est dirigé vers la page de traitement en PHP. Il faut que vous pointiez le composant "action" du formulaire vers la page où vous souhaitez être redirigé.

Donc il faut que je fasse le traitement en php sur ma page html ? si oui comment redirigé le résultat dans le champs ?
 
Renommez dans un premier temps votre page principale : il faut l'extension *.php pour que le traitement soit possible.

Ensuite, en-tête de ce fichier (avant le code HTML quoi), collez le code de traitement PHP.

Puis, pour mettre le résultat dans un champ : quel type de champ ? Une DIV ? Une INPUT ? Autre ?
 
je veux le générer dans un input en fait l'utilisateur rentre un nombre et sa le convertis en romain dans un champs a coté et inversement si il rentre un chiffre romain il sera convertis dans le champs ou il aurait pu rentrer un chiffre décimal !!

je ne sais pas si c'est claire mais regardez le code html et vous comprendrez ^^
 
Ok. Dans l'input désiré, rajoutez un composant value="XXX"

En remplaçant XXX par le résultat du calcul.
 
Ok. Dans l'input désiré, rajoutez un composant value="XXX"

En remplaçant XXX par le résultat du calcul.


ok ok et on affiche le résultat comment parce que le php s'exécute après l'html dans mon code !?

Je devrais peut être rafraichir la page avec les valeur calculé dans le composant value ? Si c'est le cas je ne sais pas comment faire xD

Je te remercie de prendre du temps pour moi sebastiano !!
 
Merci sa marche Sébastiano mais maintenant j'ai un autre problème xD sur un autre sujet !

en effet je voudrais afficher un tableau comme ceci :

Nom Prénom Pôle
XXX XXX XX
XXX XXX XX
XXX XXX XX

VOICI MON CODE

Bloc de code:
<table border>

<?php

	$professeurs = array(
		1 => array('Nom' => 'XXX', 'Pr&eacute;nom' => 'XXX', 'P&ocirc;le' => 'XX'),
		2 => array('Nom' => 'XXX', 'Pr&eacute;nom' => 'XXX', 'P&ocirc;le' => 'XX'),
		3 => array('Nom' => 'XXX', 'Pr&eacute;nom' => 'XXX', 'P&ocirc;le' => 'XX')
		);
	
	foreach($professeurs as $cle1 => $valeur1)
	{
    	foreach ($valeur1 as $cle2 => $valeur2)
    	{
				echo "<tr><td>$cle2</td></tr><tr><td>$valeur2</td></tr>";
    	}
	}

?>

</table>
 
A l'intérieur de ta première boucle :

Bloc de code:
echo "<tr>";
$sortie='';
foreach ($valeur1 as $cle2 => $valeur2)
{
     if($cle1==1)
          echo "<td>$cle2</td>";
     $sortie.="<td>$valeur2</td>";
}
if($cle1==1)
     echo "</tr><tr>";
echo "$sortie</tr>";

En gros, on affiche la clé du tableau que lors de la première ligne. Logique.
Et pour afficher le contenu, on le mémorise dans une variable et on l'affiche une fois la ligne complètement mémorisée. Ceci est obligatoire car on ne peut pas afficher directement l'en-tête puis la 1e ligne, les données se chevauchant.

Je sais pas si je suis clair, mais cette solution fonctionne. ;)
 
Quand j'ai ce tableau ! comment je peux faire pour retourner la valeur 1 si par la méthode post je demande de rentrer XXXX ? j'ai essayer avec array search mais sa ne marche pas !

Bloc de code:
$professeurs = array(
					1 => array('Nom' => 'XXXX', 'Pr&eacute;nom' => 'YYY', 'P&ocirc;le' => 'ZZ'),
					2 => array('Nom' => 'AAAA', 'Pr&eacute;nom' => 'BBB', 'P&ocirc;le' => 'CC'),
					3 => array('Nom' => 'DDDD', 'Pr&eacute;nom' => 'EEE', 'P&ocirc;le' => 'FF')
					);