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 :

intégrer une chaine sql update dans PHP


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut intégrer une chaine sql update dans PHP
    Bonjour tout le monde,

    Ce code permet de sélectionner une table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $table = $_POST['select_Nom_Tables'];
    $_SESSION['LaTable'] = $table;
    Vue que c'est une variable $_SESSION, je peux l'utiliser partout dans le site pendant la session de l'utilisateur.

    Le code ci-dessous me permet d'afficher un tableau avec le nom des cellules et leur valeur :

    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
    29
    echo '<form action="MettreAJour.php?NbLignes='.mysql_num_rows($query).'" method="post" name="frmSaisie" id="frmSaisie">';
     
     
     
    echo '<tr>';
    for($i=0;$i<mysql_num_fields($query);$i++)
        {
        echo '<th>'.mysql_field_name($query,$i).'</th>';
        }
    echo '</tr>';
    while($row = mysql_fetch_array($query,MYSQL_ASSOC)) 
    {
    		#print_r($row);
    		$compteur+=1;
     
    		echo '<tr>';
    		foreach($row as $NomCol => $Valeur)
            {
    			//création d'un input visible pour montrer la valeur des champs et un input invisible pour retourner les valeurs
    			echo '<td> <textarea>'.$Valeur.'</textarea> <input name="'.$NomCol.$compteur.'" type="hidden" id="'.$NomCol.$compteur.'" value="'.$Valeur.'"/></td>';
     
     
    		}
    			echo '</tr>';
    }
    echo '<input type="submit" name="Submit" value="Mettre la table à jour" />' ; 
     
    echo '</p>
    </form>';
    J'utilise la valeur de la variable $_SESSION['LaTable'] pour essayer de mettre à jour une table avec les données récupérées par le form:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query(update $_SESSION['LaTable'].[$i] set $_POST['$NomCol'])
    Cela ne fonctionne pas.

    Sauriez-vous m'aider svp ?

    Cela est la dernière étape de ma page php

    Merci d'avance.

    beegees

  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
    UPDATE table SET colonne = valeur

    Sinon c'est quoi ce .[$i] dans $_SESSION['LaTable'].[$i] ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Citation Envoyé par sabotage Voir le message
    UPDATE table SET colonne = valeur

    Sinon c'est quoi ce .[$i] dans $_SESSION['LaTable'].[$i] ?
    Merci pour ta réponse.

    Voici le début de mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "UPDATE $_SESSION[LaTable] SET";
    ça, je suis pratiquement sûr que c'est correct

    Ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "UPDATE $_SESSION[LaTable] SET $_POST[$NomCol]";
    me donne ceci :

    UPDATE decisions
    donc il ne m'affiche pas de nom de colonne après le set

    Maintenant je me pose trois questions :

    1) Comment terminer cette chaine sql pour qu'elle devienne dynamique, c'est à dire qu'elle mette à jour les champs de la table que je lui ai indiqué dans $_SESSION[LaTable]

    2) Comment lui indiquer qu'elle doit mettre à jour l'enregistrement n°1 avec les données de la 1ère cellule, l'enregistrement 2 avec les données de l'enregistrement 2....
    3) vue que l'on récupère les données envoyées par formularie dans le script appelant, est-ce que variable = $_POST[$colonne] est nécessaire ?

    C'est à ça que sert le $1 (enfin, à quoi il devrait servir).

    à nouveau, je suis presque à la fin de cette importante page.

    Merci d'avance pour votre aide.

    beegees

  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
    Fiou c'est peut etre pas le code dont je serais le plus fier dans ma vie et je ne garantie pas que ca marche mais il est l'heure de dormir :

    En gros on recupere dans un tableau "new" la nouvelle valeur pour la colonne $NomCol et dans un tableau "old" la valeur actuelle (et oui pour faire l'update il faut bien pouvoir reperer quel enregistrement on modifie et on ne peut le faire que par ses anciennes valeurs puisque tu ne differencie pas un index).

    formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $nligne = 0;
    while($row = mysql_fetch_array($query,MYSQL_ASSOC)) 
    {
    echo '<tr>';
    foreach($row as $NomCol => $Valeur)
            {
               echo '<td> <textarea name="new[' . $ligne . '][' . $NomCol . ']" . $>'.$Valeur.'</textarea> <input name="old[' . $ligne . '][' . $NomCol . ']" type="hidden"  value="'.$Valeur.'"/></td>';	
    	}
    $nligne++;
    			echo '</tr>';
    }
    update
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    foreach ($_POST['new'] as $key=>$NomCol) {
          foreach ($_POST['new'][$key] as $NomCol=>$value) {
                 $sqlset[] = $NomCol . "=" . $value;
                 $sqlwhere[] = $Nomcol . '=' . $_POST['old'][$key][$NomCol]
            }
    $sql = 'UPDATE $_SESSION['LaTable'] SET ' . implode(",", $sqlset) . ' WHERE ' . implode(" AND ", $sqlwhere);
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Salut Sabotage,

    Sincèrement, merci pour le code que tu as écris pour moi, surtout à cette heure là

    Bon, je testé, il me semble qu'il y'a un petit problème.

    Le problème se pose lors de la mise à jour, j'obtiens à chaque fois ce message :

    Parse error: syntax error, unexpected '}' in C:\wamp\www\MettreAJour.php on line 39
    La ligne 39 correspond à :

    il dit donc que } n'est pas attendu, le problème doit venir de plus haut.

    Je me demandais si c'étais normal d'avoir "" et '' dans ces deux lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sqlset[] = $NomCol . "=" . $value;
                  $sqlwhere[] = $Nomcol . '=' . $_POST['old'][$key][$NomCol]
    Encore un tout grand à toi.

    beegees

  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
    Il manque un point-virgule a la fin de la ligne precedente.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Intégrer une commande SQL (complexe) dans une macro
    Par urbandot dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 14/11/2011, 10h50
  2. Mettre des guillemets dans une chaine SQL dans du VBA ?
    Par Marie_2116 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 05/07/2007, 10h43
  3. Réponses: 14
    Dernier message: 10/01/2007, 10h12
  4. Réponses: 3
    Dernier message: 20/05/2006, 23h28
  5. intégrer une base de donnée dans sql server
    Par gock dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 11/01/2006, 23h27

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