Passage variable (pas formulaire)

Bonjour,

page1.php
j'ai effectué une requête sur ma base de donnéee tà partir de celle-ci, je récupère la variable:$row['proteine_number']
et j'affiche un bouton radio.

for($i=1; $i<=$row['proteine_number']; $i++)
{
print("<u>element".$i."</u><br>");
print("<input type=\"radio\" name=\"species$i\" value=\"Human\">Human<br>");
print("<input type=\"radio\" name=\"species$i\" value=\"E.Coli\">E.Coli<br>");
}

page2.php
j'aimerais récupérér la valeur de cette variable ($row['proteine_number']) pour pouvoir récupérer la valeur de mon bouton radio.
MAIS JE N'Y ARRIVE PAS. MA VARIBLE $row['proteine_number'] EST VIDE

$number=$_POST['$row[\'proteine_number\']'];
print("$number<br>");

for($i=1; $i<=$number; $i++)
{
if(!empty($_POST['species'])
{
$species=$_POST['species'.$i];
//blablabla
}

}

Je ne pense pas que je puisse récupérer la variable par les sessions car ma variable fait suite à une requête!
Configuration: Windows XP
Firefox 2.0.0.8

9 réponses

  1. Contributeur
    salut,

    pour passer la variable :
    • si tu connais la valeur et que tu veux la passer par le formulaire tu peux utiliser un '<input type="hidden">' ;
    • ou tu peux la stocker dans la session juste après ta requête et la récupérer ensuite.

    j'essaie de me souvenir de ton site…
    mais je ne vois pas clairement ce que tu veux faire !
    (ô_O)'
    0
    1. Bonjour,

      Via un formulaire j'ai rempli les données concernant la protéine et la sous-unité dans ma base de données (ceci dans deux tables différentes). La proteine peut être étudié selon différentes méthodes.(méthode A, B, C..)
      Pour chaque méthode j'ai :
      des séquences de la sous-unité (ce sont les séquences des sous-unités qui composent la protéine ; chaque sous-unité a une séquence bien définie)

      Voiçi le schéma de mes tables :
      proteine (proteine_id, proteine_nom, proteine_sous_unite_number)
      sous-unite (sous-unite_id, proteine_id, sous-unite_nom)
      method (method_id , proteine_id, method_name)
      sous-unite_sequence (sous-unite_sequence_id, proteine_id, sous-unite_id, method_id, subunit_sequence_comments, subunit_sequence )

      page1.php
      pour une protéine donnée, via des boutons radio, je séléctionne une méthode.
      page2.php
      en fonction du nombre de sous-unité que contient cette protéine (requête mysql; ma variable est $row['proteine_sous_unite_number'] ), pour chaque sous-unité :
      je selectionne une espèce, je met un commentaire et j'indique la séquence.

      Exemple
      sous-unité1:
      full length
      atgaaataa

      sous-unité2:
      mutated
      atgaaagcagggggggggggggggggggggtaa

      page3.php
      j'ai récupérer la valeur de la varaible $row['proteine_number'] via les sessions
      maintenant j'aimerais entrer ces informations dans ma base de donnée.

      VOICI CE QUE J'AIMERAIS OBTENIR:
      proteine_id:89
      sous-unite_id:178
      subunit_sequence_comments:full length
      seq:atgaaataa

      proteine_id:89
      sous-unite_id:177 //
      subunit_sequence_comments:mutated
      seq:atgaaagcagggggggggggggggggggggtaa

      MON SOUCI EST QUE VOICI CE QUE J'OBTIENS: (pour une sous-unité donnée d'un complexe (sous-unite_id), j'ai 2 informations différentes
      proteine_id:89
      sous-unite_id:178
      subunit_sequence_comments:full length
      seq:atgaaataa

      proteine_id:89
      sous-unite_id:177 //
      subunit_sequence_comments:full length
      seq:atgaaataa

      proteine_id:89
      sous-unite_id:178 //
      subunit_sequence_comments:mutated
      seq:atgaaagcagggggggggggggggggggggtaa

      proteine_id:89
      sous-unite_id:177 //
      subunit_sequence_comments:mutated
      seq:atgaaagcagggggggggggggggggggggtaa

      jje pense que cela vient de ma boucle while mais je ne sais pas comment m'en sortir:
      for($i=1; $i<=$nb; $i++)
      {

      //recup des valeurs postées
      $seq=$_POST['seq'.$i ];
      $comments=$_POST['comments '.$i ];

      //récup de la protein_id

      //différentes requêtes sur la base de donnée
      $requete=
      "SELECT protein_id,proteine_nom, proteine_sous_unite_number
      FROM protein
      WHERE protein_id=$protein_id";

      $execution = mysql_query($requete) or die("erreur au niveau de la requête");
      $num_rows = mysql_num_rows($execution);

      if($num_rows==0)
      {
      print("PBE");
      exit;
      }
      else
      {
      $rows = mysql_fetch_assoc($execution);
      $requete2=
      "SELECT sous-unite_id, sous-unite_nom
      FROM sous-unite
      WHERE protein_id=".$row[' proteine_id'];

      $execution2 = mysql_query($requete2) or die("erreur au niveau de la requête2");

      $num_rows2 = mysql_num_rows($execution2);

      if($num_rows2==0)
      {
      print("PBE");
      exit;
      }
      while($ligne=mysql_fetch_assoc($execution2))
      {
      print("protein_id:".."<br>");
      print("subunit_id:".."<br>");
      print("subunit_sequence_comments:"$comments."<br>");
      print("seq:".$seq."<br>");
      }
      }
      }
      0
      1. J'ai fait quelques oublis et erreurs

        while($ligne=mysql_fetch_assoc($execution2))
        {
        print("protein_id:".$row[' proteine_id']."<br>");
        print("subunit_id:".$ligne[' sous-unite_id']."<br>");
        print("subunit_sequence_comments:$comments<br>");
        print("seq:$seq<br>");
        }
        0
        1. Bo njour,

          Je suis toujours bloqué, peut-on me donner des pistes de réflexions.

          Je m'explique par un exemple concret.
          Soit la proteine HREF (caractérisé par un protein_id=89) constitué de 2 sous-unité:
          HREFA(sous-unite_id=178) et
          HREFB (sous-unite_id=177)

          Pour chaque sous-unité via un formulaire, j'indique sa séquence et un commentaire et j'aimerais faire correspondre à chaque sous-unité son commentaires et sa sous-unité et ensuite j'aimerais entrés ces dernières données dans ma base de donnée.

          Mais voilà pour une protéine correspond plusieurs sous-unités et je n'arrive pas a faire correspondre chaque sous-unité a ses données

          for($i=1; $i<=$nb; $i++)
          {

          //recup des valeurs postées
          $seq=$_POST['seq'.$i ];
          $comments=$_POST['comments '.$i ];

          //récup de la protein_id

          //différentes requêtes sur la base de donnée
          $requete=
          "SELECT protein_id,proteine_nom, proteine_sous_unite_number
          FROM protein
          WHERE protein_id=$protein_id";

          $execution = mysql_query($requete) or die("erreur au niveau de la requête");
          $num_rows = mysql_num_rows($execution);

          if($num_rows==0)
          {
          print("PBE");
          exit;
          }
          else
          {
          $rows = mysql_fetch_assoc($execution);
          $requete2=
          "SELECT sous-unite_id, sous-unite_nom
          FROM sous-unite
          WHERE protein_id=".$row[' proteine_id'];

          $execution2 = mysql_query($requete2) or die("erreur au niveau de la requête2");

          $num_rows2 = mysql_num_rows($execution2);

          if($num_rows2==0)
          {
          print("PBE");
          exit;
          }
          while($ligne=mysql_fetch_assoc($execution2))
          {
          print("protein_id:".$row[' proteine_id']."<br>");
          print("subunit_id:".$ligne[' sous-unite_id']."<br>");
          print("subunit_sequence_comments:$comments<br>");
          print("seq:$seq<br>");

          //insertion dans la base de données des séquences et commentaires
          }
          }
          }

          Si au lieu de while($ligne=mysql_fetch_assoc($execution2)) j'utilise $ligne=mysql_fetch_assoc($execution2);
          Pour une même sous-unité j'ai des infos différentes et je n'ai plus accès a la sous-unité_id=177.

          proteine_id:89
          sous-unite_id:178
          subunit_sequence_comments:full length
          seq:atgaaataa

          proteine_id:89
          sous-unite_id:178 //
          subunit_sequence_comments:mutated
          seq:atgaaagcagggggggggggggggggggggtaa
          0
          1. Contributeur
            salut,

            donc "subunit_sequence_comments" & "seq" sont ok ?
            si oui dans :
            while($ligne=mysql_fetch_assoc($execution2))
            {
            print("protein_id:".$row[' proteine_id']."<br>");
            print("subunit_id:".$ligne[' sous-unite_id']."<br>");
            print("subunit_sequence_comments:$comments<br>");
            print("seq:$seq<br>");
            //insertion dans la base de données des séquences et commentaires
            } 

            je ne vois pas d'où sortent '$comments' et '$seq' mais si ils contiennent les bonnes données, je m'attendrais à trouver l'id dans '$sous-unite_id'.
            0
            1. Excuse mou mais je ne vois pas ce que tu veux dire par:
              "je ne vois pas d'où sortent '$comments' et '$seq' mais si ils contiennent les bonnes données, je m'attendrais à trouver l'id dans '$sous-unite_id'. "

              en page 2 je remplis un formulaire.
              Donc pour chaque sous-unité , je dois entrer sa séquence (via un champ textarea) et remplir un champ pour le commentaire.

              sous-unité1:
              comments: full length
              seq: atgaaataa

              sous-unité2:
              comments: mutated
              seq: atgaaagcagggggggggggggggggggggtaa

              en page 3 je récupère donc
              $comments et $seq

              voiçi ce que j'obtiens avec mon script:

              proteine_id:89
              sous-unite_id:178
              subunit_sequence_comments:full length
              seq:atgaaataa

              proteine_id:89
              sous-unite_id:177 //
              subunit_sequence_comments:full length
              seq:atgaaataa

              proteine_id:89
              sous-unite_id:178 //
              subunit_sequence_comments:mutated
              seq:atgaaagcagggggggggggggggggggggtaa

              proteine_id:89
              sous-unite_id:177 //
              subunit_sequence_comments:mutated
              seq:atgaaagcagggggggggggggggggggggtaa

              pour une même sous-unité, j'ai les deux séquences et commentaires qui lui sont attribué alors que je veux:
              proteine_id:89
              sous-unite_id:178
              subunit_sequence_comments:full length
              seq:atgaaataa

              proteine_id:89
              sous-unite_id:177 //
              subunit_sequence_comments:mutated
              seq:atgaaagcagggggggggggggggggggggtaa
              0
              1. Contributeur
                à tout hasard :
                $requete2=
                "SELECT DISTINCT sous-unite_id, sous-unite_nom
                FROM sous-unite
                WHERE protein_id=".$row[' proteine_id']; 
                0
                1. Non cela ne change rien
                  0
                  1. Bonjour,

                    J'essaye de passer autrement pour arriver a mon objectif.

                    page1.php
                    en fesant différentes requête sur ma base de donné, (le complexe HREF est constitué de 2 sous-unité :HREFA et HREFB) j'obtiens un affichage du type:

                    sous-unité:HREFA
                    commentaires: -----
                    sequence: ----

                    sous-unité:HREFB
                    commentaires: -----
                    sequence: ----

                    Pour chaque sous-unité, on doit remplir les champs commentaire et sequence.

                    Mais comment récupérer en page2.php, les données saisies? Je n'arrive qu'à récupérer les dernières données saisies càd celle de HREFB.
                    Je comprend bien qu'il faut que je mette une boucle (incrémentant comments et seq) pour pouvoir récupérer les commentaires et sequence pour chaque sous-unité (de façon a avoir quelque chose (print("<textarea name='comments$i' cols=60 rows=2></textarea><br><br>"); )mais le problème est que je suis dans une boucle while (pour permettre d'avoir chaque sous-unité )...

                    Voivi mon script page1.php

                    // connexion a la DB
                    $requete=
                    "SELECT protein_id,proteine_nom, proteine_sous_unite_number
                    FROM protein
                    WHERE protein_id=$protein_id";

                    $execution = mysql_query($requete) or die("erreur au niveau de la requête");
                    $num_rows = mysql_num_rows($execution);

                    if($num_rows==0)
                    {
                    print("PBE");
                    exit;
                    }
                    else
                    {
                    $rows = mysql_fetch_assoc($execution);
                    $requete2=
                    "SELECT sous-unite_id, sous-unite_nom
                    FROM sous-unite
                    WHERE protein_id=".$row[' proteine_id'];

                    $execution2 = mysql_query($requete2) or die("erreur au niveau de la requête2");

                    $num_rows2 = mysql_num_rows($execution2);

                    if($num_rows2==0)
                    {
                    print("PBE");
                    exit;
                    }
                    while($ligne=mysql_fetch_assoc($execution2))
                    {
                    print("protein_id:".$ligne[' sous-unite_id']."<br>");

                    print("commentaires:<br>");
                    print("<textarea name='comments' cols=60 rows=2></textarea><br><br>");
                    print("sequence:<br>");
                    print("<textarea name='seq' cols=60 rows=2></textarea><br><br>");

                    }
                    }

                    page2.php

                    $comments=$_POST['comments'];
                    $seq=$_POST['seq'];

                    if($comments=="" || $seq =="")
                    {
                    print("remplir les champs");
                    exit;
                    }
                    if(!empty($comments) && !empty($seq))
                    {
                    // connexion a la DB
                    $requete=
                    "SELECT protein_id,proteine_nom, proteine_sous_unite_number
                    FROM protein
                    WHERE protein_id=$protein_id";

                    $execution = mysql_query($requete) or die("erreur au niveau de la requête");
                    $num_rows = mysql_num_rows($execution);

                    if($num_rows==0)
                    {
                    print("PBE");
                    exit;
                    }
                    else
                    {
                    $rows = mysql_fetch_assoc($execution);
                    $requete2=
                    "SELECT sous-unite_id, sous-unite_nom
                    FROM sous-unite
                    WHERE protein_id=".$row[' proteine_id'];

                    $execution2 = mysql_query($requete2) or die("erreur au niveau de la requête2");

                    $num_rows2 = mysql_num_rows($execution2);

                    if($num_rows2==0)
                    {
                    print("PBE");
                    exit;
                    }
                    while($ligne=mysql_fetch_assoc($execution2))
                    {
                    //insertion des données dans la table sous-unite_sequence

                    $requete=
                    INSERT INTO sous-unite_sequence sous-unite_sequence_id, proteine_id, sous-unite_id, subunit_sequence_comments, subunit_sequence
                    VALUES('','".$row[' proteine_id']."', '".$ligne['sous-unite_id']."', $comments, '$seq')";

                    }
                    }
                    0