Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/08/2011, 15h14   #1
Membre habitué
 
Inscription : septembre 2008
Messages : 136
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 136
Points : 103
Points : 103
Par défaut Difficultés d'analyse formulaire

Bonjour,
Je suis novice dans le développement Php et j'envisage de modifier quelques options d'un Groupware libre. A la validation d'un formulaire, je souhaiterais que la valeur d'un champ soit remplacée par le résultat d'une requête que j'exécute.
Cette requête doit en outre prendre comme critère une sélection d'un menu déroulant de formulaire.

J'ai bien identifié la ligne de code relative au champ dont je souhaite forcer la valeur :
Code :
1
2
 
$corps_sql = " titre=".db_insert($_POST["titre"]).", description=".db_insert($_POST["description"]
L'ennui, c'est que je ne comprends pas à quoi ["titre"] & ["description"] correspondent. et je préférerais les remplacer par les valeurs retournées par ma requête :

Code :
1
2
3
4
SELECT `gt_aleatoire_pp`.`titre`, `gt_aleatoire_pp`.`description`
FROM `gt_aleatoire_pp`, `gt_agenda_categorie` 
where `gt_aleatoire_pp`.`id_categorie`=`gt_agenda_categorie`.`id_categorie`
order by rand() limit 1
Auriez-vous une idée de la façon dont il faudrait que je procède ?

Merci de tout coeur pour votre aide
ValPhi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 15h57   #2
Membre habitué
 
Inscription : septembre 2008
Messages : 136
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 136
Points : 103
Points : 103
Bonjour,

J'ai bien déclaré ma requete dans une variable :
Code :
$infos_tit = db_ligne("SELECT titre, desc FROM gt_aleatoire_pp WHERE id_categorie='".$evt_tmp["id_categorie"]." ORDER BY RAND() LIMIT 1' ");
Puis, j'ai cherché à l'insérer :
Code PHP :
1
2
3
4
5
6
	echo "<fieldset>"; 
echo $trad["divers"]["titre"]." &nbsp;<input type=\"text\" name=\"titre\" id=\"titre\" value=\"".$infos_tit["titre"]."\" style=\"width:65%\" /> &nbsp; &nbsp; ";
echo "<span onClick=\"afficher_dynamic('block_description');\" class=\"lien\">".$trad["divers"]["description"]." <img src=\"".path_templates."divers/derouler.png\" /></span>";
echo "<span id=\"block_description\"><br /><br /><textarea name=\"description\" id=\"description\" style=\"width:100%;height:180px;\">".$evt_tmp["description"]."</textarea></span>";
if($evt_tmp["description"]=="" and $_SESSION["user"]["id_utilisateur"]>0)	echo "<script type=\"text/javascript\">  onLoad = window.setTimeout(\"afficher_dynamic('block_description')\",1000);  </script>";
	echo "</fieldset>";

Mais le champ 'titre' reste vide. :/
ValPhi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 19h49   #3
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
ça veut dire que tu t'attends à recevoir un formulaire expédié par la methode http POST dont un des champs a pour nom (attribut name) "titre" et dont tu veux utiliser la valeur.

---
la coloration ne s'est pas activée dans ton code. Remplace [code] par [code=php] pour forcer l'affichage.
---

ENLEVE LES @ devant les variables pour debugger.
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/09/2011, 13h06   #4
Membre habitué
 
Inscription : septembre 2008
Messages : 136
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 136
Points : 103
Points : 103
Bonjour Gene69,

Merci pour votre réponse.
(J'ai procédé à la modification à propos de la coloration syntaxique, sans résultat).

Citation:
ça veut dire que tu t'attends à recevoir un formulaire expédié par la methode http POST dont un des champs a pour nom (attribut name) "titre" et dont tu veux utiliser la valeur.
Oui : je souhaite récupérer toutes les informations saisies dans le formulaire à l'exception du titre et de la description qui devront être issus du résultat de ma requete.
Mon code semble deonc ne pas être bon.
Je jete un oeil dans vos tutoriels pour savoir comment mêler des informations provenant d'une variable avec celle provenant d'un formulaire.

Merci bien de votre éclairage.
ValPhi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2011, 07h41   #5
Membre habitué
 
Inscription : septembre 2008
Messages : 136
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 136
Points : 103
Points : 103
Voilà le code tel que je l'ai modifié :
Code PHP :
1
2
3
4
5
 
	$reqphil=("SELECT titre, desc FROM gt_aleatoire_pp WHERE id_categorie='".$_POST["id_categorie"]." ORDER BY RAND() LIMIT 1' ");
	$resreqphil=mysql_query($reqphil) or die("Erreur dans l'extraction des informations" );
 
		$corps_sql = " titre=".db_insert($resreqphil).", description=".db_insert($_POST["description"],"editeur").", date_debut='".$date_debut."', date_fin='".$date_fin."', id_categorie=".db_ins...;

En somme, j'essaie d'exécuter une requête en prenant comme critère ce qui vient d'être saisi dans le formulaire (le fameux 'id_categorie'). Je pense que le problème vient de là, puisque lorsque j'exécute le script, j'obtiens le message d'erreur.

Parce qu'une fois exécutée, la variable $corps_sql devrait comporter ce résultat.

Qu'en pensez-vous ?
ValPhi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2011, 13h35   #6
Membre régulier
 
Avatar de diallomad
 
Homme .M DIALLO
Étudiant
Inscription : avril 2009
Messages : 47
Détails du profil
Informations personnelles :
Nom : Homme .M DIALLO
Âge : 23
Localisation : Mali

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2009
Messages : 47
Points : 92
Points : 92
Citation:
Envoyé par ValPhi Voir le message
Voilà le code tel que je l'ai modifié :

$reqphil=("SELECT titre, desc FROM gt_aleatoire_pp WHERE id_categorie='".$_POST["id_categorie"]." ORDER BY RAND() LIMIT 1' ");
Je pense que le problème se situe au niveau des guillemets ("). Essaie ce code
Code php :
$reqphil=("SELECT titre, desc FROM gt_aleatoire_pp WHERE id_categorie='".$_POST['id_categorie']."' ORDER BY RAND() LIMIT 1 ");
La 2e est incorrecte également, je ne peut pas faire de suggestion sans la voir au complet.
Mais tu peux commencer par changer les guillemets des $_POST[" "] par $_POST[' '].
Le 1er par exemple:
Code PHP :
1
2
 
$_POST['description']  //*Au lieu de $_POST["description"]
PS: N'oublie pas de faire un petit traitement des données provenant du formulaire avant de les utiliser dans la requête.
__________________
L'erreur est facile à tous; plus facile peut-être à celui qui croit beaucoup savoir.
diallomad est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 04/09/2011, 22h47   #7
Membre habitué
 
Inscription : septembre 2008
Messages : 136
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 136
Points : 103
Points : 103
Merci pour votre réponse Diallomad. J'ai suivi votre conseil en modifiant la place des quotes.

La requête s'exécute convenablement mais il semble que la variable $resreqphil pose quelques problèmes puisqu'au lieu de m'afficher le résultat voulu (une série de caractères), j'ai la valeur suivante : "Resource id#44"
ValPhi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2011, 23h15   #8
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
N'oublies pas le post scriptum indiqué par diallomad, à savoir avec l'extension mysql il faut utiliser la fonction "mysql_real_escape_string" :

Code :
$reqphil = "SELECT titre, desc FROM gt_aleatoire_pp WHERE id_categorie='".mysql_real_escape_string($_POST['id_categorie'])."' ORDER BY RAND() LIMIT 1 ";
EDIT : C'est normalement inutile pour un nombre mais cela ne coute rien de l'employer systématiquement, d'autant plus qu'il s'agit ici d'une donnée externe qu'apparemment tu ne contrôle pas avant de l'utiliser dans la requête.
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 04/09/2011, 23h24   #9
Membre habitué
 
Inscription : septembre 2008
Messages : 136
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 136
Points : 103
Points : 103
Merci ABCIWEB.

Je teste tout ça et continue de chercher. Je vous tiens au courant de la suite.

Merci à vous tous pour vos précieuses recommandations.
ValPhi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2011, 23h30   #10
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
Citation:
Envoyé par ValPhi Voir le message
La requête s'exécute convenablement mais il semble que la variable $resreqphil pose quelques problèmes puisqu'au lieu de m'afficher le résultat voulu (une série de caractères), j'ai la valeur suivante : "Resource id#44"
$resreqphil est effectivement une ressource puisque c'est l'exécution de ta requête. Pour l'exploiter il faut utiliser mysql_fetch_assoc ou mysql_fetch_array()
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 04/09/2011, 23h36   #11
Membre habitué
 
Inscription : septembre 2008
Messages : 136
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 136
Points : 103
Points : 103
J'ai toujours ce soucis de Resource id#44

A l'issue de l'exécution de la requete, si j'affiche la variable $_post["id_description"], cette dernière est correcte ("1") par exemple.

En revanche, lorsque j'affiche la variable $resreqphil, j'obtiens ce fameux : Resource id#44
ValPhi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2011, 23h37   #12
Membre habitué
 
Inscription : septembre 2008
Messages : 136
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 136
Points : 103
Points : 103
Citation:
Envoyé par ABCIWEB Voir le message
$resreqphil est effectivement une ressource puisque c'est l'exécution de ta requête. Pour l'exploiter il faut utiliser mysql_fetch_assoc ou mysql_fetch_array()
ok, je teste tout de suite.
Merci ABCIWEB.
ValPhi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2011, 23h55   #13
Membre habitué
 
Inscription : septembre 2008
Messages : 136
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 136
Points : 103
Points : 103
Merci à vous trois !

Les modifications apportées fonctionnent. Je vous remercie pour votre aide et votre patience.


J'ai donc rajouté la ligne suivante :
Code PHP :
$row=mysql_fetch_assoc($resreqphil);

Et modifié la ligne suivante :
Code PHP :
$corps_sql = " titre=".$row["titre"].", etc.

A très bientôt
ValPhi est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h42.


 
 
 
 
Partenaires

Hébergement Web