Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & Oracle
PHP & Oracle Forum d'entraide sur Oracle avec PHP. Avant de poster -> FAQ Oracle et Cours Oracle
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 29/12/2006, 21h46   #1
Candidat au titre de Membre du Club
 
Inscription : décembre 2006
Messages : 76
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : décembre 2006
Messages : 76
Points : 12
Points : 12
Par défaut Traitement de données d'un formulaire

Bonsoir tous le monde

alors voilà j'ai bien avancé dans mon formulaire tout marche impec

voici le code mais maintenant je veux traiter les données:
Code html :
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
 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Demande d'intervention</title>
 
</head>
<body>
<form action="traitement.php" method="post">
<strong>
<th>Formulaire de demande d'intervention</th>
 
<table>
 
<?php 
$db_conn = ocilogon( "pti", "rugbys" ,"//127.0.0.1/XE");
$cmdstr = "select NOM from employes order by NOM";
$parsed = ociparse($db_conn, $cmdstr);
ociexecute($parsed);
$nrows = ocifetchstatement($parsed, $results);
echo "<td><b>Votre Nom</b></td>\n";
echo "<table border=0 cellspacing='0' width='0%'>";
echo "<select name=nom>";
for ($i = 0; $i < $nrows; $i++ ) 
 { 
 echo "<option value=\"".$results['NOM'][$i]."\">".$results['NOM'][$i] ."</option>"; 
 }
 
$cmdstr = "select libellemat from materiel order by libellemat";
$parsed = ociparse($db_conn, $cmdstr);
ociexecute($parsed);
$nrows = ocifetchstatement($parsed, $results);
echo "<td><b>Le materiel concerne</b></td>\n";
echo "<table border=0 cellspacing='0' width='0%'>";
echo "<select name=libellemat>\n";
for ($i = 0; $i < $nrows; $i++ ) 
 { 
 echo "<option value=\"".$results['LIBELLEMAT'][$i]."\">".$results['LIBELLEMAT'][$i] ."</option>"; 
 }
 
$cmdstr = "select libelleinter from typeinter order by libelleinter";
$parsed = ociparse($db_conn, $cmdstr);
ociexecute($parsed);
$nrows = ocifetchstatement($parsed, $results);
echo "<td><b>Choisissez le type d'intervention a effectuer</b></td>\n";
echo "<table border=1 cellspacing='0' width=''>";
echo "<select name=libelleinter>\n";
for ($i = 0; $i < $nrows; $i++ ) 
 { 
 echo "<option value=\"".$results['LIBELLEINTER'][$i]."\">".$results['LIBELLEINTER'][$i] ."</option>"; 
 }
 ?>
<br><td>Commentaire</td><td><textarea name='commentaire' cols='30' rows='5'></textarea></td></br>
<tr><td>Date de la demande (JJ/MM/YYYY)</td><td><input name='datedemande' type='date' size='10'></td></tr>
 
 
</strong>
</table>
<input name='annuler' type='reset' value='Annuler'>
<input class="h" type="submit" name="ok" value="Envoyer"/><br /> 
</form>
</body>
</html>

Pour l'instant je veux simplement afficher les données sélectionnées via les listes déroulantes

donc j'essaye ca dans le fichier traitement.php

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Demande d'intervention</title>
 
</head>
<body>
<?php
echo $nom;
?>
</body>
</html>
Ca ne m'affiche rien ca me met ca:
Notice: Undefined variable: nom in c:\program files\easyphp1-8\www\test1\traitement.php on line 9

Si je comprends bien la variable "nom" n'est pas définie dans le formulaire!

Quelle est la syntaxe à avoir pour déclarer cette valeur correctement car à priori je me suis planté

merci
CYCLOPE91440 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2006, 01h30   #2
Inscrit
 
Avatar de is_null
 
Inscription : octobre 2006
Messages : 637
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 637
Points : 690
Points : 690
Par défaut e

En PHP, ce sont des variables locales qui sont utilisées dans chaque script !
Si vous définissez $blabla dans le script A, lorsque vous executerez le script B, $blabla vaut : FALSE car elle est indéfinie. PHP est un language de haut niveau système, mais d'une complexité ridicule.

Un excellent moyen de passer une variable de script en script est l'usage des sessions.
php.net/sessions
is_null est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2006, 13h34   #3
Candidat au titre de Membre du Club
 
