PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 21-11-2013 11:36:38

Virgo
Membre
Inscription : 21-11-2013
Messages : 1

Perte d'infos dans un formaulaire php

Bonjour à tous, je suis tout nouveau ici et content d'etre là smile

Je vous expose mon problème, j'ai un site internet dans lequel les internautes ont un compte (c'est des comptes d'association) ! Jusqu'ici pas de soucis particulier. Les adhérents peuvent ensuite modifier leurs informations et c'est là que ca se gate !

Quand un adhérent se connecte au site et qu'il veut modifier les informations de son compte, il arrive sur la page en question. Dans cette page j'ai plusieurs champs obligatoires tout fonctionne bien de ce coté là. Donc quand je clique sur modifier j'arrive sur ma page qui me permet de modifier mes infos, admettons que je fasse une erreur sur un champs obligatoire, et que je valide ma page, à ce moment là je reviens donc sur ma page avec écris en haut et en rouge le ou les champs qui posent problemes. Et à ce moment là, je perds 2 champs qui sont des champs à selection multiple...

C'est evidemment du PHP et je ne suis qu'un novice en PHP, et j'ai récupéré ce site que je dois débuggué dans tous les sens. Autre info, c'est un joomla et ce morceau de code est un ajout via le module "sourcerer".

Merci de votre aide smile

voici le code de la page :

<script type="text/javascript" src="plugins/system/sourcerer/js/arrayPHP2JS.js" charset="iso_8859-1"></script>
<script type="text/javascript" src="plugins/system/sourcerer/js/changeVille.js" charset="iso_8859-1"></script>
<script type="text/javascript">
                <!--
                        function maxlength_textarea(id, crid, max)
                        {
                                var txtarea = document.getElementById(id);
                                document.getElementById(crid).innerHTML=max-txtarea.value.length;
                                txtarea.onkeypress=function(){eval('v_maxlength("'+id+'","'+crid+'",'+max+');')};
                                txtarea.onblur=function(){eval('v_maxlength("'+id+'","'+crid+'",'+max+');')};
                                txtarea.onkeyup=function(){eval('v_maxlength("'+id+'","'+crid+'",'+max+');')};
                                txtarea.onkeydown=function(){eval('v_maxlength("'+id+'","'+crid+'",'+max+');')};
                        }
                        function v_maxlength(id, crid, max)
                        {
                                var txtarea = document.getElementById(id);
                                var crreste = document.getElementById(crid);
                                var len = txtarea.value.length;
                                if(len>max)
                                {
                                        txtarea.value=txtarea.value.substr(0,max);
                                }
                                len = txtarea.value.length;
                                crreste.innerHTML=max-len;
                        }
                -->
                </script>

<?php

 
$user = JFactory::getUser();
$db = JFactory::getDbo();

$admin=false;
$adherent = false;

$group = $user->groups;

foreach ($user->groups as $group)
{
  if($group == 7 || $group == 8)
    $admin=true;
   
  if($group == 15)
    $adherent=true;
}

if($admin)
  $id=$_GET['id_assoc'];
else
  $id=$user->id;
     
$message='';

$requete = 'SELECT * FROM TYPE_ASSOCIATION WHERE ID_TYPE_ASSOCIATION != 11';
$requete2 = 'SELECT * FROM ASSOCIATION a, VILLE v, a13m8_user_usergroup_map uum, a13m8_users u WHERE a.ID_VILLE = v.ID_VILLE AND uum.user_id = u.id AND a.ID_ASSOCIATION = u.id AND ID_ASSOCIATION ='.$id;
$db->setQuery($requete);
$domaines = $db->loadObjectList();
$db->setQuery($requete2);
$association = $db->loadObjectList();
 
$requete3 = 'SELECT * FROM VILLE WHERE ID_EPCI = '.$association[0]->ID_EPCI.' ORDER BY NOM_VILLE';
$db->setQuery($requete3);
$villes =$db->loadObjectList();
$req2 = "SELECT e.ID_EPCI as ide, NOM_EPCI, ID_VILLE as idv, NOM_VILLE FROM EPCI e, VILLE v WHERE v.ID_EPCI = e.ID_EPCI ORDER BY e.NOM_EPCI, v.NOM_VILLE;";

if(!empty($_POST['valider']))
  {  
    if(!empty($_POST['nomAssociation']))
    {
      if(strlen($_POST['nomAssociation']) < 3)
        $message .= 'Le nom de l\'association doit être d\'au moins 3 caractères.<br/>';
      if(strlen($_POST['nomAssociation']) > 100)
        $message .= 'Le nom de l\'association doit être inférieur à 100 caractères.<br/>';
    }  
    else $message .= 'Le nom de l\'association est obligatoire.<br/>';
   
    if(!empty($_POST['acronyme']))
    {
      if(strlen($_POST['acronyme']) < 2)
        $message .= 'L\'acronyme doit être d\'au moins 2 caractères.<br/>';
      if(strlen($_POST['acronyme']) > 10)
        $message .= 'L\'acronyme doit être inférieur à 10 caractères.<br/>';
    }
   
    if(empty($_POST['domaine']))
      $message .= 'Le domaine d\'activité est obligatoire.<br/>';
     
    if(empty($_POST['epci']))
      $message .= 'Le secteur est obligatoire.<br/>';
     
    if(empty($_POST['ville']))
      $message .= 'La ville est obligatoire.<br/>';
   
    if(!empty($_POST['adresse']))
    {
      if(strlen($_POST['adresse']) < 10)
        $message .= 'L\'adresse doit être d\'au moins 10 caractères.<br/>';
       
      if(strlen($_POST['adresse']) > 100)
        $message .= 'L\'adresse doit être inférieure à 100 caractères.<br/>';
    }
    else $message .= 'L\'adresse est obligatoire.<br/>';
   
    if(!empty($_POST['codePostal']))
    {
      if(strlen($_POST['codePostal']) != 5 || !is_numeric($_POST['codePostal']))
        $message .= 'Le code postal doit être composé de 5 chiffres.<br/>';
    }
    else  $message .= 'Le code postal est obligatoire.<br/>';
   
    if(!empty($_POST['telephoneFixe']))
    {
      if(strlen($_POST['telephoneFixe']) > 14)
        $message .= 'Le numéro de téléphone fixe doit être composé de 10 chiffres.<br/>';
    }
    else $message .= 'Le numéro de téléphone fixe est obligatoire.<br/>';
   
//    if(!empty($_POST['telephonePortable']))
//    {
//      if(strlen($_POST['telephonePortable']) > 14)
//        $message .= 'Le numéro de téléphone portable doit être composé de 10 chiffres.<br/>';
//    }
   
    if(!empty($_POST['presentation']))
    {
      if($adherent)
      {
        if(strlen($_POST['presentation']) > 1500)
          $message .= 'La présentation doit être inférieure à 1500 caractères.<br/>';
      }
      else
      {
        if(strlen($_POST['presentation']) > 60)
          $message .= 'La présentation doit être inférieure à 60 caractères.<br/>';
      }
    }
    else $message .= 'La présentation est obligatoire.<br/>';
   
    if($adherent)
    {
      if(!empty($_POST['siteWeb']))
      {
        if(strlen($_POST['siteWeb']) > 100)
          $message .= 'La site web doit être inférieur à 100 caractères.';
      }
     
      if(!empty($_POST['nomContact']))
      {
        if(strlen($_POST['nomContact']) > 100)
          $message .= 'Le nom du contact doit être inférieur à 100 caractères.';
      }
     
      if(!empty($_POST['fonctionContact']))
      {
        if(strlen($_POST['fonctionContact']) > 100)
          $message .= 'La fonction du contact doit être inférieur à 100 caractères.';
      }

      if(!empty($_POST['telephoneContact']))
      {
        if(strlen($_POST['telephoneContact']) > 14)
          $message .= 'Le numéro de téléphone du contact doit être composé de 10 chiffres.<br/>';
      }
     
      if(!empty($_POST['datesImportantes']))
      {
        if(strlen($_POST['datesImportantes']) > 300)
          $message .= 'Les dates importantes doivent être inférieures à 300 caractères.';
      }
     
      if(!empty($_POST['permanences']))
      {
        if(strlen($_POST['permanences']) > 100)
          $message .= 'Les permanences doivent être inférieures à 100 caractères.';
      }
    }
   
    if(empty($message))
    {
      if($adherent == false)
        $update = 'UPDATE ASSOCIATION a SET a.NOM = "'.$_POST['nomAssociation'].'", a.ACRONYME = "'.$_POST['acronyme'].'", a.ID_TYPE_ASSOCIATION = '.$_POST['domaine'].', a.ID_VILLE = '.$_POST['ville'].', a.ADRESSE = "'.$_POST['adresse'].'", a.CODE_POSTAL = "'.$_POST['codePostal'].'", a.TELEPHONE_FIXE = "'.$_POST['telephoneFixe'].'",
        a.TELEPHONE_PORTABLE = "'.$_POST['telephonePortable'].'", a.DESCRIPTION = "'.$_POST['presentation'].'" WHERE ID_ASSOCIATION = '.$id.';';
      else
        $update = 'UPDATE ASSOCIATION a SET a.NOM = "'.$_POST['nomAssociation'].'", a.ACRONYME = "'.$_POST['acronyme'].'", a.ID_TYPE_ASSOCIATION = '.$_POST['domaine'].', a.ID_VILLE = '.$_POST['ville'].', a.ADRESSE = "'.$_POST['adresse'].'", a.CODE_POSTAL = "'.$_POST['codePostal'].'", a.TELEPHONE_FIXE = "'.$_POST['telephoneFixe'].'",
        a.TELEPHONE_PORTABLE = "'.$_POST['telephonePortable'].'", a.DESCRIPTION = "'.$_POST['presentation'].'", a.SITE_INTERNET = "'.$_POST['siteWeb'].'", a.NOM_CONTACT = "'.$_POST['nomContact'].'", a.FONCTION_CONTACT = "'.$_POST['fonctionContact'].'", a.TELEPHONE_CONTACT = "'.$_POST['telephoneContact'].'", a.DATES_IMPORTANTES = "'.$_POST['datesImportantes'].'", a.PERMANENCES = "'.$_POST['permanences'].'" WHERE ID_ASSOCIATION = '.$id.';';     
     
     
      $db->setQuery($update);
      $db->query();
     
      $chemin ='Location: /index.php/component/content/article?id=100&id_assoc='.$id;
      header($chemin);
    }
  }
   
    if(!empty($message))
      echo '<p style="text-align:center;"><font color="red">Erreur</font></p><p><font color="red">'.$message.'</font></p>';
?>
<a href="<?php echo '/index.php/component/content/article?id=100&id_assoc='.$user->id;?>">Retour aux informations générales</a>
<h1>Modifier les informations</h1>

<form method="post" enctype="multipart/form-data">
  <table class="formEvent">
    <tr>
      <td>Nom de l'association*</td>
      <td><input type="text" name="nomAssociation" style="width:350px;" value="<?php if(!empty($_POST['nomAssociation'])) echo htmlspecialchars($_POST['nomAssociation']); elseif(!empty($association[0]->NOM)) echo htmlspecialchars($association[0]->NOM);?>" /></td>
    </tr>
    <tr>
      <td>Acronyme</td>
      <td><input type="text" name="acronyme" style="width:350px;" value="<?php if(!empty($_POST['acronyme'])) echo htmlspecialchars($_POST['acronyme']); elseif(!empty($association[0]->ACRONYME)) echo htmlspecialchars($association[0]->ACRONYME);?>" /></td>
    </tr>
    <tr>
      <td>Domaine d'activité*</td>
      <td>
        <select name="domaine" style="width:350px;" >
          <option value="">----</option>
          <?php
          foreach($domaines as $domaine)
          {
            echo '<option value="'.$domaine->ID_TYPE_ASSOCIATION.'"';
            if(!empty($_POST['domaine']) && $_POST['domaine'] == $domaine->ID_TYPE_ASSOCIATION)
              echo 'selected';
            if($association[0]->ID_TYPE_ASSOCIATION == $domaine->ID_TYPE_ASSOCIATION)
              echo 'selected';
            echo '>'.$domaine->LIBELLE.'</option>';
          }
          ?>
        </select>
      </td>
    </tr>
    <tr>
      <td>Secteur*</td>
<td>
        <?php
          $temoin_e = 0;
          $epci = array();
          $id = 0;
         
         
          $db->setQuery($req2); // execution de la requéte
          $rows = $db->loadObjectList();

          foreach($rows as $row)
          {
            $e = $row->ide;
            $v = $row->idv;

            /* Je vérifie si je suis toujours dans la même epci, sinon je crée les tableaux nécessaires */
            if($temoin_e != $e)
            {
              $epci[$e] = array();
              /* J'ajoute l'epci */
              $epci[$e][0] = $row->NOM_EPCI;
              $epci[$e][1] = array();
              $epci[$e][2] = array();
              $temoin_e = $e;
              $id = 0;
            }
            /* J'ajoute les villes */
            $epci[$e][1][$id] = $v;
            $epci[$e][2][$id] = $row->NOM_VILLE;
            $id++;
          }

          $chaine = htmlspecialchars(serialize($epci), ENT_QUOTES);
         
          ?>
          <script type="text/javascript">
            /* <![CDATA[ */
            <!--
            /*
            * Ici, on transmets la chaîne sérialisée à JavaScript
            * pour la transformer en tableau indexé JavaScript
            */
            var tableau = new PhpArray2Js('<?php echo $chaine; ?>');
            var tab = tableau.retour();
            // -->
            /* ]]> */
          </script>
                 
          <?php

          echo '<select name="epci" id="epci" onchange="changeVille(tab,this.value, false);" style="width:350px;" >';
          echo '<option value="" selected>-----</option>';
          foreach($epci as $nr => $nom)
          {
            echo '<option value="'.htmlspecialchars($nr).'"';
            if (!empty ($_POST['epci']) && $_POST['epci']== $nr) echo 'selected';
            if($association[0]->ID_EPCI == $nr)
              echo 'selected';
            echo '>'.htmlspecialchars($nom[0]).'</option>';
          }
          echo '</select>';
          ?>
      </td>
    </tr>
    <tr>
      <td>Ville*</td>
      <td>
        <span id="blocVilles">
          <select name="ville" style="width:350px;" >
            <option value="">-----</option>
              <?php
              foreach($villes as $ville)
              {
                echo '<option value="'.$ville->ID_VILLE.'"';
                if ($association[0]->ID_VILLE == $ville->ID_VILLE) echo 'selected';
                echo '>'.htmlspecialchars($ville->NOM_VILLE).'</option>';
              }
              ?>
          </select>
        </span>
      </td>
    </tr>
    <tr>
      <td>Adresse*</td>
      <td><input type="text" style="width:350px;" name="adresse" value="<?php if(!empty($_POST['adresse'])) echo htmlspecialchars($_POST['adresse']); elseif(!empty($association[0]->ADRESSE)) echo htmlspecialchars($association[0]->ADRESSE);?>" /></td>
    </tr>
    <tr>
      <td>Code postal*</td>
      <td><input type="text" style="width:350px;" name="codePostal"  value="<?php if(!empty($_POST['codePostal'])) echo htmlspecialchars($_POST['codePostal']); elseif(!empty($association[0]->CODE_POSTAL)) echo htmlspecialchars($association[0]->CODE_POSTAL)?>" /></td>
    </tr>
    <tr>
      <td>Téléphone fixe*</td>
      <td><input type="text" style="width:350px;" name="telephoneFixe"  value="<?php if(!empty($_POST['telephoneFixe'])) echo htmlspecialchars($_POST['telephoneFixe']); elseif(!empty($association[0]->TELEPHONE_FIXE)) echo htmlspecialchars($association[0]->TELEPHONE_FIXE);?>" /></td>
    </tr>
    <tr>
      <td>Téléphone portable</td>
      <td><input type="text" style="width:350px;"  name="telephonePortable" /></td>
    </tr>
    <tr>
      <td>Présentation*</td>
      <td><textarea id="textarea_1" name="presentation" style="width:350px; height:150px; max-width:350px; max-height:150px;"><?php if(!empty($_POST['presentation'])) echo htmlspecialchars($_POST['presentation']); elseif(!empty($association[0]->DESCRIPTION)) echo htmlspecialchars($association[0]->DESCRIPTION); ?></textarea>
      <br/>
      Il vous reste <span id="carac_reste_textarea_1"></span> caractères.
    <?php if($adherent)
    {
    ?>
        <script type="text/javascript">
                <!--
                        maxlength_textarea('textarea_1','carac_reste_textarea_1',1500);
                -->
        </script>
    <?php
    }
    else
    {
    ?>
    <script type="text/javascript">
                <!--
                        maxlength_textarea('textarea_1','carac_reste_textarea_1',300);
                -->
        </script>
    <?php
    }
    ?>
    </td>
    </tr>
    <?php
    if($adherent)
    {
    ?>
      <tr>
        <td>Site Internet</td>
        <td><input type="text" name="siteWeb" style="width:350px;" value="<?php if(!empty($_POST['siteWeb'])) echo htmlspecialchars($_POST['siteWeb']); elseif(!empty($association[0]->SITE_INTERNET)) echo htmlspecialchars($association[0]->SITE_INTERNET);?>"/></td>
      </tr>
      <tr>
        <td>Nom du contact</td>
        <td><input type="text" name="nomContact" style="width:350px;" value="<?php if(!empty($_POST['nomContact'])) echo htmlspecialchars($_POST['nomContact']); elseif(!empty($association[0]->NOM_CONTACT)) echo htmlspecialchars($association[0]->NOM_CONTACT);?>"/></td>
      </tr>
      <tr>
        <td>Fonction du contact</td>
        <td><input type="text" name="fonctionContact" style="width:350px;" value="<?php if(!empty($_POST['fonctionContact'])) echo htmlspecialchars($_POST['fonctionContact']); elseif(!empty($association[0]->FONCTION_CONTACT)) echo htmlspecialchars($association[0]->FONCTION_CONTACT);?>"/></td>
      </tr>
      <tr>
        <td>Telephone du contact</td>
        <td><input type="text" name="telephoneContact" style="width:350px;" value="<?php if(!empty($_POST['telephoneContact'])) echo htmlspecialchars($_POST['telephoneContact']); elseif(!empty($association[0]->TELEPHONE_CONTACT)) echo htmlspecialchars($association[0]->TELEPHONE_CONTACT);?>"/></td>
      </tr>
      <tr>
        <td>Dates importantes</td>
        <td><textarea id="textarea_2" name="datesImportantes" style="width:350px; height:150px; max-width:350px; max-height:150px;"><?php if(!empty($_POST['datesImportantes'])) echo htmlspecialchars($_POST['datesImportantes']); elseif(!empty($association[0]->DATES_IMPORTANTES)) echo htmlspecialchars($association[0]->DATES_IMPORTANTES);?></textarea>
        <br/>   Il vous reste <span id="carac_reste_textarea_2"></span> caractères.
        </td>
      </tr>
      <script type="text/javascript">
                <!--
                        maxlength_textarea('textarea_2','carac_reste_textarea_2',300);
                -->
      </script>
      <tr>
        <td>Permanences</td>
        <td><input type="text" name="permanences" style="width:350px;" value="<?php if(!empty($_POST['permanences'])) echo htmlspecialchars($_POST['permanences']); elseif(!empty($association[0]->PERMANENCES)) echo htmlspecialchars($association[0]->PERMANENCES);?>"/></td>
      </tr>
    <?php
    }
    ?>
    <tr>
      <td colspan="2" style="text-align:center"><input type="submit" value="Valider les modifications" name="valider"/></td>
    </tr>
  </table>
</form>


Hors ligne

#2 09-01-2014 14:03:48

pingoui
Membre
Inscription : 09-01-2014
Messages : 1

Re : Perte d'infos dans un formaulaire php

soit plus explicite quand tu dis perdre 2 champ et si possible envoi une capture d'ecran du problème.
A mon avis le prblème ne se situe pas du coté de php si c'est au niveau de la perte des champs.
Il va falloir plutot voir du coté de ton javascript!

Hors ligne

#3 12-01-2014 05:49:18

vsoieslones
Banni(e)
Inscription : 12-01-2014
Messages : 1

Re : Perte d'infos dans un formaulaire php

Message supprimé par MK et utilisateur banni.
Cause : utilise le forum à des fins de pollution publicitaire.

Hors ligne

Pied de page des forums