A l'aide (assez urgent !!)

Résolu
Utilisateur anonyme - 28 janv. 2006 à 12:01
 Utilisateur anonyme - 28 janv. 2006 à 13:07
bonjour,

je suis a la recherche d'une fonction (php4, pas de php5 objet) ou systeme permettant (comme le permet une fonction) d'ajouter rapidement dans une base de donées des elements. Je me heurte actuellement au fait que le nombre de parametre de la fonction deja écrite est variable. En effet je peux avoir des table a 1,2,3, 5, 10 champs. Or une fonction ne prend en compte qu'un nombre fixe de parametre. Passer par un objet est peut etre une idée mais la notion d'objet, j'ai du mal a maitriser. Je sais utiliser des modeles d'objet et les instancier mais je ne sais pas écrire les outils pour utiliser les objets. Bien sur l'utilité de ceci reside dans le fait d'utiliser ce "système" quelque soit la table, le nombre de champs de la table, le type de données.... Il faudrait un système le + générique possible.

par exemple,

function AJOUTER(nomTable,values....)
{

}
Or vous comprenez bien que values peut être au nom de 1,2,10 ou n champs

si quelqu'un a une solution à ce probleme que j'essaie de résoudre depuis maintenant quelques semaines....
Ma seule solution a été celle ci mais elle ne me convient pas . Voici du point de vue algorithmique ce que j'ai fait:

Debut
MonTabChamps[1] <= nom_du_champ1
MonTabChamps[2] <= nom_du_champs2
NomTabVal[1] <= valeur_a_affecter_dans_case_1_du_tableau
NomTabVal[2] <= valeur_a_affecter_dans_case_2_du_tableau
$res <= insertion(MonTabChamp,NomTabVal)
Fin

ce qui suppose d'écrire a chaque fois :

MonTabChamps[1] <= nom_du_champ1

MonTabChamps[2] <= nom_du_champs2

NomTabVal[1] <= valeur_a_affecter_dans_case_1_du_tableau

NomTabVal[2] <= valeur_a_affecter_dans_case_2_du_tableau

Bien sûr ca devient urgent car j'attaque un projet professionnel lundi évidemment.... Si vous avez des idées, des classes, ......

Merci a la communauté d'avance

seb

10 réponses

malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
28 janv. 2006 à 12:05
ben t'as qu'à passer un array!!!

*****
THINK -> SEEK -> ASK
3
Utilisateur anonyme
28 janv. 2006 à 12:08
oui mais un array faut le déclarer avant non ? t ca serait possible de le rendre generique ?
3
Utilisateur anonyme
28 janv. 2006 à 12:36
bien vu ton truc, je connaissait pas.E ffectivement, PHP ne répondant pas du tout aux normes de programmation (sachant qu'une fonction doit prendre un nonmbre fixe de parametres, au sens algorithmique du terme), j'étais loin d'imaginer cela. Ca va m'ouvrir beaucoup de portes ca.... Merci bcp du tuyeau
3
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
28 janv. 2006 à 12:40
Ah non... une fonction a deux types de possibilités :

fonction statique, qui utilise qu'un nombre fixe d'arguments.
fonction dynamique, qui utilise un nombre d'arguments variables.

C'est pas nouveau, ca date depuis un moment ca :)
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
28 janv. 2006 à 12:54
FhX, je m'en suis jamais servi (ni en VB, ni en delphi). Peux tu me donner un exemple de code PHP simple où tu passe dans une fonction dynamique des parametres au nombre variabmle ? juste pour savoir comment ca s'écrit.
si j'écris

function essai(param1,param2, param3)
{
if param3==0
{
echo"rien";
}
else
{
essai = param1*param2;
}
}
comment ca marche si je veux passer au niveau d e l'appel de la fonction que 2 parametres ?
3
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
28 janv. 2006 à 13:03
// Fonction qui renvoit le nombre d'arguments passés par la fonction.
function test() {
$num_args = get_num_args();
return $num_args;
}

$x = test(1,2,3,4,5,6,7,8);
echo $x;
// Affichera 8 :)

Pour pouvoir afficher les arguments ?

function test() {
$num_args = get_num_args();
for ( $i = 0; $i < $num_args; $i++ ) {
$arg = func_get_arg($i);
echo $arg.'
';
}
}

test(1,2,3,4,5,6,7,8);
// Affichera :
// 1
// 2
// 3
// 4
// 5
// etc...

Et voila :)
3
Utilisateur anonyme
28 janv. 2006 à 12:02
j'ai fait une faute de frappe qui est génante dans le message :

à la place de

Or vous comprenez bien que values peut être au nom de 1,2,10 ou n champs

lire

Or vous comprenez bien que values peut être au nombre de 1,2,10 ou n champs
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
28 janv. 2006 à 12:12
$truc = news array();


et ensuite, chaque fois que t'as un nouveau paramètre à ajouter: $truc[] = $param;



comme ça t'as pas besoin de déclarer la taille et ensuite t'utilise
count($truc) ou qqch du genre dans ta fonction pour connaître le nb de
paramètres.


*****
THINK -> SEEK -> ASK
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
28 janv. 2006 à 12:30
"Or une fonction ne prend en compte qu'un nombre fixe de parametre."
Faux...
func_get_arg();
func_get_args();
get_num_args();

http://fr3.php.net/manual/fr/function.func-get-arg.php

Regarde mon code d'abastraction de BDD, y'a une méthode qui s'appèle prepare() et qui exploitent ce que tu veux faire.

Voila.
0
Utilisateur anonyme
28 janv. 2006 à 13:07
Merci beaucoup

j'attaquais justement mon petit test, je viens tout juste de lancer easyphp.
bien sur je viens de finir ma trame de mon algo a écrire.

UN GRAND MERCI A VOUS TOUS
0
Rejoignez-nous