[php] passage de paramètre

passage de paramètre [php] - PHP - Programmation

Marsh Posté le 03-05-2004 à 13:52:36    

Bonjour,
 
-- Autre question 8 posts plus loin  
 
je commence tout juste à programmer en php et j'ai déja un probleme.
Les différents livre-tutoriaux que j'ai lu ne donne pas les memes informations.
 
Comment se fait le passage de paramètre d'une page à une autre?
Mon livre (php 4.x de student edition) et différents tutoriaux indiquent qu'il suffit d'utiliser le nom des composants du formulaire pour récupérer les variables.
Les variables passent bien à la page suivante (on le voit grâce à Get) mais impossible de les récupérer en gardant le même nom de variable.
 
J'ai réussi à récupérer la valeur des variables en utilisant $_get['nom_variable'] (ou $_post[pareil] ). (aide de easy php).
 
Cette syntaxe est assez pourrie et je ne comprend pas pourquoi le simple passage de paramètre ne fontionne pas.
 
Remarque : J'utilise la version 4.3.6 de php.
 
Merci de votre aide.


Message édité par hop le fou le 05-05-2004 à 16:34:01
Reply

Marsh Posté le 03-05-2004 à 13:52:36   

Reply

Marsh Posté le 03-05-2004 à 13:55:19    

Depuis php 4.2 php est passé au variables globales ($_SERVER, $_GET...) pour des raisons de sécurité.
 
Si tu ne veut pas t'embeter avec cette syntaxe tu peu toujours  tourner l'option register_globals a OFF, mais attention au failles de sécurité

Reply

Marsh Posté le 03-05-2004 à 14:03:52    

Merci

Reply

Marsh Posté le 03-05-2004 à 15:38:14    

en même temps il faut mieux rester sur les $_GET et $_POST qui sont certes plus fastidieux mais qui sont quand même plus clairs.
de plus la majorité pour pas dire tous les serveurs sont en 4.2 ou plus et je ne suis pas sûr que le petit register_globals qu'on passe à OFF marchera encore sous php 5...

Reply

Marsh Posté le 03-05-2004 à 15:51:40    

lol
Theoriquement, le nom que tu donne a ta variable dans ton formulaire te permet de recuperer la valeur dans ton php avec le meme nom. Tu dois faire une erreur de synthaxe, le mieux c'est que t'envois le code. Neanmoins suis d'accord pour dire que vos mieux passer par des _POST, c'est beaucoup plus lisible.

Reply

Marsh Posté le 03-05-2004 à 18:04:14    