Inscription : décembre 2006
Messages : 76
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : décembre 2006
Messages : 76
Points : 12
Points : 12
ok bon je vais me renseigner sur les sessions.
Mais est ce la meme chose pour l'insertion de données via le formulaire?

Merci à vous
CYCLOPE91440 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2006, 14h06   #4
Candidat au titre de Membre du Club
 
Inscription : décembre 2006
Messages : 76
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : décembre 2006
Messages : 76
Points : 12
Points : 12
Bon je viens d'essayer ce code et à priori il me renvoit bien les données du formulaire

Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Demande d'intervention</title>
 
</head>
<body>
<?php
 
echo  $_POST['nom'];
echo  $_POST['libellemat'];
echo  $_POST['libelleinter'];
echo  $_POST['commentaire'];
echo  $_POST['datedemande'];
 
?>
</body>
</html>

Donc maintenant il faut que j'insère ces données dans ma table et c'est du tout bon
CYCLOPE91440 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2006, 14h55   #5
Inscrit
 
Avatar de is_null
 
Inscription : octobre 2006
Messages : 637
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 637
Points : 690
Points : 690
Bravo ! Vous avez bien compris !
php.net/oracle vous sera utile si vous connaissez le langage de requête d'Oracle.
is_null est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2006, 15h12   #6
Candidat au titre de Membre du Club
 
Inscription : décembre 2006
Messages : 76
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : décembre 2006
Messages : 76
Points : 12
Points : 12
bon je viens de me rendre compte d'une chose assez complexe:

l'utilisateur va choisir son nom (même si je devrai essayer de récupérer son nom lors de son login enfin bref on verra plus tard)

donc la valeur du champs $nom est "toto" par exemple
Mais le problème c'est que je me sers de ce formulaire pour inserer les données dans une table qui contient les id_nom

Je dois donc passer par une sorte de conversion!

en gros un select idsalarie from salarie where nom="toto";
comme ça le formulaire va m'insérer non pas le nom mais l'id du nom

enfin peut etre que je vais revoir mon MCD car là ca ne sera pas à grand chose
CYCLOPE91440 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2006, 17h51   #7
Candidat au titre de Membre du Club
 
Inscription : décembre 2006
Messages : 76
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : décembre 2006
Messages : 76
Points : 12
Points : 12
bon alors ca avance encore

j'arrive à insérer les données du formulaire dans la table "traduite" avec ce code
Code :
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
 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Demande d'intervention</title>
 
</head>
<body>
 
 
 
<?php
 
$db_conn = ocilogon( "pti", "rugbys" ,"//127.0.0.1/XE");
echo  $_POST['nom'];
echo  $_POST['libellemat'];
echo  $_POST['libelleinter'];
echo  $_POST['commentaire'];
echo  $_POST['datedemande'];
 
$nom=$_POST['nom'];
$libellemat=$_POST['libellemat'];
$libelleinter=$_POST['libelleinter'];
$commentaire=$_POST['commentaire'];
$datedemande=$_POST['datedemande']; 
 
$request="insert into planning (idintervention,nom,materiel,typeintervention,commentaire,datedemande,datefin)values (100,'$nom','$libellemat','$libelleinter','$commentaire','$datedemande',sysdate)";
$insert=ociparse($db_conn,$request);
ociexecute($insert);
 
 
 
?>
</body>
</html>
C'est un bon début mais il faut que j'arrive à faire la correspondance entre le "nom" et son id, puis le "materiel" avec son id, puis le "typeintervention"et son id

La table qui correspond à une relation de fonctionnalité est comme ceci:

intervention(idintervention,idsalarie,idmateriel,idtypeintervention,commentaire,datedemande,datefin)

comme vous pouvez le voir cette table contient des données pas trop visible.
Bref j'ai créé une table de correspondance avec un trigger qui s'occupe de tout convertir.
Donc mon but est de peupler la table intervention qui déclenchera la table planning

Bon si vous avez des suggestions je suis preneur
CYCLOPE91440 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2006, 18h53   #8
Candidat au titre de Membre du Club
 
Inscription : décembre 2006
Messages : 76
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : décembre 2006
Messages : 76
Points : 12
Points : 12
bon alors j'ai fait une tentative avec ce code mais il me retourne une erreur:
"Warning: ociexecute(): OCIStmtExecute: ORA-00917: virgule absente in c:\program files\easyphp1-8\www\test1\traitement.php on line 36
"

