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 03/03/2011, 21h06   #1
Invité de passage
 
Inscription : mai 2006
Messages : 18
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 18
Points : 4
Points : 4
Par défaut Création de tableaux via formulaire d´ajout

Bonjour,

j´ai un formulaire assez simple de la forme :

hôte : [______________]
alias : [______________]
IP : [______________]

[ Valider ]

je souhaite que chaque fois que je clique sur "valider" les données que j´ai saisi dans le formulaire s´ajoutent dans un tableau de la forme

Code :
1
2
3
Array ( [0] => Array ( [hote] => hote1 [alias] => alias_1 [ip] => ip_1 ) 
        [1] => Array ( [hote] => hote2  [alias] => alias_2 [ip] => ip_2 ) 
        [2] => Array ( [hote] => hote3  [alias] => alias_3 [ip] => ip_3) )
j´ai créée un objet hote et je peux utiliser la methode ajout_hote pour ajouter des hotes a mon tableau. Cela fonctionne tres bien si j appele plusieurs fois ma fonction à la main de la facon suivante :

ajout_hote ("hote1 ", "alias_1", "ip_1");
ajout_hote ("hote2 ", "alias_2", "ip_2");
ajout_hote ("hote3 ", "alias_3", "ip_3);

J´obtiens bien le tableau ci-dessus. Cependant si j´appele ma fonction je dirai de facon dynamique par le biais du formulaire j´obtiens le résultat ci-dessous :

Code :
Array ( [0] => Array ( [hote] => hote1 [alias] => alias_1 [ip] => ip_1 ))
Lors du premier ajout, c est bien le resultat que je souhaite avoir. Mais si dans la foulée je souhaite ajouter une hote numéro 2, les informations que j ai saisi effaceront les données du tableau pour prendre la place de l´hote précédement crée.

Au debut je me suis dit que cela venait du fait que je n´ai pas créée de variable statiques dans ma fonction d´ajout. Hors même après la mise en place de variables statiques j´obtiens le même résultat. Je ne parviens pas à incriémenter mon indice du tableau qui accueillera le prochain hote.

Je pense que mon problème vient surement de ma compréhension de la programmation objet et également de l´appel de fonctions. Il est peut être impossible de réaliser ce que je souhaite si je n´enregistre pas de compteur temporairement dans un fichier ou bien une variable de session ?

J´avais également pensé aux cookies mais je ne sais pas trop ....

Il y a également quelque chose que je ne comprend pas c´est pour quelles raisons je ne parvient pas à affichier les erreurs générées par PHP.

j´ai une page index.php et les classes dans les fichiers .class.php qui sont inclus dans index.php. Si au debut du fichier index.php je rajoute la ligne error_reporting(E_ALL); et que je génére une erreur, la seule chose que j´obtiens est une page blanche. C´est très diffcile parfois pour débuger mon code ...

Le but est d´éviter de passer par une base de données.

Je vous remercie d´avance pour votre aide.
iOops est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2011, 21h32   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Sans voir un minimum de code c'est difficile de te répondre.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2011, 22h00   #3
Invité de passage
 
Inscription : mai 2006
Messages : 18
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 18
Points : 4
Points : 4
fichier index.php :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
include("host.class.php");
 
$host = new ohost();
 
echo "<form action='" . $_SERVER[´PHP_SELF´] . "' method='get'>";
echo "hos_name : <input type='imput' name='hosts[host_name]'><br/>";
echo "alias : <input type='imput' name='hosts[alias]'><br/>";
echo "IP: <input type='imput' name='hosts[address]'><br/>";
echo "<input type='submit' value='valider' name='ok'>";
echo "</form>";
 
if (isset($_GET['hosts']) && !empty($_GET['hosts']) ) {
      $hosts = $_GET['hosts'];
      $host->add_host($hosts);
      // affichage du tableau
      $host->p_hosts();
}
fichier host.class.php et le code de ma fonction d´ajout est la suivante :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
 
function add_host(array $hosts) {
    // appel de la fonction de recherche de l´hote 
    // pour éviter d´ajouter un hôte dèjà existant
    $this->host_search($hosts['host_name'], $hosts['address']);
    if(!$this->host_exist) {
         static$i=0;
          //$this->o_host = array(); initialisé par le constructeur
          $this->o_host[$i] = $hosts;
          $i++;
     } else {
          echo "<br/><font color='#FF0000'>this hostname: " 
                  . $hostname
                  . " or this IP: " 
                  . $ip . " exist already...</font><br/>";
     }
}
iOops est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2011, 22h13   #4
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Tes données doivent etre mise quelque part, en session par exemple.
A chaque soumission du formulaire, tu perds tout, y compris tes objets.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 15h45   #5
Invité de passage
 
Inscription : mai 2006
Messages : 18
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 18
Points : 4
Points : 4
quelle serai la meilleur option ? Passer par l´utilisation des sessions ou bien des cookies ?
iOops est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 16h01   #6
Membre du Club
 
Inscription : janvier 2010
Messages : 59
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 59
Points : 44
Points : 44
Ca dépends si tu dois garder tes variables seulement durant une session (ouverture à fermeture du navigateur) ou plus (plusieurs jours, mois, ans).
La session est plus pratique mais le temps de mémorisation est plus court. Le cookie créé un petit fichier sur le client...
MtgCmg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2011, 17h02   #7
Invité de passage
 
Inscription : mai 2006
Messages : 18
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 18
Points : 4
Points : 4
Par défaut Solution

J´utilise les session de la facon suivante et cela fonctionne bien:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
 
   include("fichier.class.php");
   session_start();
   // --------------ici le formulaire ------------
 
   if(!isset($_SESSION['nom_session'])) {
     $_SESSION['obj'] = new obj();
   } else {
      $_SESSION['obj']->add_item();
   }
 
?>
La session doit etre demarre uniquement apres l´inclusion des classes.
iOops est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/10/2011, 19h07   #8
Invité de passage
 
Homme Luis
Inscription : octobre 2011
Messages : 3
Détails du profil
Informations personnelles :
Nom : Homme Luis

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : octobre 2011
Messages : 3
Points : 1
Points : 1
Par défaut Pourquoi ne pas créer un inputs en tableau ?

Pourquoi ne pas créer un tableau d' inputs ?
Une fonction appendnode ajoute une ligne d'inputs vide.
Chaque input est un tableau (champ1[]) et tu récupéres tout en PHP lors du submit.

Un lien utile pas a pas :
http://www.cloudconnected.fr/2005/09...ux-dynamiques/
Heartbeat 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 15h39.


 
 
 
 
Partenaires

Hébergement Web