Non il n'y avait pas d'erreur de syntaxe (la copie d'un exemple ne marchait pas).
 
J'ai maintenant un autre problème : l'accès à ma base de données :
- que faut il paramétrer sur le serveur où est lancé le service mysql pour que ma machine puisse apporter des modifications à la base?  
 
- pour créer les tables, quelle est la fonction à utiliser? (j'ai essayé mysql_query mais apparement ce n'est pas celle-la et il n'y en a pas d'autre équivalente dans mon bouquin
 
Merci de votre aide

Reply

Marsh Posté le 03-05-2004 à 18:21:18    

Citation :


J'ai maintenant un autre problème : l'accès à ma base de données :
- que faut il paramétrer sur le serveur où est lancé le service mysql pour que ma machine puisse apporter des modifications à la base?  


 
Rien. (enfin, un utilisateur possédant les droits souhaités, ce qui est normalement le cas par défaut)
 

Citation :

- pour créer les tables, quelle est la fonction à utiliser? (j'ai essayé mysql_query mais apparement ce n'est pas celle-la et il n'y en a pas d'autre équivalente dans mon bouquin


 
Oulà, mais c'est quoi ton bouquin ?
 
Parce que bon, s'il oublie de te dire que mysql_query execute la requête SQL (qu'il faut donc apprendre) que tu lui passes, faut le jeter hein  :ange:


Message édité par naceroth le 03-05-2004 à 18:22:22
Reply

Marsh Posté le 04-05-2004 à 09:49:59    


Il se trouve que je ne suis pas la personne qui a installé et que j'essaie de modifier la base par le réseau. Tout le monde a tout les droits  par défaut ??
 
Mon bouquin c PHP 4.x chez Student Edition.
Le problème n'est pas la. Je n'ai aucun problème en sql et je sais que mysql_query execute ma requete mais il se trouve que cette fonction ne peut executer que des requetes de type SELECT UPDATE DELETE et INSERT
Or moi je voudrais faire des requetes de type CREATE
Je cherche donc la fontion qui permette de passer ces ordres à la base.
Je me suis peut etre mal exprimé au dessus...

Reply

Marsh Posté le 04-05-2004 à 17:17:34    

Bon ben en fait je vais créer la base avec le logiciel qui va bien et me contenter de faire les modifs avec Php
Merci

Reply

Marsh Posté le 04-05-2004 à 17:44:41    

Citation :

Il se trouve que je ne suis pas la personne qui a installé et que j'essaie de modifier la base par le réseau. Tout le monde a tout les droits  par défaut ??


 
Il y a un compte root qui a tous les droits oui (le contraire serait plutôt idiot d'ailleurs :D). Mais ceci dit, on parle bien des droits des user mysql, pas d'un quelconque user windows :)
 

Citation :

Mon bouquin c PHP 4.x chez Student Edition.
Le problème n'est pas la. Je n'ai aucun problème en sql et je sais que mysql_query execute ma requete mais il se trouve que cette fonction ne peut executer que des requetes de type SELECT UPDATE DELETE et INSERT
Or moi je voudrais faire des requetes de type CREATE
Je cherche donc la fontion qui permette de passer ces ordres à la base.
Je me suis peut etre mal exprimé au dessus...


 
mysql_query.  
 
Je ne sais pas où tu vas chercher que cette fonction se limite à des select, update etc. Tu lui passes un SHOW TABLE STATUS, ça marche, un DROP DATABASE, ça marche, bref n'importe quelle requête SQL.

Reply

Marsh Posté le 04-05-2004 à 17:44:41   

Reply

Marsh Posté le 05-05-2004 à 10:11:07    

naceroth a écrit :


 
Il y a un compte root qui a tous les droits oui (le contraire serait plutôt idiot d'ailleurs :D). Mais ceci dit, on parle bien des droits des user mysql, pas d'un quelconque user windows :)
 
mysql_query.  
 
Je ne sais pas où tu vas chercher que cette fonction se limite à des select, update etc. Tu lui passes un SHOW TABLE STATUS, ça marche, un DROP DATABASE, ça marche, bref n'importe quelle requête SQL.


 
ben en fait c ce qui est écrit dans mon bouquin et le morceau de code suivant tourne en rond :
 
mySql_create_db("BDrapports", $dbLink);
mySql_query("CREATE TABLE IF NOT EXISTS MOTS_CLES(NUM_MOT_CLE CHAR (32) NOT NULL  ,LIBELLE CHAR (32) NULL,PRIMARY KEY (NUM_MOT_CLE));,dnlink" );
 
Ce code a été généré par Win'design comme code my_sql (je ne connais pas trop my_sql, plutot oracle...)
Donc je ne comprend pas...

Reply

Marsh Posté le 05-05-2004 à 10:12:31    

ben la tu crée une base du nom BDrapport, et tu execute directement apres une requete dessus, mais a mon avis tu a oublier de te connecter sur la base fraichement crée avant :)

Reply

Marsh Posté le 05-05-2004 à 10:53:09    

chacal_one333 a écrit :

ben la tu crée une base du nom BDrapport, et tu execute directement apres une requete dessus, mais a mon avis tu a oublier de te connecter sur la base fraichement crée avant :)


 
non g bien le truc de selection de la base :
mySql_select_db("BDrapport", $dbLink)
mais c marqué dans mon livre que c pas utile (car une seule base)
mais c écrit dans mon code.