ci joint le code car là je ne vois pas où il manque une virgule
Code :
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
 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Demande d'intervention</title>
 
</head>
<body>
 
 
 
<?php
 
$db_conn = ocilogon( "pti", "rugbys" ,"//127.0.0.1/XE");
echo  $_POST['nom'];
echo  $_POST['libellemat'];
echo  $_POST['libelleinter'];
echo  $_POST['commentaire'];
//echo  $_POST['datedemande'];
 
$nom=$_POST['nom'];
$libellemat=$_POST['libellemat'];
$libelleinter=$_POST['libelleinter'];
$commentaire=$_POST['commentaire'];
//$datedemande=$_POST['datedemande']; 
 
// $request="insert into planning (idintervention,nom,materiel,typeintervention,commentaire,datedemande,datefin)values (101,'$nom','$libellemat','$libelleinter','$commentaire',sysdate,'')";
// $insert=ociparse($db_conn,$request);
// ociexecute($insert);
 
$idsalarie="select idsalarie from employes where nom='$nom'";
$idmateriel="select idmateriel from materiel where libellemat='$libellemat'";
$idtypeintervention="select idtypeintervention from typeinter where libelleinter='$libelleinter'";
 
$request="insert into intervention (idintervention,idsalarie,idmateriel,idtypeintervention,commentaire,datedemande,datefin)values ('','$idsalarie','$idmateriel','$idtypeintervention','$commentaire',sysdate,'')";
$insert=ociparse($db_conn,$request);
ociexecute($insert);
?>
</body>
</html>
merci de m'éclairer
CYCLOPE91440 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2006, 19h30   #9
Candidat au titre de Membre du Club
 
Inscription : décembre 2006
Messages : 76
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : décembre 2006
Messages : 76
Points : 12
Points : 12
bon alors quand je fais un
Code :
1
2
 
echo "$idsalarie";
il me sort mon select blabla bla au lieu de me sortir par exemple 2

je me suis planté quelque part ou alors ce que je veux faire n'est pas possible
CYCLOPE91440 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2006, 11h41   #10
Candidat au titre de Membre du Club
 
Inscription : décembre 2006
Messages : 76
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : décembre 2006
Messages : 76
Points : 12
Points : 12
en fait je voulais savoir si on peut affecter à une variable le résultat d'une requete sql?

si je fais un: select idsalarie from employes where nom='toto' en sql ça me remonte un id de 2 par exemple que je voudrais affecter à la variable $idsalarie

CYCLOPE91440 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2006, 11h49   #11
Inscrit
 
Avatar de is_null
 
Inscription : octobre 2006
Messages : 637
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 637
Points : 690
Points : 690
C'est écrit dans la documentation suivante : php.net/oracle
is_null est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2006, 12h21   #12
Candidat au titre de Membre du Club
 
Inscription : décembre 2006
Messages : 76
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : décembre 2006
Messages : 76
Points : 12
Points : 12
Bon alors je suis passé par ce code et ca remonte bien les bonnes valeurs cette fois ci mais l'insertion ne se passe pas très bien
Code :
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
69
70
71
72
73
74
75
 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Demande d'intervention</title>
 
</head>
<body>
 
 
 
<?php
 
$db_conn = ocilogon( "pti", "rugbys" ,"//127.0.0.1/XE");
echo  $_POST['nom'];
echo  $_POST['libellemat'];
echo  $_POST['libelleinter'];
echo  $_POST['commentaire'];
//echo  $_POST['datedemande'];
 
$nom=$_POST['nom'];
$libellemat=$_POST['libellemat'];
$libelleinter=$_POST['libelleinter'];
$commentaire=$_POST['commentaire'];
//$datedemande=$_POST['datedemande']; 
 
// $request="insert into planning (idintervention,nom,materiel,typeintervention,commentaire,datedemande,datefin)values (102,'$nom','$libellemat','$libelleinter','$commentaire',sysdate,'')";
// $insert=ociparse($db_conn,$request);
// ociexecute($insert);
 
