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

Langage PHP Discussion :

Modifier des données à distance


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 94
    Par défaut Modifier des données à distance
    Bonjour,

    j'ai des images que je souhaites trier.
    j'ai ajouter à coté de chaque images un petit champ <input>
    pour que l'utilisateur écrive un numéro.

    Tout en bas de ma page, j'ai une balise <form> avec un envoi de données par POST.

    Malheureusement je ne sais pas comment rattacher le bouton "MODIFIER" par toutes mes données <input>


    Dans l'affichage, je fais un ORDER BY "num" qui correspond au numéros de chaque images.

    Y à t'il moyen de modifier tout un tas de données d'un seul coup ?
    Merci de m'éclairer la dessus car je ne sais vraiment pas comment faire !
    @+++

  2. #2
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Par défaut
    Du code aurait été bienvenu, mais bon, pour les grand principes :

    Via un form, toutes les input que tu veux envoyer doivent être contenues entre les balises <form> et </form>. De ce fait, il faut un nom différent pour chaque input.

    Une autre option consiste à passer par un javascript.

    Dans tous les cas, il te faudra dans la page de réception une procédure capable de traiter les noms dynamiques de variables...

    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    echo '<form method="POST" action="page2.php">';
    for($i=0;$i<100;$i++)
       echo 'champ '.$i.' : <input type="texte" name="MON_INPUT_'.$i.'"><br>';
    echo '<input type="submit"></form>';
    Va te créer dynamiquement 100 champs de saisie. Dans ton cas, tu peux remplacer $i par ton ID d'image.

    dans page2.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach($_POST as $key => $val)
    {
       if(strlen($val) && preg_match("#^MON_INPUT_([0-9]+)$#is", $key, $res))
          echo 'Le champ N° '.$res[1].' contient la valeur '.$val.'<br>';
    }

  3. #3
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut
    Bonjour,

    Le code de comode ne fonctionnera que si et seulement si tes identifiants de photos ne comprennent pas de sauts d'id.

    Autrement dit, si tu as trois images
    1
    2
    3
    et que tu supprimes la 2, le code de Comode prendra

    1
    -
    2
    Pourquoi ne pas faire la modification en deux temps? Est-ce vraiment indispensable en un seul? Si oui, il faudra l'usage d'un langage asynchrone, faire de l'ajax pourquoi pas.

    Lui demander de sélectionner les champs avec checkbox puis, dans la page suivante, faire une requête rattachant l'id de chaque image à son véritable numéro pour ensuite le modifier?

    Autre chose à laquelle je pense, tu dis utiliser des inputs puis, en bas de page, un form.

    Ceci est sujet à qui pro quo.
    En effet, en te lisant, on a l'impression que tes inputs sont en dehors du form, si tel est réellement le cas, tes inputs ne seront pas gérés.
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  4. #4
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Par défaut
    Citation Envoyé par Deallyra Voir le message
    Bonjour,

    Le code de comode ne fonctionnera que si et seulement si tes identifiants de photos ne comprennent pas de sauts d'id.

    Autrement dit, si tu as trois images


    et que tu supprimes la 2, le code de Comode prendra
    Heuuu pas du tout !?
    La boucle for(), c'est juste pour faire un exemple avec un grand nombre de champs... Ca marchera sans aucun problème avec des numéro qui ne se suivent pas, et si tu mets l'id de ton image à la fin de MON_INPUT_ dans le nom des <input>, c'est ce même id que tu récupéreras dans $res[1]. Je confirme donc que mon code est bien associatif et fonctionne dans tous les cas de figure aussi longtemps que l'ID est un entier...

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 94
    Par défaut
    hello, merci pour vos réponses !

    En effet, en te lisant, on a l'impression que tes inputs sont en dehors du form, si tel est réellement le cas, tes inputs ne seront pas gérés.
    C'est exactement ça !
    C'est ce que je voulais savoir en fait...

    J'ai bien compris le problème, maintenant, il va falloir que je trouve une solution.

    En fait, du moment que j'arrive à résoudre mon problème, je suis preneur de n'importe quelle solution, d'ailleurs, je ne sais même pas si j'ai réellement besoin d'un formulaire pour ça.

    Sur l'interface utilisateur que je suis en train de créer, j'ai une série de photos, qui apparaissent dans l'ordre ou on les insère..

    Je voulais qu'a tout moment on puisse changer l'ordre d'apparition des photos.
    C'est pour ça que j'ai imaginer une solution d'input a coté des photos ou l'on pourrais rentrer un nombre puis valider pour réorganiser l'affichage des images.


    C'est pour ça que je n'ai pas mis de "code"
    Je préfère savoir vraiment quel solution est la meilleur avant de me lancer dans l'opération.

    En tout cas voici comment j'affiche mes images :


    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
    21
    22
    23
    24
    25
    26
    27
    28
     
    <?php
    //   RECUPERATION DE LA BASE DE DONNEE  !
    mysql_connect($localHost, $sql_name, $sql_pass);
    mysql_select_db($sql_db);
    $reponse = mysql_query("SELECT * FROM photos WHERE catName='$nomDeLaCategorie' ORDER BY num") or die(mysql_error());
    ////////////
    while ($donnees = mysql_fetch_array($reponse) ){
    ?>
    <div id="ensemble">
    <div id="pictIcon">
    <a href="<?php echo $donnees['photoLinkBig'];  ?>"> <img src="<?php echo $donnees['photoLinkSmall'];  ?>"> </img> </a>
    </div>
    <div id="titrePhoto">
    <?php echo $donnees['photoTitle'];  ?>          
    <INPUT TYPE="text" NAME="numero" SIZE="1" MAXLENGTH="2" VALUE="<?php echo $donnees['num']; ?>" > 
    </div>
    <div id="descrPhoto">
    <?php echo $donnees['photoDescr'];  ?>
    </div>
    <div id="supprPhoto">
    <a href="inCat.php?id=<?php echo $donnees['id'] ?>&linkSmall=<?php echo $donnees['photoLinkSmall'] ?>&linkBig=<?php echo $donnees['photoLinkBig'] ?>" class ="delete">X</a>
    </div>
    </div>
    </br>
    <?php
    }
    ?>
    Comme vous voyez, j'ai mis un order by num, et c'est ces numéros que j'aimerais pouvoir modifier pour réorganiser l'affichage de mes photos.

    Si vous avez une soluce intéressante je suis preneur !

    En tout cas, merci de m'aider !
    @+++

  6. #6
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Par défaut
    Si tu mets tous les input dans le même forme, ma solution est viable en l'état.
    T'as juste à remplacer le $i par ton $id, et remplacer le echo dans la reception par un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete = 'update photo set num = '.intval($val).' where id = '.$res[1].'limit 1';
    Et je confirme, ça marchera même si les numéro ne se suivent pas.

  7. #7
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut
    Donc...

    un $id = 5 choisi par l'utilisateur

    Il va te chercher la photo à l'id 5.

    Elle n'existe pas, la requête ne fonctionnera pas mais ton code est opérationnel?

    J'aimerai comprendre >.<
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  8. #8
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Par défaut
    mais comme je disais, le for(), c'est juste pour l'exemple... dès lors qu'on remplace le $i par un ID qui vient de la base, on tombe forcément sur quelque chose qui existe (sauf tentative de hack, mais il suffit de faire la vérification et ça serait hors sujet)... Puis l'utilisateur ne choisit jamais l'ID, il remplit juste le champ qui correspond à un ID et que l'on récupère dans $val... Si l'ID n'existe pas, y'a juste pas de champs de saisie correspondant a l'ID... Mais l'ID est dans le name du input, pas dans le champ de saisie... Donc on le "choisit" pas...

    Je vois vraiment pas ce qui te chagrine dans tout ça...

    Le plus simple, copie/colle mon code en mettant un rand(1, 99999999) pour $i et test le...

  9. #9
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut
    Ce qui me chagrine c'est que l'on donne une solution pour exemple fausse...

    Tu remplaces comment le $i par un id venant de la base?

    Tu fais d'abord un listing et ensuite tu attribues ton id point par point à la liste récupérée?

    On choisit l'ID forcément si on choisi une image u_u
    Comment l'identifier autrement?

    C'est un choix implicite mais il est fait par l'utilisateur!


    Donc je persiste, ta solution n'est pas conforme.

    De plus, faire un rand(1, 99999999) est complètement inutile, il n'a aucun intérêt.

    int rand ( int min , int max )

    Appelée sans les options min et max , rand retourne un nombre pseudo-aléatoire entre 0 et RAND_MAX . Si vous voulez un nombre aléatoire entre 5 et 15 (inclus), par exemple, utilisez rand (5, 15) .
    A quoi cela te servirait de tirer aléatoirement un numéro?
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  10. #10
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Par défaut
    Bon... Exemple complet alors...

    table image(INT id_image, VARCHAR2 url_image, INT tri_image)

    Tu remplaces comment le $i par un id venant de la base?
    comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    echo '<form method="POST" action="page2.php">';
    $r = mysql_query('select * from image order by tri_image') or die(mysql_error()); 
    while($img = mysql_fetch_assoc($r))
    {
       echo '<img src="'.$img['url_image'].'"><br>Indiquez une valeur de tri : <input type="text" name="MON_IMAGE_'.$img['id_image'].'" value="'.$img['tri_image'].'"><hr>';
    }
    echo '</form>';

    sur page2.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    foreach($_POST as $key => $val)
    {
       if(is_numeric($val) && preg_match("#^MON_IMAGE([0-9]+)$#is", $key, $res))
       {
          mysql_query('update image set tri_image = '.$val.' where id_image = '.$res[1].' limit 1') or die(mysql_error());
       }
    }
    Tu fais d'abord un listing et ensuite tu attribues ton id point par point à la liste récupérée?
    Pas du tout... J'attribue les ID aux nom de champs input en même temps que le listing, et sur la 2ème page, j'attribue image par image la valeur de tri reçue en paramètre à chaque image dont on reçoit l'ID conformément à ce que demande dimebagplan...
    j'ai ajouter à coté de chaque images un petit champ <input>
    pour que l'utilisateur écrive un numéro.
    A aucun moment je n'attribue un nouvel ID à une image.

    On choisit l'ID forcément si on choisi une image u_u
    Comment l'identifier autrement?

    C'est un choix implicite mais il est fait par l'utilisateur!
    Non, toutes les images de la liste passeront dans le POST (elles sont toutes dans le form)... On choisit pas les ID, ils sont imposés par la page... Et les images dont la valeur de tri n'est pas un numérique seront ignorés sur la page2.php.

    A quoi cela te servirait de tirer aléatoirement un numéro?
    Si je proposait de faire le test avec un RAND(), c'était pour montrer que cela ne change rien que les ID ($i dans le 1er exemple) se suivent où non. C'était en réponse à ça :

    Le code de comode ne fonctionnera que si et seulement si tes identifiants de photos ne comprennent pas de sauts d'id.
    Ce qui n'est pas vrai...

  11. #11
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut
    Ton code et ta démarche actuelle sont tout deux correct ce qui n'était (à mon avis) pas le cas auparavant ^^

    Mais là, ce que tu as fais est compréhensible pour tous (je pense)
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  12. #12
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 94
    Par défaut
    hello !

    Je ne pensai pas que tout ça allais aller aussi loin !
    Pour mon pauvre niveau de php, il va falloir que je m'accroche.
    Je lis ça avec persévérance.

    Merci en tout cas !

Discussions similaires

  1. [Tableaux] Problème pour modifier des données
    Par Oli_Ifre dans le forum Langage
    Réponses: 8
    Dernier message: 11/04/2007, 15h33
  2. Réponses: 6
    Dernier message: 07/09/2006, 10h59
  3. Modifier des données dans une popup
    Par Sandara dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/06/2006, 13h00
  4. [MySQL] Modifier des données dans une base de donnée
    Par leloup84 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 26/01/2006, 09h56
  5. [VBA] Ajouter, modifier des données ou lecture seul
    Par Virgile59 dans le forum Access
    Réponses: 8
    Dernier message: 20/01/2006, 10h07

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