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 :

Update simultané de plusieurs enregistrements


Sujet :

PHP & Base de données

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 248
    Points : 231
    Points
    231
    Par défaut Update simultané de plusieurs enregistrements
    Bonjour,

    Je débute en PHP/MySQL et le projet sur lequel je travail nécessite de mettre à jour simultanément plusieurs enregistrements sachant que le nombre d'enregistrement n'est pas connu...

    Pour situer le projet, il s'agit de gérer les cuepoints d'un fichier FLV par le biais d'une interface Web et d'une base de donnée MySQL.

    J'ai déjà écrit le code suivant me permettant d'afficher tous les cuepoints disponibles. Les différents paramètres sont récupérés et doivent pouvoir être mis à jour... concrètement toutes les informations affichées doivent être mise à jour (même si certaines ne sont pas modifiées, ce qui parait le plus simple).

    Voici la fonction que j'ai créé pour afficher les cuepoints :

    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
    function liste_cuepoints() {
    	If ( isset($_GET['select']) ) $nom = $_GET['select'] ;
     
    	$result = mysql_query("SELECT * FROM liste WHERE nom = '$nom' ORDER BY timecode ASC ");
    	echo ' <p>Liste des cuepoints du fichier vidéo : <b>'.$nom.'</b></p>
    		<div align="center">
    		<form action="gestion_cuepoints()" method="post">
    		<input name="submit" type="submit" value="Valider" /><br />
    			<table class="liste">
    			<tr>
    				<th>Nom media</th><th> Timecode</th><th>Affichage</th><th>Transition</th>
    			</tr>';
    	while ( $row = mysql_fetch_array($result)) {
    	echo '<tr>
    			<td> 
     
    		<input name="media" type="text"  size="10" maxlength="8" value="'.$row[media].'" /> 
     
    			</td>
    			<td> <input name="timecode" type="text"  size="10" maxlength="8" value="'.$row[timecode].'" /> </td>
    			<td> 
    				<select name="affichage">
      					<option selected="selected">Choix</option>
      					<option value="c">Plein écran</option>
      					<option value="i">Fenetré</option>
     					<option value="l">Liste</option>
    				</select>
    			</td>
    			<td> 
    				<select name="transition">
      					<option selected="selected">Choix</option>
      					<option value="c">Fondu</option>
      					<option value="i">Arrivée droite</option>
     					<option value="l">Arrivée gauche</option>
    				</select>
    			</td>
    		</tr>';
    }
    echo '</table> 
    <div align="center"><input name="submit" type="submit" value="Valider" /></div>
    </form>
    </div>';
    mysql_close();
    }


    Mon problème est donc de créer la fonction "gestion_cuepoints()" qui doit mettre à jour tous les enregistrements simultanement sachant que je ne connais pas le nombre d'enregistrement au départ...

    Merci par avance de m'aider, j'ai tourné le problème dans tous les sens sans résultat...

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 314
    Points : 206
    Points
    206
    Par défaut
    Avant ton while, tu créés une variable $i=0.
    tu crées la requête de mise à jour que tu insères dans un tableau avec $i comme indice. Et pour finir tu incrémentes $i de 1.
    Après ton while tu n'auras plus qu'à faire une boucle for pour effectuer tous tes update.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $i=0
    while ( $row = mysql_fetch_array($result))
    {
       $tab[$i]="update...";
       $i++;
    }
     
    for($j=0;$j<$i;$j++)
    {
       mysql_query($tab[$j]);
    }
    Nulla dies sin linea

  3. #3
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Points : 658
    Points
    658
    Par défaut
    chtite question:
    quand tu dis "update simultané" c'est-à-dire vraiment en parrallèle ou faire une boucle comme te propose illegalsene?
    Le monde se divise en deux: ceux qui utilisent le tag et les autres.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 248
    Points : 231
    Points
    231
    Par défaut
    quand tu dis "update simultané" c'est-à-dire vraiment en parrallèle ou faire une boucle comme te propose illegalsene?
    c'est à dire que ma fonction affiche un tableau de n ligne, et je veux pouvoir modifier une ou plusieurs ligne, puis lorsque je clique sur valider, toutes les lignes sont mises à jour.

    Je dis toutes les lignes puisque ça évite de s'embêter à voir quelles lignes ont été modifiées....

  5. #5
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Points : 658
    Points
    658
    Par défaut
    yop Albedo0 ^^
    donc tu ne souhaite pas executer toutes tes requetes en même temps par MySQL?!
    Albedo0 à écrit:
    Je dis toutes les lignes puisque ça évite de s'embêter à voir quelles lignes ont été modifiées....
    >>
    Le monde se divise en deux: ceux qui utilisent le tag et les autres.

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 248
    Points : 231
    Points
    231
    Par défaut
    ben en réalité, après une après-midi de galère supplémentaire, on dirait que tu as raison, une boucle peut suffire, je n'ai pas besoin d'envoyer toutes les lignes d'un coup, mais l'une après l'autre (à condition que cela se fasse avant le rechargement de ma page...)

    Le problème est que je suis vraiment débutant et j'ai parfois un peu de mal à conceptualiser les choses...

    J'ai essayé le code proposé par illegalsene, mais je galère car ça ne marche pas, et je suis pourtant persuadé que je touche au but, c vraiment rageant !!

    Voila où j'en suis 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
    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
    59
    60
    61
    62
    63
    64
    // Tri par nom des cuepoints en fonction du choix du FLV ----------------------
    function liste_cuepoints() {
    	If ( isset($_GET['select']) ) $nom = $_GET['select'] ;
     
    	$result = mysql_query("SELECT * FROM liste WHERE nom = '$nom' ORDER BY timecode ASC ");
    	echo ' <p>Liste des cuepoints du fichier vid&eacute;o : <b>'.$nom.'</b></p>
    		<div align="center">
    		<form action="'.gestion_cuepoints().'" method="get">
    		<input name="submit" type="submit" value="Valider" /><br />
    			<table class="liste">
    			<tr>
    				<th>Nom media</th><th> Timecode</th><th>Affichage</th><th>Transition</th>
    			</tr>';
    	global $i;
    	$i=0;
    	while ( $row = mysql_fetch_array($result)) {
    	echo '<tr>
    			<td> 
     
    		<input name="'.$row[media].'" type="text"  size="10" maxlength="8" value="'.$row[media].'" /> 
     
    			</td>
    			<td> <input name="'.$row[timecode].'" type="text"  size="10" maxlength="8" value="'.$row[timecode].'" /> </td>
    			<td> 
    				<select name="affichage">
      					<option selected="selected">Choix</option>
      					<option value="c">Plein &eacute;cran</option>
      					<option value="i">Fenetr&eacute;</option>
     					<option value="l">Liste</option>
    				</select>
    			</td>
    			<td> 
    				<select name="transition">
      					<option selected="selected">Choix</option>
      					<option value="c">Fondu</option>
      					<option value="i">Arriv&eacute;e droite</option>
     					<option value="l">Arriv&eacute;e gauche</option>
    				</select>
    			</td>
    		</tr>
    		<input name="'.$row[id].'" type="hidden" value="'.$row[id].'" />';
    		global $tab;
    		$tab[$i]="UPDATE liste SET media='$media', timecode='$timecode' WHERE id='$id'";
       		$i++;
    }
    echo '</table> 
    <div align="center"><input name="submit" type="submit" value="Valider" /></div>
    </form>
    </div>';
    echo $i;
    mysql_close();
    }
     
    //Gestion des ajout/update cuepoints ---------------------------------------------
     
    function gestion_cuepoints()
    {	
    	for($j=0;$j<$i;$j++)
    	{
     
    	echo $tab[$j];
       		mysql_query($tab[$j]);
    	}
    }

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 314
    Points : 206
    Points
    206
    Par défaut
    Ca ne marche pas = ça te renvoie un message d'erreur ? Ca n'affiche rien ?

    Essaies d'afficher la valeur de $i lorsque tu sors de ta première fonction. Si elle est égale à 0 c'est que ton select ne retourne pas de valeur.
    Nulla dies sin linea

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 248
    Points : 231
    Points
    231
    Par défaut
    Non, je n'ai aucune erreur... mais aucune modification ne s'effectue dans ma base de donnée.

    J'ai déjà essayé de mettre un echo $i; à la fin de ma fonction de listage (function liste_cuepoints())des enregistrements et ça s'affiche sans problème et j'ai bien un chiffre correspondant au nombre d'enregistrement...

    J'ai l'impression cependant que ma variable n'est pas récupérée par la fonction function gestion_cuepoints(), j'ai essayé de l'utiliser sans succès...

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 248
    Points : 231
    Points
    231
    Par défaut
    S'il vous plaît, personne pour m'orienter vers la solution ??

    je patauge réellement...

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 496
    Points : 585
    Points
    585
    Par défaut
    Salut,

    dans ta fonction gestion_cuepoints() tu fais un echo de tes requêtes. Est-ce qu'elles semblent correctes?

Discussions similaires

  1. [MySQL] Update sql sur plusieurs enregistrements
    Par selimdjaf dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 09/04/2013, 14h51
  2. Réponses: 3
    Dernier message: 24/04/2007, 15h44
  3. insérer plusieurs enregistrements simultanément
    Par Sheriff dans le forum Administration
    Réponses: 6
    Dernier message: 06/12/2006, 16h05
  4. Update plusieurs enregistrements en 1 seule fois
    Par zonekris dans le forum Requêtes
    Réponses: 3
    Dernier message: 18/09/2006, 19h48
  5. update simultané de plusieur lignes dans table
    Par jarod_bx dans le forum Access
    Réponses: 2
    Dernier message: 22/12/2005, 22h13

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