$idsalarie=ociparse($db_conn,"select idsalarie from employes where nom='$nom'");
ociexecute($idsalarie);
$compteur = 0;
while (OCIFetch($idsalarie)) {
	$compteur++;
	echo OCIResult($idsalarie, "IDSALARIE");
 
}
OCIFreeStatement($idsalarie);
 
 
$idmateriel=ociparse($db_conn,"select idmateriel from materiel where libellemat='$libellemat'");
ociexecute($idmateriel);
$compteur = 0;
while (OCIFetch($idmateriel)) {
	$compteur++;
	echo OCIResult($idmateriel, "IDMATERIEL");
 
}
OCIFreeStatement($idmateriel);
 
 
$idtypeintervention=ociparse($db_conn,"select idtypeintervention from typeinter where libelleinter='$libelleinter'");
ociexecute($idtypeintervention);
 
$compteur = 0;
while (OCIFetch($idtypeintervention)) {
	$compteur++;
	echo OCIResult($idtypeintervention, "IDTYPEINTERVENTION");
 
}
OCIFreeStatement($idtypeintervention);
 
 
echo "$idsalarie";
echo "$idmateriel";
echo "$idtypeintervention";
 
$request="insert into intervention (idintervention,idsalarie,idmateriel,idtypeintervention,commentaire,datedemande,datefin)values ('','$idsalarie','$idmateriel','$idtypeintervention','$commentaire',sysdate,'')";
$insert=ociparse($db_conn,$request);
ociexecute($insert);
 
?>
</body>
</html>
voici l'erreur
Code :
1
2
3
 
AndreaniAMPLIERAssistancerrrrrrrrrr15113Resource id #5Resource id #6Resource id #7
Warning: ociexecute(): OCIStmtExecute: ORA-01722: Nombre non valide in c:\program files\easyphp1-8\www\test1\traitement.php on line 70
Donc je veux insérer 15, 1, 13, rrrrrrrrrrrrrrr,
Par contre Resource id #5,6,7 c'est lui qui me rajoute ça....
J'espère qu'il n'essaye pas de me les insérer
CYCLOPE91440 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2006, 12h59   #13
Candidat au titre de Membre du Club
 
Inscription : décembre 2006
Messages : 76
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : décembre 2006
Messages : 76
Points : 12
Points : 12
Bon ca y est j'ai trouvé mon erreur Il fallait integrer le resultat du ociresult dans une variable. Donc je viens de tester et ca marche

Merci beaucoup pour votre aide.

Ci joint le code si ça peut interesser quelqu'un
Code :
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
 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Demande d'intervention</title>
 
</head>
<body>
 
<?php
 
$db_conn = ocilogon( "pti", "rugbys" ,"//127.0.0.1/XE");
 
$nom=$_POST['nom'];
$libellemat=$_POST['libellemat'];
$libelleinter=$_POST['libelleinter'];
$commentaire=$_POST['commentaire'];
 
$idsalarie=ociparse($db_conn,"select idsalarie from employes where nom='$nom'");
ociexecute($idsalarie);
$compteur1 = 0;
while (OCIFetch($idsalarie)) {
	$compteur1++;
	$id1=OCIResult($idsalarie, "IDSALARIE");
 
}
OCIFreeStatement($idsalarie);
 
 
$idmateriel=ociparse($db_conn,"select idmateriel from materiel where libellemat='$libellemat'");
ociexecute($idmateriel);
$compteur2 = 0;
while (OCIFetch($idmateriel)) {
	$compteur2++;
	$id2=OCIResult($idmateriel, "IDMATERIEL");
 
}
OCIFreeStatement($idmateriel);
 
 
$idtypeintervention=ociparse($db_conn,"select idtypeintervention from typeinter where libelleinter='$libelleinter'");
ociexecute($idtypeintervention);
 
$compteur3 = 0;
while (OCIFetch($idtypeintervention)) {
	$compteur3++;
	$id3=OCIResult($idtypeintervention, "IDTYPEINTERVENTION");
 
}
OCIFreeStatement($idtypeintervention);
 
$request="insert into intervention (idintervention,idsalarie,idmateriel,idtypeintervention,commentaire,datedemande,datefin)values ('','$id1','$id2','$id3','$commentaire',sysdate,'')";
$insert=ociparse($db_conn,$request);
ociexecute($insert);
 
echo "Votre demande est prise en compte et sera traitee dans les meilleurs delais";
?>
 
</body>
</html>
CYCLOPE91440 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h26.


 
 
 
 
Partenaires

Hébergement Web