Page 1 sur 1

Probleme de variables lors d'envoie d'un formulaire

Posté : 10 déc. 2006, 21:56
par loneliness
Bonjour,

Les variables, text2, POURCENTAGE, POURCENTAGE_TOTAL, sont vident lorsque que je valide le formulaire d'enregistrement dans la bd, pouvez vous m'eclairer, car ce qui est bizarre c'est que text1 est valide... :
<?

	if($conf){
		$save=$_POST['Save'];
		$text1=$_POST['text1'];
		[color=red]$text2=$_POST['text2'];[/color]		$option=$_POST['option'];
		[color=red]$POURCENTAGE=$_POST['POURCENTAGE'];
		$POURCENTAGE_TOTAL=$_POST['POURCENTAGE_TOTAL'];[/color]		$id=$_SESSION['id_unique'];
		
		echo "**** $text2 ****"; //non
		echo "**** $text1 ****"; //ok
		echo "**** $option ****"; //ok 
		echo "**** $POURCENTAGE ****"; //non 
		echo "**** $POURCENTAGE_TOTAL ****"; //non
		
		if($option != line){
			if($save == "yes"){
			$req3="INSERT INTO textsave(id_user,texte1,texte2,result) VALUES('$id','$text1','$text2','$POURCENTAGE');";
			mysql_query($req3) or die("bad insert in bd <br>$req3<br>".mysql_error());
		}
		}else {
			if($save == "yes"){
			$req3="INSERT INTO textsave(id_user,texte1,texte2,result) VALUES('$id','$text1','$text2','$POURCENTAGE_TOTAL');";
			mysql_query($req3) or die("bad insert in bd <br>$req3<br>".mysql_error());
			}
		}
	}
	
	$texte1=$_POST['texte1'];
	$texte2=$_POST['texte2'];
	$option=$_POST['option1'];

	$texte1_save=$texte1;
	$texte2_save=$texte2;
	
	//Verification si le champ texte1 est rempli
	if(!empty($texte1) || !empty($texte2)){
		
		//initialize all variable
		$count_TOTAL_1 = 0;
		$count_TOTAL_2 = 0;
	
		
		if($option == "Sentences"){
		//On verifie la longueur des texte
		if(strlen($texte2)>strlen($texte1)){
			$tmp = $texte1;
			$texte1 = $texte2;
			$texte2 = $tmp;		
		}
		
		//test per sentence
				
		$array_texte1 = explode(".", strtolower($texte1)); 
  		$array_texte2 = explode(".", strtolower($texte2));
		
		} else if($option == "line"){
				
		$texte1=str_replace("," , " ",$texte1);
		$texte2=str_replace("," , " ",$texte2);
		
		$texte1=str_replace("." ," ",$texte1);
		$texte2=str_replace("." ," ",$texte2);

		$texte1=str_replace(":" , " ",$texte1);
		$texte2=str_replace(":" , " ",$texte2);

		$texte1=str_replace("!" ," ",$texte1);
		$texte2=str_replace("!" ," ",$texte2);

		$texte1=str_replace("?" , " ",$texte1);
		$texte2=str_replace("?" , " ",$texte2);

		$texte1=str_replace("\\" ," ",$texte1);
		$texte2=str_replace("\\" ," ",$texte2);

		$texte1=str_replace("?" , "",$texte1);
		$texte2=str_replace("?" , "",$texte2);

		$texte1=str_replace("\"" ," ",$texte1);
		$texte2=str_replace("\"" ," ",$texte2);

		$texte1=str_replace(";" , " ",$texte1);
		$texte2=str_replace(";" , " ",$texte2);
		
		$texte1=str_replace("'" ," ",$texte1);
		$texte2=str_replace("'" ," ",$texte2);

		$texte1=str_replace("(" , " ",$texte1);
		$texte2=str_replace("(" , " ",$texte2);

		$texte1=str_replace(")" , " ",$texte1);
		$texte2=str_replace(")" , " ",$texte2);

		$texte1=str_replace("¦" , " ",$texte1);
		$texte2=str_replace("¦" , " ",$texte2);
		
		$lines_texte1 = array();
		$lines_texte2 = array();
		
		while(strlen($texte1)>80){
			$tronque = tronque($texte1,80);
			//echo "$tronque<br>";
			array_push($lines_texte1,$tronque);
			$texte1 = substr($texte1,strlen($tronque),strlen($texte1));			
		}
		array_push($lines_texte1,$texte1);
		
		
		while(strlen($texte2)>80){
			$tronque = tronque($texte2,80);
			//Remplissage du tableau $lines_texte2 avec la ligne $tronque
			array_push($lines_texte2,$tronque);
			//Permet de mettre a jour $texte2 en enlevant la partie tronquée
			$texte2 = substr($texte2,strlen($tronque),strlen($texte2));			
		}
		//si la chaine est < 80 caractères alors il n'y a pas besoin de tronquer
		array_push($lines_texte2,$texte2);
		

		
		}else if($option == "WordsPonc"){
		
		//On verifie la longueeur des texte
		if(strlen($texte2)>strlen($texte1)){
			$tmp = $texte1;
			$texte1 = $texte2;
			$texte2 = $tmp;		
		}
		
		$texte1=str_replace("," , " ,",$texte1);
		$texte2=str_replace("," , " ,",$texte2);
		
		$texte1=str_replace("." ," .",$texte1);
		$texte2=str_replace("." ," .",$texte2);

		$texte1=str_replace(":" , " :",$texte1);
		$texte2=str_replace(":" , " :",$texte2);

		$texte1=str_replace("!" ," !",$texte1);
		$texte2=str_replace("!" ," !",$texte2);

		$texte1=str_replace("?" , " ?",$texte1);
		$texte2=str_replace("?" , " ?",$texte2);

		$texte1=str_replace("\\" ," ",$texte1);
		$texte2=str_replace("\\" ," ",$texte2);

		$texte1=str_replace("?" , " ?",$texte1);
		$texte2=str_replace("?" , " ?",$texte2);

		$texte1=str_replace("\"" ," \" ",$texte1);
		$texte2=str_replace("\"" ," \" ",$texte2);

		$texte1=str_replace(";" , " ;",$texte1);
		$texte2=str_replace(";" , " ;",$texte2);
		
		$texte1=str_replace("'" ," ' ",$texte1);
		$texte2=str_replace("'" ," ' ",$texte2);

		$texte1=str_replace("(" , " ( ",$texte1);
		$texte2=str_replace("(" , " ( ",$texte2);

		$texte1=str_replace(")" , " ) ",$texte1);
		$texte2=str_replace(")" , " ) ",$texte2);

		$texte1=str_replace("¦" , " ¦ ",$texte1);
		$texte2=str_replace("¦" , " ¦ ",$texte2);
		
		$array_texte1 = explode(" ", strtolower($texte1)); 
  		$array_texte2 = explode(" ", strtolower($texte2));
		
		}else if($option == "Words"){
		
		//On verifie la longueeur des texte
		if(strlen($texte2)>strlen($texte1)){
			$tmp = $texte1;
			$texte1 = $texte2;
			$texte2 = $tmp;		
		}
		
		$texte1=str_replace("," , " ",$texte1);
		$texte2=str_replace("," , " ",$texte2);
		
		$texte1=str_replace("." ," ",$texte1);
		$texte2=str_replace("." ," ",$texte2);

		$texte1=str_replace(":" , " ",$texte1);
		$texte2=str_replace(":" , " ",$texte2);

		$texte1=str_replace("!" ," ",$texte1);
		$texte2=str_replace("!" ," ",$texte2);

		$texte1=str_replace("?" , " ",$texte1);
		$texte2=str_replace("?" , " ",$texte2);

		$texte1=str_replace("\\" ," ",$texte1);
		$texte2=str_replace("\\" ," ",$texte2);

		$texte1=str_replace("?" , "",$texte1);
		$texte2=str_replace("?" , "",$texte2);

		$texte1=str_replace("\"" ," ",$texte1);
		$texte2=str_replace("\"" ," ",$texte2);

		$texte1=str_replace(";" , " ",$texte1);
		$texte2=str_replace(";" , " ",$texte2);
		
		$texte1=str_replace("'" ," ",$texte1);
		$texte2=str_replace("'" ," ",$texte2);

		$texte1=str_replace("(" , " ",$texte1);
		$texte2=str_replace("(" , " ",$texte2);

		$texte1=str_replace(")" , " ",$texte1);
		$texte2=str_replace(")" , " ",$texte2);

		$texte1=str_replace("¦" , " ",$texte1);
		$texte2=str_replace("¦" , " ",$texte2);

		$array_texte1 = explode(" ", strtolower($texte1)); 
  		$array_texte2 = explode(" ", strtolower($texte2));
		
		}
		if(( $_SESSION['logged'] == "true") && $_SESSION['type']=="user" ){ 
		?>
	
		<HTML>
		<HEAD>
		</HEAD>
		<BODY>
		<h4><center> Do you want to save all text and result? </h4>
		<? echo "** $texte2_save **  $POURCENTAGE ** $POURCENTAGE_TOTAL **"; ?>
		<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post" >
		<input type="hidden" name="conf" value="1">
		<input type="hidden" name="option" value="<?= $option ?>">
		<input type="hidden" name="text1" value="<?= $texte1_save ?>">
		<input type="hidden" name="text2" value="<?= $texte2_save ?>">
		<input type="hidden" name="POURCENTAGE" value="<?= $POURCENTAGE ?>">
		<input type="hidden" name="POURCENTAGE_TOTAL" value="<?= $POURCENTAGE_TOTAL ?>">
		<input type="radio" name="Save" value="yes"> yes
		<input type="radio" name="Save" value="no"> no
		<br><br>
		<input type="Submit" value="ok" name="submit">
		</center>
		</form>
		</BODY>
		</HTML>	
		
		<? } 
		if($option != "line"){
			// Affichage 
			$count_tab_texte1 = count($array_texte1); 
			$count_tab_texte2 = count($array_texte2);
	 		
			$occurence_tab1 = array_count_values($array_texte1);
			$keys_occurence_tab1= array_keys($occurence_tab1);
		
			//Count number of Occurence
			for($i = 0; $i < count($keys_occurence_tab1) ; $i++){
				$occurance_tab2[$i] = count(array_keys($array_texte2, $keys_occurence_tab1[$i]));
				$count_TOTAL_1 += $occurence_tab1[$keys_occurence_tab1[$i]];
				$count_TOTAL_2 += $occurance_tab2[$i];
			}
			

			$NB_WORD1=count($keys_occurence_tab1);
			$NB_WORD2=count($keys_occurence_tab2);
			$NB_WORD=$NB_WORD1+$NB_WORD2;
			
			$POURCENTAGE=round((($count_TOTAL_2*100)/$count_TOTAL_1),2);
			
			echo "<P> <HR> <P>";
			echo "Text 1 : ".$texte1_save."<br>";
			echo "Text 2 : ".$texte2_save."<br><br>";
				
			//Print all words and occurence
			echo "<table border=1>";
			if($option == "Words" || $option == "WordsPonc"){
			echo "<td> Test per Words </td>";
			}else if ( $option =="line" ){
			echo "<td> Test per Lines </td>";
			}else{
			echo "<td> Test per Sentences </td>";
			}


			echo "<tr>";
			if($option == "Words" || $option == "WordsPonc"){
			echo "<td>".$NB_WORD." Shared words(s)</td>";
			}else{
			echo "<td>".$NB_WORD." Shared Sentence(s)</td>";
			}
			echo "<td> Frequency in text 1 </td>";
			echo "<td> Frequency in text 2 </td>";
			echo "</tr>";
			
			for($i = 0; $i < count($keys_occurence_tab1) ; $i++){
				//Correction for the good formating array
				if($keys_occurence_tab1[$i] != ""){
				echo "<tr>";
					if($occurance_tab2[$i] != 0 ){
					echo "<td>".$keys_occurence_tab1[$i]."</td>";
					echo "<td>".$occurence_tab1[$keys_occurence_tab1[$i]]."</td>";
					echo "<td>".$occurance_tab2[$i]."</td>";
					//mettre qqchose pour compter le nombre de mot valide
					}
				echo "</tr>";
				}	
			}
			echo "<tr>";
			echo "</tr>";
			echo "</table>";
			echo "<table border=1>";
			echo "<tr>";
			echo "<td> Correspondence : ".$POURCENTAGE."%</td>";
			echo "</tr>";
			echo "</table>";
		} //Si on compare par le nombre de ligne alors voila le resultat
		else{
			$Number_of_line=count($lines_texte1);
			echo "Number of Line ".count($lines_texte1);
			echo "<table border=2>";
				echo "<tr  bgcolor='#CCCCCC'>";
					echo "<td>line texte 1</td>";
					echo "<td>line texte 2</td>";
					echo "<td>Correspondence</td>";
				echo "</tr>";
			//on depile le tableau par la fonction array_shift
			$line1 = array_shift($lines_texte1);
			$line2 = array_shift($lines_texte2);
			//on verifie si l'un des tableaux n'est pas vide
			while(($line1 != null) || ($line2 != null )){
				//on explose le tableau avec comme delimiteur les espaces
				$array_texte1 = explode(" ", strtolower($line1)); 
				$array_texte2 = explode(" ", strtolower($line2));				
				
				//on sauvegarde les lignes a comparer
				$line1_save = $line1;
				$line2_save = $line2;
				
				
				if($line2 != null && $line1 != null){
					
					//resolution probleme d'affichage comparaison de la chaine la plus grande sur la chaine la plus petite
					if(strlen($line2)>strlen($line1)){
						$tmp = $array_texte1;
						$array_texte1 = $array_texte2;
						$array_texte2 = $tmp;
					}
						
						
					// Affichage 
					$count_tab_texte1 = count($array_texte1); 
					$count_tab_texte2 = count($array_texte2);
			 		
					$occurence_tab1 = array_count_values($array_texte1);
					$keys_occurence_tab1= array_keys($occurence_tab1);
				
					//Count number of Occurence
					for($i = 0; $i < count($keys_occurence_tab1) ; $i++){
						$occurance_tab2[$i] = count(array_keys($array_texte2, $keys_occurence_tab1[$i]));
						$count_TOTAL_1 += $occurence_tab1[$keys_occurence_tab1[$i]];
						$count_TOTAL_2 += $occurance_tab2[$i];
					}
						
					//calcul du pourcentage avec comme limitation a 2 chiffres apres la virgule
					$POURCENTAGE=round((($count_TOTAL_2*100)/$count_TOTAL_1),2);
				}else{
					$POURCENTAGE=0;
				}
				
				echo "<tr>";
				echo "<td>$line1_save</td>";
				echo "<td>$line2_save</td>";
				echo "<td>$POURCENTAGE %</td>";
				echo "</tr>";
				$POURCENTAGE_TOTAL+=$POURCENTAGE;
				//on recharge une nouvelle ligne
				$line1 = array_shift($lines_texte1);
				$line2 = array_shift($lines_texte2);
			}
			$POURCENTAGE_TOTAL=round(($POURCENTAGE_TOTAL/$Number_of_line),2);
			echo "<td></td><td>Result : </td>";
			echo "<td> $POURCENTAGE_TOTAL %</td>";
			echo "</table>";
		}		
	}	
	
	?>