Reply

Marsh Posté le 05-05-2004 à 16:33:15    

Bonjour,
 
je voudrais passer un paramètre à un script php en l'appelant (en utilisant la fonction header)
Le problème est que les paramètres sont visibles en les passant par l'appel.
Une solution serait d'utiliser les variables de session mais y a t il une autre solution?
J'ai lu que les variables de session entrainait la création de cookie et qu'il pouvait être refusés (mais qu'il y a une autre alternative appelée SID mais je n'ai rien compri à ca)
Y a t-il un risque de probleme en cas de refus de cookie dans la gestion des variables de session?
 
Merci

Reply

Marsh Posté le 05-05-2004 à 16:34:53    

Les sessions ne font en aucun cas appel au cookies.

Reply

Marsh Posté le 05-05-2004 à 16:37:04    

hop le fou a écrit :

ben en fait c ce qui est écrit dans mon bouquin et le morceau de code suivant tourne en rond :
 
mySql_create_db("BDrapports", $dbLink);
mySql_query("CREATE TABLE IF NOT EXISTS MOTS_CLES(NUM_MOT_CLE CHAR (32) NOT NULL  ,LIBELLE CHAR (32) NULL,PRIMARY KEY (NUM_MOT_CLE));,dnlink" );
 
Ce code a été généré par Win'design comme code my_sql (je ne connais pas trop my_sql, plutot oracle...)
Donc je ne comprend pas...


 
Il y a une erreur dans la requête de création de table surtout :

Code :
  1. mySql_query("CREATE TABLE IF NOT EXISTS MOTS_CLES(NUM_MOT_CLE CHAR (32) NOT NULL  ,LIBELLE CHAR (32) NULL,PRIMARY KEY (NUM_MOT_CLE))",$dblink);


 
me semble plus correct point de vue php
 

Citation :

mais c marqué dans mon livre que c pas utile (car une seule base)


 
Tu as déjà au moins une base dans mysql même si toi tu n'as encore rien créé : la base mysql elle-même (celle qui gère les utilisateurs entre autre). Donc tu peux t'en passer, mais ça te contraint à préciser le nom de la db dans la requête :)

Reply

Marsh Posté le 05-05-2004 à 16:54:29    

chacal_one333 a écrit :

Les sessions ne font en aucun cas appel au cookies.


 

Citation :

L'identifiant de session, une longue suite générée aléatoirement de chiffres et de lettres, est envoyée au navigateur sous forme de cookie. Comme les cookies peuvent être refusés par le navigateur, une alternative existe. Une constante, appelée SID, est créée et contient tout ce qu'il faut pour être transmis par URL.


tiré de PHP 4.x de Leon Atkinson, Campus press...
 :??:

Reply

Marsh Posté le 05-05-2004 à 16:57:22    

Oui il y a erreur à la con dans ce que j'ai copié. C'est parce que j'avais définie la requete dans une variable. Copier coller foireux... mais je pense que le problème vient de la création de la base.
De toute facon je suis passé par mysql front...
 
En ce qui concerne la sélection, oui je la fait (de toute facon ca rend le code plus clair alors ...).
 
Merci.
Pas une idée pour la question suivante?

Reply

Marsh Posté le 05-05-2004 à 17:18:25    

chacal_one333 a écrit :

Les sessions ne font en aucun cas appel au cookies.


 
Si, elles le peuvent pour transmettre les SID (c'est l'option activée par défaut).
 
@hop le fou : Oui, il y a évidement un problème si tu choisis le SID par cookie et qu'il est refusé par le navigateur. L'autre solution est de la transmettre par l'url : comme l'explique le manuel

Reply

Marsh Posté le 05-05-2004 à 17:20:13    

ha j'avais mal compris ce qu'il demandais.
 
J'ai cru qu'il pensait qu'en faisant des session_register();, ca utilisais des cookies.

Reply

Marsh Posté le 05-05-2004 à 18:20:38    

Ok c cool merci je vais regarder ca de près

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed