IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Ajouter un champ (JS) en respectant la lecture des données issues de la base SQL via le PHP


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par défaut Ajouter un champ (JS) en respectant la lecture des données issues de la base SQL via le PHP
    Bonjour a tous et surtout BONNNNNNNNE ANNNNNNNNEEEEEEE !!!


    Pour cette NOUVELLE année, je souhaiterai s'il vous plait vous exposer un NOUVEAU problème :-D

    J'ai actuellement un formulaire en PHP, dont les données sont sauvegardées via l'appelle d'une fonction envoi(), jusque la tout est OK :
    ';
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    $rescred = mysql_query("SELECT * FROM `toto` where idC='$idc' order by idCR asc");
        while($clcred = mysql_fetch_array($rescred, MYSQL_ASSOC))
        {
    	 for ($i = 1; $i <= 15; $i++) 
             {
    		$j=$i; if ($j<10){ $j='0'.$j;}
                               if ($clcred['nom_'.$i] =="1"){$nclcred="Pierre";}
                               if ($clcred['nom_'.$i] =="2"){$nclcred="Jean";}
                               if ($clcred['sex_'.$i] =="1"){$ncltyp="Homme";}
                               if ($clcred['sex_'.$i] =="3"){$ncltyp="Femme";}
    				echo '  	
    					<div class="form-group normal">
    						<div class="col-sm-2"><select name="nom_'.$i.'" id="nom_'.$i.'" class="form-control tooltips" onchange="envoi(\'nom_'.$i.'\','.$i.');" data-original-title="Nom Personne" data-placement="bottom"><option disabled>Nom</option>';if ($clcred['nom_'.$i]<>''){echo '<option value="'.$clcred['nom_'.$i].'" selected="selected">'.$nclcred.'</option>';} echo '<option value=""></option><option value="1">Pierre</option><option value="2">Jean</option></select></div>
    						<div class="col-sm-2"><select name="sex_'.$i.'" id="sex_'.$i.'" class="form-control tooltips" onchange="envoi(\'ncltyp_'.$i.'\','.$i.');" data-original-title="Sexe Personne" data-placement="bottom"><option disabled>Nom</option>';if ($clcred['sex_'.$i]<>''){echo '<option value="'.$clcred['sex_'.$i].'" selected="selected">'.$ncltyp.'</option>';} echo '<option value=""></option><option value="1">Homme</option><option value="2">Ierre</option></select></div>
    						<div class="col-sm-1"><input type="text" class="form-control tooltips" id="age_'.$i.'" name="age_'.$i.'" value="'.$clcred['age_'.$i].'" placeholder="Age" onblur="envoi(\'age_'.$i.'\','.$i.')" data-original-title="Age" data-placement="bottom"></div>
                                           </div>	
    		}
          }
    Mon problème vient du fait que le nombre de ligne est statique $i<=15, or j'aimerai bien modifier ce script en supprimant l'affichage des 15 lignes d'un coup et plutot proposer de rajouter des lignes de 2 jusqu'a 15 par exemple. La nous parlons de javascript :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>formulaire multichamp</title>
    <script type="text/javascript">
    function create_champ(i) {
    var i2 = i + 1;
    document.getElementById('leschamps_'+i).innerHTML = '<input type="text" name="image_'+i2+'"></span>';
    document.getElementById('leschamps_'+i).innerHTML += (i <= 30) ? '<br /><span id="leschamps_'+i2+'"><a href="javascript:create_champ('+i2+')">Ajouter un champs</a></span>' : '';
    }
    </script>
    </head>
     
    <body>
    <input type="text" name="image_1" /><br />
    <span id="leschamps_1"><a href="javascript:create_champ(1)">Ajouter un champs</a></span>
    <!-- <input name="valide" type="submit" value="envoyer"/> -->
    </body>
    </html>
    Mon problème pour rester dans le PHP est que je ne parviens pas a rendre compatible le $i du javascript avec le $i du php.

    En clair je voudrai si l'on rappelle le fichier qu'il lise dans la base de données SQL les infos sauvegardées et qu'il affiche autant de lignes et d'infos qui ont été sauvegardées.

    Si vous avez une piste de réflexion, je suis preneur.

    Merci a tous pour votre aide et bonne journée

    Olivier

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Utilise une notation en tableau :
    Ainsi tu récupères tout dans $_POST['image'] sans avoir besoin de savoir combien il y en a.

    Tu peux faire la même chose pour tous les champs.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par défaut
    Je ne comprends pas ... pourquoi utiliser $_POST['image']

    Je réitère car je pense ne pas avoir été trés trés clair dans mes explications.

    Actuellement j'ai 15 series d'input et de select dont les noms prennent des $i en fonction de la boucle FOR .. Tout est OK

    <select name="nom_1" id="nom_1" class="form-control tooltips" onchange="envoi(\'nom_1\',1);" data-original-title="Nom Personne" data-placement="bottom"><option disabled>Nom</option>';if ($clcred['nom_1']<>''){echo '<option value="'.$clcred['nom_1'].'" selected="selected">'.$nclcred.'</option>';} echo '<option value=""></option><option value="1">Pierre</option><option value="2">Jean</option></select>
    <select name="sex_1" id="sex_1" class="form-control tooltips" onchange="envoi(\'ncltyp_1'\',1);" data-original-title="Sexe Personne" data-placement="bottom"><option disabled>Nom</option>';if ($clcred['sex_1']<>''){echo '<option value="'.$clcred['sex_1'].'" selected="selected">'.$ncltyp.'</option>';} echo '<option value=""></option><option value="1">Homme</option><option value="2">Ierre</option></select>
    <input type="text" class="form-control tooltips" id="age_1" name="age_1" value="'.$clcred['age_1'].'" placeholder="Age" onblur="envoi(\'age_1\',1)" data-original-title="Age" data-placement="bottom">

    <select name="nom_2" id="nom_2" class="form-control tooltips" onchange="envoi(\'nom_2\',2);" data-original-title="Nom Personne" data-placement="bottom"><option disabled>Nom</option>';if ($clcred['nom_2']<>''){echo '<option value="'.$clcred['nom_2'].'" selected="selected">'.$nclcred.'</option>';} echo '<option value=""></option><option value="1">Pierre</option><option value="2">Jean</option></select>
    <select name="sex_2" id="sex_2" class="form-control tooltips" onchange="envoi(\'ncltyp_2'\',2);" data-original-title="Sexe Personne" data-placement="bottom"><option disabled>Nom</option>';if ($clcred['sex_2']<>''){echo '<option value="'.$clcred['sex_2'].'" selected="selected">'.$ncltyp.'</option>';} echo '<option value=""></option><option value="1">Homme</option><option value="2">Ierre</option></select>
    <input type="text" class="form-control tooltips" id="age_2" name="age_2" value="'.$clcred['age_2'].'" placeholder="Age" onblur="envoi(\'age_2\',2)" data-original-title="Age" data-placement="bottom">

    etc.... grace a la boucle for .. donc jusqu' 15

    ce que je voudrais c'est supprimer mon script de boucle for, n'avoir que la premiere ligne et qu'en cliquant sur un bouton je rajoute des lignes, cela fonctionne sauf que je ne parviens pas quand je rappelle un fichier d'une personne a afficher le nombre de ligne deja precedemmement remplies et donc lire les données precedemment enregistrées ..

    Mon formulaire ne sauvegarde pas les données avec le POST mais plutot en appelant la fonction envoi()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function envoi (idA,nb) {
    idC= 'S'+idA;
    var idC = document.getElementById(idA).value;
    var xhr_object = null;
    if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest();
    else if(window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
    else {alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");return;}
    xhr_object.open("POST", "sauve.php?personne=<?php echo $personne;?>&nb="+nb+"&champ="+idA+"&"+idA+"="+idC, true);
    xhr_object.onreadystatechange = function() {if(xhr_object.readyState == 4) {}}
    xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    var data = "personne=<?php echo $personne;?>&nb="+nb+"&champ="+idA+"&"+idA+"="+idC;
    xhr_object.send(data);
    var idC = document.getElementById(idA); idC.style.border="2px solid #00FF00";
    }
    ->P.S : Je sais j'utilise ici autant le POST que le GET, mais l'un sans l'autre rien ne fonctionne chez moi



    En fait ce que je voudrai c'est un script qui permet de rajouter des lignes de champs mais quand je rappelle cette page il me donne autant de ligne de champ que j'ai sauvegardé d'infos...


    MErci milles fois

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Ton problème a plus l'air d'être sur Javascript que sur la partie PHP.

    Pour l'aspect HTML, n'utilise pas des notation "champ_xxx" mais "champ[xxx]", ça te permet de travailler sur des tableaux PHP et donc de ne pas avoir besoin de savoir combien tu as des valeurs.

    Si tu es sûr que ton problème est sur l'écriture du code PHP, alors explique nous ce que doit faire le code au final, ça sera plus clair pour voir le problème.
    Ce que je ne vois pas bien, c'est pourquoi tu as besoin de connaître le numéro de la ligne puisque visiblement tu fais les insertions une par une en ajax.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par défaut
    Imaginons une table dans laquelle, j'ai 20 membres d'une équipe telle que :

    nbmatch / nom_1 / sex_1 / age_1 / nom_2 / sex_2 / age_2 / ..................................nom_20 / sex_20 / age_20

    J'ai donc besoin d'envoyer via Ajax, la valeur de l'input ou du select par exemple nom_5 dans ma table SQL la ou le champ 'nom_5' existe...

    Voila pourquoi j'ai besoin d'identifier le nom de l'imput par 'nom_X', tout simplement

    du coté de SQL j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    		$champ = @$_GET["champ"];	
    		$valeur = @$_GET[$champ];
    		$v_var="`$champ` = '$valeur'";
    		$modif=mysql_query("UPDATE `toto` SET $v_var WHERE `idC`='$idC'");

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu as une table avec les colonnes nom_1, sex_1, age_2 etc. jusqu'à 15 ? C'est bien ça ?
    Si c'est ça où va aller ton 16ème membre ? c'est ça ton problème peut etre d'ailleurs non ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. Xml datasource Probleme de lecture des données
    Par gazzall dans le forum Jasper
    Réponses: 1
    Dernier message: 29/03/2007, 11h18
  2. Réponses: 1
    Dernier message: 21/03/2007, 16h43
  3. Réponses: 1
    Dernier message: 29/11/2006, 12h00
  4. pb de lecture des données fichier .ini
    Par peppena dans le forum C
    Réponses: 5
    Dernier message: 12/06/2006, 17h45
  5. [JList] Lecture des données sauvegardées dans un fichier
    Par Myogtha dans le forum Composants
    Réponses: 7
    Dernier message: 10/06/2004, 21h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo