Boucle If

eniluap
Invité n'ayant pas de compte PHPfrance

19 avr. 2007, 13:38

Bonjour, je vous écris (de nouveau lol) pour encore vous demander de l'aide pour un autre problème

j'ai un formulaire html en relation avec un script php en relation avec une base mysql

je rentre une séquence d'ARN dans mon formulaire le script php fait les opération que je lui demande
je vous monntre
#1E CADRE
$ecrire = 0;
for ($i=0;$i<($long/3);$i++){
	$C= substr ($seq,3*$i,3);
	$typ=3;
		
	$tab= array ($i=>$C);
	#print_r($tab[$i]);
		   
	# connexion au serveur

	# définition de la requête
	$req = "SELECT typ FROM start WHERE NOM='$org' AND CODON='$C'";
	#echo "<br>$req";

	# soumission de la requête
	$res= mysql_query($req)or die ("<br>erreur : probleme avec la requête");


	# récupération des lignes renvoyées par la requête
	while($ligne = mysql_fetch_array($res)) {
#		echo "coucou c'est moi";
		extract($ligne);
$ini="";
	}
	
	
	if ($typ == 0) {		
		$ecrire = 1;
		$ini=$C;
		echo "<font color =green>$ini</font color>";
	}
	elseif ($typ == 1) {
		echo "<font color =red>$C</font color><br>";
		$ecrire = 0;
	}
	if (($ecrire == 1) && ($C!=$ini)) {
		echo "$C";
	}
	
}

(toutes les variables sont bien définies)

moi ce que je voudrais c'est que quand la taille de la séquence qui s'affiche est de 3 lettres a la place il m'écrive rien.
en gros je voudrais que quand $typ==1 il n'écrive rien si avant il n'y a pas $typ==0
Je ne sais pas si c'est tres clair (meme pas du tout à mon avis) mais si vous pouvez m'aider ça serait cool

Merci et bonne après-midi

enilaup
Invité n'ayant pas de compte PHPfrance

19 avr. 2007, 13:47

C'est encore moi

ou alors il me faudrai une fonction qui me permettrai de definir la séquence resultat de la boucle que je nommerai $toto et apres suivant le longueur de $toto je ferai un if du genre si la longueur de $toto est de 3 alors ne rien écrire

eniluap
Invité n'ayant pas de compte PHPfrance

20 avr. 2007, 10:00

Bon c'est encore moi ca cogite dans ma tete !!!
en fait ce que je voudrais c'est mettre le resultat de la boucle dans une variable
parce que j'ai essayer $toto = if ($typ == 0) {
$ecrire = 1; ....
...........

mais ça ne marche pas :cry: :cry:

merci et bonne journée à tous

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

20 avr. 2007, 10:41

J'ai un peu de mal à comprendre ce que tu veux faire.

En gros, tu as une chaine $seq, que tu segmentes par lot de 3 caractères dans $C (déjà des noms explicites à tes variables éclairement sans doute beaucoup plus le code, et pour toi, et pour ceux qui pourraient avoir à le maintenir un jour :))
A partir de ce segment, tu vas chercher la valeur de $typ associée, et c'est à partir de la que je ne te suis pas sur de te suivre :)

Si $typ est égal à 0 tu écris ta chaine en vert, si c'est égal à 1 tu l'écris en rouge et ce que tu veux, c'est ne rien écrire s'il n'y a pas eu de 0 avant ? dans ce cas tu n'étais pas loin :
if ($typ == 0) { // si le type est '0'
  echo '<span style="color:green;">'.$C.'</span>'; // j'ai collé du css a la place du font
  $ecrire = true; // j'utilise un booléen pour dire qu'on a eu une chaine '0'
} 
if ($typ == 1 && $ecrire == true) { // si le type est '1' et qu'il y a eu un '0' au préalable
  echo '<span style="color:green;">'.$C.'</span>'; 
  $ecrire = false; // on remet le flag à zéro
} 
C'est bien ce que tu attends ? :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

eniluap
Invité n'ayant pas de compte PHPfrance

20 avr. 2007, 10:55

Merci c'est bien ça que je voulais faire mais je dois le mettre ou dans ma boucle

je sais je suis embetante mais je commence juste on doit developper ce petit programme dans le cadre d'une iniatiation en programmation.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

20 avr. 2007, 10:59

Au même endroit où tu l'avais placé dans ton premier code :
#1E CADRE 
$ecrire = false; 
for ($i=0;$i<($long/3);$i++){ 
    $C= substr ($seq,3*$i,3); 
    $typ=3; 
         
    $tab= array ($i=>$C); 
    #print_r($tab[$i]); 
            
    # connexion au serveur 

    # définition de la requête 
    $req = "SELECT typ FROM start WHERE NOM='".$org."' AND CODON='".$C."'"; 
    #echo "<br>$req"; 

    # soumission de la requête 
    $res= mysql_query($req)or die ("<br>erreur : probleme avec la requête"); 


    # récupération des lignes renvoyées par la requête 
    while($ligne = mysql_fetch_array($res)) { 
#        echo "coucou c'est moi"; 
        extract($ligne); 
// $ini=""; 
    } 
     
if ($typ == 0) { // si le type est '0' 
  echo '<span style="color:green;">'.$C.'</span>'; // j'ai collé du css a la place du font 
  $ecrire = true; // j'utilise un booléen pour dire qu'on a eu une chaine '0' 
}  
if ($typ == 1 && $ecrire == true) { // si le type est '1' et qu'il y a eu un '0' au préalable 
  echo '<span style="color:green;">'.$C.'</span>';  
  $ecrire = false; // on remet le flag à zéro 
}
     
} 
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

eniluap
Invité n'ayant pas de compte PHPfrance

20 avr. 2007, 11:09

Merci Ryle pour ta réponse mais ca marche pas il ecrit quand meme $typ==1 malgré que avant il n'y a pas $typ==0

eniluap
Invité n'ayant pas de compte PHPfrance

20 avr. 2007, 11:19

en fait si ca marche tres bien mais je n'était pas sur le bon script
:? :?

merci beaucoup!!!! :D :D :D

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

20 avr. 2007, 12:29

lol :)


Puisque la question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.

Tu peux réaliser cette opération toi-même
en cliquant sur le bouton [Mettre Résolu] qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...