Posté : 10 déc. 2006, 21:59
par Truc
Modération :
Afin d'améliorer la lisibilité de ton message, pense à utiliser les balises [code] ou [php] (selon le langage utilisé) tu peux même éditer ton message pour ce faire.

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Et les tag [URG] ne sont pas les bienvenues... il n'y a que pour toi que c'est urgent !




[Edit (Cyrano)]J'ai viré le [URG] et ajouté les balises.[/Edit]

Posté : 10 déc. 2006, 23:28
par Truc
Il s'agit de ton 1er message soyons indulgent :wink:

Pour ton souci essaye de cibler le code... enleve tout le superflux (traitements) pour faciliter le débug.

text2, POURCENTAGE et POURCENTAGE_TOTAL se suivent dans le formulaire il y a peut être un lien avec ce qu'il y a avant.
Que contient $texte1_save ?

Au passage il est préférable de laisser la version courte des echo de coté (Pour des raisons de "portabilité" du code sur les futur versions de PHP):
Remplace :
<?= $variable ?>
Par
<?php echo $variable; ?>

Posté : 10 déc. 2006, 23:33
par Ajoloca
Bonjour,

En plus de ce que t'a dit Truc

Il est fortement déconseillé dutiliser les "short_open_tags"
<?php
à la place de
<?
en début de script.