A l'aide (assez urgent !!)

Résolu
Signaler
-
 Utilisateur anonyme -
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

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

*****
THINK -> SEEK -> ASK

oui mais un array faut le déclarer avant non ? t ca serait possible de le rendre generique ?

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
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
4
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 :)

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 ?
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
4
// 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 :)

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
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
17
$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
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
4
"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.

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