IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Type valeur input != Type valeur textarea [PHP 5.1]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Federico_muy_bien
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 154
    Par défaut Type valeur input != Type valeur textarea
    Bonjour,
    j'ai encore un probléme
    J'espére encore une fois que les membres de ce fofo vont venir à mon secours.

    J'ai un formulaire XHTML qui permet de choisir un ID et lorsque l'on sauvegarde, par une requete AJAX les différentes infos à propos de cet ID sont cherchées et affichées. Tout marche lorsque l'on choisit un ID et qu'il est saisi dans le input. Mais lorsque l'on spécifie une liste d'ID dans le textarea, les ID sont bien récupérés coté PHP mais impossible avec ces ID d'aller taper les infos dans la base de données.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
            [...]
    	<script language="javascript">
    		function add_condition(){
     
    			var genotype = document.getElementById('genotype').value;
    			var labID = document.getElementById('labID').value;
    			var cgcID = document.getElementById('cgcID').value;
    			var strain_list = document.getElementById('strain_list').value;
     
    			if (genotype==''){
    				Effect.toggle('new_condition', 'slide');
    				return false ;
    			}
     
    			// On va instancier un objet de type Ajax.Request
    			new Ajax.Request("../php/add_condition.php?genotype="+genotype+"&labID="+labID+"&cgcID="+cgcID+"&strain_list="+strain_list,
    			   	{ asynchronous:true, method: 'get',
     
    			   	onSuccess: function(t){ // On a un retour du server (la requete a réussi)
    							document.getElementById("strain_added").innerHTML += t.responseText ;
    							Effect.Grow($('strain_added').lastChild);
    							Effect.toggle('new_condition', 'slide');
    							document.getElementById("genotype").value = '' ;
    							document.getElementById("labID").value = '' ;
    							document.getElementById("cgcID").value = '' ;
     
    					},
    				onFailure: function(){
    			  			alert('Request failed. Contact an admin'); // On affiche une alerte si la requete a échoué   		
    					}
    			});
    		}
    </script>
    </head>
     
    <body>
    <form method="POST" action="../php/save_condition.php" name="conditions_form">
     
    			<div id="new_condition" style="display:none" >
    					<!-- Choose the strain -->
    					<p><b>Choose the condition strain</b></p>
     
     
    						<b>By strain genotype:</b>
    						<input name="genotype" id="genotype" size="70" value="{genotype}"/>
     
     
    						<b>By Laboratory ID:</b>
    						<input name="labID" id="labID" size="20" value="{labID}" />
     
    						<b>By CGC ID:</b>
    						<input name="cgcID" id="cgcID" size="20" value="{cgcID}" />
     
    						<div>
    							<textarea id="strain_list" name="strain_list" cols="60" rows="10"></textarea>
    						</div>
     
    					<p style="text-align:right"><a href="#" onclick="add_condition();return false;"><img id="submit_condition" src="../images/disk.png" alt="#" title="Save this strain"/></a></p>
     
     
    			</div>
    </body>
    </html>

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    $genotype = $_GET['genotype'];
    $labID = $_GET['labID'];
    $cgcID = $_GET['cgcID'];
    $strain_list = $_GET['strain_list'];
     
    $strain_list = explode(",",$strain_list) ;
    		$resultToDisplay = '' ;
     
    		// on renvoi l'info
    		foreach( $strain_list as  $strain_id ) {
    			$resultToDisplay .= display_strain($strain_id,TRUE) ;
    			//$resultToDisplay .= $strain_id."<br />" ;
    		}
    		echo ($resultToDisplay) ;
     
    function display_strain($strain_id,$del=FALSE){
     
    	global $erreur ;
    	include_once "./includes/manage_strain.php" ;
     
    	$labID = get_strain_labID($strain_id);
    	$cgcID = get_strain_cgcID($strain_id);
    	$genotype = get_strain_genotype($strain_id);
     
    	$strain_display = "<div class=\"strain_display\">" ;
    	$strain_display .= "<input type=\"hidden\" name=\"strain_id[]\" value=\"$strain_id\">" ;
    	$strain_display .= "<span title=\"$genotype\">Genotype : <b>".substr($genotype,0,40)."</b></span>" ;
    	$strain_display .= "<span style=\"margin-left:20px\">Lab ID : $labID</span>" ;
    	$strain_display .= "<span style=\"margin-left:20px\">CGC ID : $cgcID</span><br />" ;
     
    	$strain_display .= "</div>" ;
     
     
    	return $strain_display ;
     
    }

    Si je ne fais que faire un echo des strain_id récupérés, ça marche. Donc je me demande si le type de la variable $strain_id n'est pas différente selon qu'elle soit récupérée dans un input ou dans un textarea ... et donc impossible de recuperer les infos dans la BDD avec.

    J'ai élagué le code pour plus de clarté mais si vous voulez des infos demander moi.
    Help !

    Merci

  2. #2
    Membre Expert
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Par défaut
    tu n'ajouterais pas un espace apres la virgule à tout hazard ?

    essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    display_strain(trim($strain_id),TRUE) ;

  3. #3
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Je ne suis pas du tout certain de cerner ton problème, mais comme ça je dirais que la différence viendrait ici :

    <input type="text" value="une valeur" />
    Pour changer sa valeur, qui est dans un attribut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('unID').value = 'autre valeur';
    <textarea>Une valeur</textarea>
    Pour changer sa valeur, qui est comprise entre les balises ouvrante/fermantes) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('unID').innerHtml = 'autre valeur';

    Ou alors, comme il s'agit de formulaire, une autre solution serait donc de passer par le formulaire justement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.form['nom_du_formulaire'].elements['nom_de_element'].value = 'une valeur';

    Une petite parenthèse au passage.
    Apparemment tu utilise jQuery (ou alors ça y ressemble comme 2 gouttes d'eau).
    Pourquoi ne pas l'exploiter en utilisant par exemple (leur homologue ci-dessus) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $("#unID").val("bla bla bla"); // Attribut
    $("#unID").html("bla bla bla"); // entre 2 balises

  4. #4
    Membre confirmé Avatar de Federico_muy_bien
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 154
    Par défaut
    Citation Envoyé par Seb33300
    tu n'ajouterais pas un espace apres la virgule à tout hazard ?
    Salut,
    ouais j'y avais pensé et malheureusement ce n'est pas ça.



    Citation Envoyé par RunCodePhp Voir le message
    Salut
    Salut !

    Citation Envoyé par RunCodePhp Voir le message
    Je ne suis pas du tout certain de cerner ton problème, mais comme ça je dirais que la différence viendrait ici :

    <input type="text" value="une valeur" />
    Pour changer sa valeur, qui est dans un attribut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('unID').value = 'autre valeur';
    <textarea>Une valeur</textarea>
    Pour changer sa valeur, qui est comprise entre les balises ouvrante/fermantes) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('unID').innerHtml = 'autre valeur';
    Ah oui je n'avais pas mis le innerHTML. C'est changé mais cela ne régle pas le probléme

    Citation Envoyé par RunCodePhp Voir le message
    Une petite parenthèse au passage.
    Apparemment tu utilise jQuery (ou alors ça y ressemble comme 2 gouttes d'eau).
    Pourquoi ne pas l'exploiter en utilisant par exemple (leur homologue ci-dessus) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $("#unID").val("bla bla bla"); // Attribut
    $("#unID").html("bla bla bla"); // entre 2 balises
    Ca y ressemble. C'est du Prototype/Scriptaculous


    Le probléme vient vraiment de la partie traitement du textarea parceque lorsque je ne récupére que un input type text, je réalise les mêmes traitements avec le ID récupéré et ça marche !
    Donc avec le texterea je récupere plusieurs id et je fais une boucle ou je traite chacun comme si ils étaient seuls et là aucune info n'est récupérée.

    974

  5. #5
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    mais impossible avec ces ID d'aller taper les infos dans la base de données.
    Et bien c'est quoi le réel problème finalement ?
    Tu veux dire quoi par "taper" ?
    A ma connaissance, ni Php ni MySQL savent "taper".

  6. #6
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Essai comme j'ai dis plus haut, en passant par le formulaire :
    (au moins essayer pour voir)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var = document.form["conditions_form"].elements["strain_list"].value;
    Je ne connais pas Prototype/Scrip..., mais il doit avoir quelque chose de similaire ou proche.

    Faut p'être lui poser la question ? (il en connais des truc lui)

  7. #7
    Membre confirmé Avatar de Federico_muy_bien
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 154
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message
    Essai comme j'ai dis plus haut, en passant par le formulaire :
    (au moins essayer pour voir)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var = document.form["conditions_form"].elements["strain_list"].value;
    Je ne connais pas Prototype/Scrip..., mais il doit avoir quelque chose de similaire ou proche.

    Faut p'être lui poser la question ? (il en connais des truc lui)
    J'ai essayé avec le nom de formulaire, ça n'a pas marché. Et justement je cherche en ce moment un équivalent de ce que tu m'as dit pour Prototype

  8. #8
    Membre confirmé Avatar de Federico_muy_bien
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 154
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message
    Et bien c'est quoi le réel problème finalement ?
    Tu veux dire quoi par "taper" ?
    A ma connaissance, ni Php ni MySQL savent "taper".
    ça dépend avec MySQL tu peux envoyer des roquettes
    Ce que je veux dire c'est que avec le $id je recupere des données dans une base de données.

    Par exemple :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    $labID = get_strain_labID($strain_id);
    	$cgcID = get_strain_cgcID($strain_id);
    	$genotype = get_strain_genotype($strain_id);
     
    function get_strain_genotype($strain_id){
     
    	global $erreur ;
     
    	// Récupération du nom de la souche
    	$query = "SELECT genotype FROM strain WHERE strain_id = '".$strain_id."'";
     
    	$res_query = mysql_query($query) ;
     
    	if ($res_query == FALSE){
    		$erreur .= Erreur("Error while trying to get genotype in manage strain".mysql_error()) ;
    	}
     
    	else {
    		$row = mysql_fetch_array($res_query);
    		$genotype = $row[0];
    		return $genotype ;
    	}
    }

    Donc typiquement avec un seul strain_id récupéré dans un input type text, toutes les infos sont récupérés et affichées. Mais lorsque j'ai une liste de strain_id, et que pour chacun je lance la meme fonction je n'ai rien. Si je fais un echo ID dans la fonction il me renvoie bien l'ID mais les requetes MySQL n'aboutissent pas ... mais aucune erreur ne remonte.

  9. #9
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Faudrait faire un peu de débug.

    Faudrait éviter de déclencher la fonction qui requêteet qui génère les éléments, mais renvoyer un echo avec divers info, comme ce que tu reçois en GET, et voir même ce que produit la boucle.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/02/2014, 13h28
  2. Récupérer une valeur input type file
    Par nal dans le forum Langage
    Réponses: 1
    Dernier message: 23/04/2012, 12h58
  3. input type text vers type password
    Par sihammaster dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 14/03/2012, 13h09
  4. recuperation valeur input type text
    Par boubounne dans le forum ASP.NET
    Réponses: 3
    Dernier message: 18/06/2008, 15h12
  5. Changer un input type="text" en type="password" + le vider
    Par Mazike dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/01/2008, 14h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo