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 :

Mettre à jour plusieurs lignes d'une table


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    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 : 49
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut Mettre à jour plusieurs lignes d'une table
    Salut tout le monde,

    J'aimerais mettre à jour une table qui contient plusieurs lignes (+- 50).

    Pour cela, j'ai essayé de bricoler un script en ajoutant des zones invisibles, en passant un compteur à une variable passée dans un formulaire pour dire combien il y'a de lignes...

    Je vais commenter mon code :

    Le formulaire appelé par le bouton est MettreAJour.php, je lui passe une variable nommée "$Compteur".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<form action="MettreAJour.php?NbLignes=$Compteur" method="post" name="frmSaisie" id="frmSaisie">';
    Le premier problème, c'est qu'il ne passe pas un entier mais le mot $compteur.

    http://localhost/MettreAJour.php?NbLignes=$Compteur
    Je crée un tableau qui va être alimenté par les données de la table choisie dans une liste déroulante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo '<table border="1">';
    $query = mysql_query("SELECT * FROM .$_POST[select_Nom_Tables] LIMIT 20") or die (mysql_error());
    Je compte le nombre d'élément dans la table

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while($row = mysql_fetch_array($query,MYSQL_NUM))
        {
       		 $NbLignes +=1;
        }

    Je mets dans le nom de chaque colonne les nom des fields

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    echo '<tr>';
    for($i=0;$i<mysql_num_fields($query);$i++)
        {
        echo '<th>'.mysql_field_name($query,$i).'</th>';
        }
    echo '</tr>';

    J'affiche dans le tableau les données du tableau (ça ne fonctionne plus pour l'instant).

    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
    while($row = mysql_fetch_array($query,MYSQL_NUM))
        {
        echo '<tr>';
        foreach($row as $value)
            {
    		//si la table sélectionnée est "etudiants" alors on ajoute un champs invisible sur le matricule afin de pouvoir le mettre à jour vers la bd MYSQL.
    		switch ($_POST[select_Nom_Tables]) {
    case "etudiants":
    	echo '<td> <textarea>'.$value.'</textarea></td>';
        echo '<td> <textarea>'.$value.'</textarea><input name="txtMatricule".NbLignes type="hidden" id="txtMatricule".NbLignes  value=""</td>';
    	echo '<td> <textarea>'.$value.'</textarea></td>';
    	echo '<td> <textarea>'.$value.'</textarea><input name="txtNom".NbLignes type="hidden" id="txtNom".NbLignes  value=""</td>';
    	echo '<td> <textarea>'.$value.'</textarea></td>';
    	echo '<td> <textarea>'.$value.'</textarea><input name="txtPrenom".NbLignes type="hidden" id="txtPrenom".NbLignes  value=""</td>';
    	echo '<td> <textarea>'.$value.'</textarea></td>';
    	echo '<td> <textarea>'.$value.'</textarea><input name="txtDateDeNaissance".NbLignes type="hidden" id="txtDateDeNaissance".NbLignes  value=""</td>';
    	echo '<td> <textarea>'.$value.'</textarea></td>';
    	echo '<td> <textarea>'.$value.'</textarea><input name="txtEmail".NbLignes type="hidden" id="txtEmail".NbLignes  value=""</td>';
    	echo '<td> <textarea>'.$value.'</textarea></td>';
    	echo '<td> <textarea>'.$value.'</textarea><input name="txtPhoto".NbLignes type="hidden" id="txtPhoto".NbLignes  value=""</td>';
        break;
    	default:
    	echo '<td> <textarea>'.$value.'</textarea></td>';
            }
     
     
    }

    Si c'est la table "etudiants" qui est choisie, je crée des textarea de type invisible.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    echo '</tr>';
        }echo '</table>';
     
    echo '<input type="submit" name="Submit" value="Mettre la table à jour" />' ; 
    echo '</p></form>';
    Je ferme le tableau et le formulaire.

    Voici le code de mon fichier "MettreAJour.php" :

    Je récupère le compteur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Str_NbLignes=request.form("NbLignes");
    Avec une boucle for, j'essaie de mettre à jour ma table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    For i = 1 to NbLignes; 
         $Matricule = $_REQUEST["txtMatricule" & i];
    	 $Nom = $_REQUEST["txtNom" & i];
    	 $Prenom = $_REQUEST["txtPrenom" & i];
    	 $DateDeNaissance = $_REQUEST["txtDateDeNaissance" & i];
    	 $Email = $_REQUEST["txtEmail" & i];
    	 $Photo = $_REQUEST["txtPhoto" & i];
     
    txtSQL = "" ;
    txtSQL = "update [etudiants] set [Nom_Et] = '" & $Nom & "' where  [Matricule_Et] = '" & Matricule & "'" ;
    response.Write txtSQL;
    cnn.Execute (txtSQL) ;
     
    Next
    Bien sûr, cela ne fonctionne pas

    Sauriez-vous un peu y regarder s'il vous plait ?

    Il doit y avoir plusieurs erreurs.

    Si vous avez un script plus facile, n'hésitez pas.

    Je débute en PHP (à peine une semaine) et je trouve ce langage génial.

    Un super grand pour votre aide très précieuse.

    beegees

  2. #2
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 895
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 895
    Points : 16 358
    Points
    16 358
    Par défaut
    Citation Envoyé par beegees Voir le message
    Je débute en PHP (à peine une semaine) et je trouve ce langage génial.
    Alors essaie de lire les cours disponibles sur le site, là tu mélanges totalement les langages PHP et ASP.

    Citation Envoyé par beegees Voir le message
    Le formulaire appelé par le bouton est MettreAJour.php, je lui passe une variable nommée "$Compteur".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<form action="MettreAJour.php?NbLignes=$Compteur" method="post" name="frmSaisie" id="frmSaisie">';
    Le premier problème, c'est qu'il ne passe pas un entier mais le mot $compteur.
    Normal, tu lui passes une chaine de caractères.
    Concaténation.

  3. #3
    Membre éprouvé
    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 : 49
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour Bisûnûrs,

    Merci pour ta réponse.

    L'application que je suis en train de créer existait en asp 3 (je l'avais créée moi même).

    J'ai repris un bout de code pour le transformer en PHP.

    Je vais lire les tuto du site et éviter de passer une chaine de caractère.

    Je présûme que je dois utiliser les simples quotes pour cela ?

    Encore merci
    beegees

  4. #4
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 895
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 895
    Points : 16 358
    Points
    16 358
    Par défaut
    Ben comme l'indique le mot dans mon post précédent, il faut que tu concatènes, ce que tu fais en ASP avec &.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'du texte ' . $maVar . ' encore du texte';

  5. #5
    Membre éprouvé
    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 : 49
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par Bisûnûrs Voir le message
    Ben comme l'indique le mot dans mon post précédent, il faut que tu concatènes, ce que tu fais en ASP avec &.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'du texte ' . $maVar . ' encore du texte';
    Merci beaucoup Bisûnûrs,

    Voilà, j'ai changé mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<form action="MettreAJour.php?NbLignes="'.$compteur.'"method="post" name="frmSaisie" id="frmSaisie">';
    Autrement, l'idée est bonne pour la mise à jour de plusieurs lignes ?

    Encore un grand merci pour ton aide.

    beegees

  6. #6
    Membre éprouvé
    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 : 49
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour,

    Voilà, j'ai largement modifié mon code :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    <?php
     
    $compteur = 0;
     
     
    # script qui permet de créer des zones de texte à la volée et d'afficher le nom des champs de la table
    # variable qui contient le nom de ma base de données.
    $dbname = 'deliberations';
     
     
    $link = mysql_connect('localhost', 'root', 'mdp');
    	if(!$link)	  
    	 {
       		echo 'Impossible de se connecter à MySQL';
       		exit;
    	}
     
    	// Rendre la base de données deliberation, la base courante
    $db_selected = mysql_select_db($dbname, $link);
    if (!$db_selected) 
    	{
    	   die ('Impossible de sélectionner la base de données : ' . mysql_error());
    	}
     
    echo '<form action="MettreAJour.php?NbLignes='.$compteur.'" method="post" name="frmSaisie" id="frmSaisie">';
     
    echo '<table border="1">';
    $query = mysql_query("SELECT * FROM .$_POST[select_Nom_Tables] LIMIT 20") or die (mysql_error());
     
     
    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_NUM))
        {
    	$compteur+=1;
    	echo 'compteur -->'.$compteur;
        echo '<tr>';
        foreach($row as $value)
            {
     
    		echo '<td> <textarea>'.$value.'</textarea> <input name="'.mysql_field_name.$compteur.'" type="hidden" id="txtMatricule'.$compteur.'"value=""></td>';
     
     
     
    }
    echo '</tr>';
        }
    	echo '</table>';
     
    echo '<input type="submit" name="Submit" value="Mettre la table à jour" />' ; 
    echo '</p></form>';
     
     
    ?>
    et voici le code de la page "MettreAJour" :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <?php
     
     
    # script qui permet de créer des zones de texte à la volée et d'afficher le nom des champs de la table
    # variable qui contient le nom de ma base de données.
    $dbname = 'deliberations';
    $compteur = 0;
     
     
    $link = mysql_connect('localhost', 'root', 'mdp');
    	if(!$link)	  
    	 {
       		echo 'Impossible de se connecter à MySQL';
       		exit;
    	}
     
    	// Rendre la base de données deliberation, la base courante
    $db_selected = mysql_select_db($dbname, $link);
    if (!$db_selected) 
    	{
    	   die ('Impossible de sélectionner la base de données : ' . mysql_error());
    	}
     
    $NbLignes = $_GET["compteur"];
     
    for ($i = 0; $i < $NbLignes;$i++)
    { 
         $Matricule = $_REQUEST["txtMatricule".i];
    	 $Nom = $_REQUEST["txtNom".i];
    	 $Prenom = $_REQUEST["txtPrenom".i];
    	 $DateDeNaissance = $_REQUEST["txtDateDeNaissance".i];
    	 $Email = $_REQUEST["txtEmail".i];
    	 $Photo = $_REQUEST["txtPhoto".i];
     
     
     
    $txtSQL = "" ;
    $txtSQL = "update [etudiants] set [Nom_Et] = '".$Nom ."' where  [Matricule_Et] = '".$Matricule."'" ;
     
    }
     
    ?>
    Bon, ça ne fonctionne toujours pas mais ça bouge un peu.

    Le but serait de mettre à jour plusieurs lignes de la base de données mais ça ne fonctionne pas encore

    Merci pour l'aide.

    beegees

Discussions similaires

  1. [MySQL] mettre a jour les lignes d'une table sur place
    Par diengkals dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 18/07/2013, 14h44
  2. Mettre à jour plusieurs enregistrements d'une table
    Par eric41 dans le forum Langage
    Réponses: 2
    Dernier message: 26/11/2008, 16h33
  3. Réponses: 7
    Dernier message: 12/07/2006, 17h34
  4. Mettre a jour plusieurs lignes d'une table
    Par Tartenpion dans le forum Langage SQL
    Réponses: 4
    Dernier message: 17/12/2005, 18h50
  5. Procédure stockée - Retourner plusieurs ligne d'une table
    Par ronando dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 02/11/2005, 13h19

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