no_avatar
  • Nous sommes le : 11 mars 2010, 12:41:58
  • Bienvenue, Invité
Merci de vous connecter ou de vous inscrire.

Connexion avec identifiant, mot de passe et durée de la session
Information :
Nouveau dans le coin ? pourquoi ne pas passer par ce forum lool
Pages: [1]   En bas
Répondre

Options Du Sujet + Auteur Sujet: Ajout multiple de donnée en php  (Lu 297 fois)

0 Membres et 1 Invité sur ce sujet

Taaazzz

  • Hors ligne Hors ligne
  • Habitué
  • **

  • Member Nº: 18978
  • Messages: 386
    • WWW
Ajout multiple de donnée en php
« le: 05 septembre 2009, 13:29:26 »
Bonjour à tous, voila pour un de mes sites de jeu j'ai créé un formulaire pour rentrer les infos de nos villages dans notre bdd, le truc est que je rentre les données de village par village et moi j'aimerai en faite modifier tous les villages en une fois car plus le jeu avance et plus nous avons de villages donc les faire un a un fini par prendre énormément de temps.


Sauriez vous m'indiquer la démarche à suivre pour que tout soit rentrer en une fois dans ma bdd?

(j'ai déjà su le faire, mais j'ai oublié comment le faire alors que je me rappel que c'etait tout con :p )



Voici mon script formulaire (Modif_troupes.php)

<?php
// Lancement d'une session
session_start();

include('header.php'); 


if ($_SESSION["Account"] != "")
{
require_once(dirname(__FILE__) ."./includes/fonctions.php");


$IdJoueur $_SESSION['Account'];
?>

<font color='#000000' size='4'><b><u>Édition des troupes de : </font><font color='Green' size='4'><?php echo $IdJoueur ?></b></font> !</u>

<?php
if (
$IdJoueur $_SESSION['Account']) {

?>

<br /><br />
<tr align="center" bgcolor="#F0F0F0">
<b><font color="red" size='4'>Attention </b><br />N'ajoutez et ne modifiez pas des troupes que vous ne deviez pas modifiez<br /> pour ne pas risquez de retirer ou ajouter des troupes sur votre compte et faussez les résultats !!!<br /></font>
</tr>
<br /><br />
<table width="70%" border="1" cellpadding="5" cellspacing="0" align="center">
<thead>
<tr width="80%" align="center">
<th valign="top"><center><b>Nom du Village</b></center></th>
<th valign="top"><center><b>Lancier</b></center></th>
<th valign="top"><center><b>Porteur d'épée</b></center></th>
<th valign="top"><center><b>Guerrier à la hache</b></center></th>
<th valign="top"><center><b>Archer</b></center></th>
<th valign="top"><center><b>Éclaireur</b></center></th>
<th valign="top"><center><b>Cavalerie légère</b></center></th>
<th valign="top"><center><b>Archer monté</b></center></th>
<th valign="top"><center><b>Cavalerie lourde</b></center></th>
<th valign="top"><center><b>Bélier</b></center></th>
<th valign="top"><center><b>Catapulte</b></center></th>
<th valign="top"></th>
</tr>
</thead>
<?php
connect(DB_GT);
$req mysql_query("SELECT * FROM village WHERE IdJoueur='" $_SESSION['Account'] . "' ORDER BY IdVillage");
$res mysql_num_rows($req);
$i=0;
while ($i != $res) {
$Id mysql_result($req,$i,"Id");
$IdJoueur mysql_result($req,$i,"IdJoueur");
$IdVillage mysql_result($req,$i,"IdVillage");
$VillageNom mysql_result($req,$i,"VillageNom");
$Lancier mysql_result($req,$i,"Lancier");
$Epee mysql_result($req,$i,"Epee");
$Hache mysql_result($req,$i,"Hache");
$Archer mysql_result($req,$i,"Archer");
$Eclaireur mysql_result($req,$i,"Eclaireur");
$CavalerieLeger mysql_result($req,$i,"CavalerieLeger");
$ArcherMonter mysql_result($req,$i,"ArcherMonter");
$CavalerieLourde mysql_result($req,$i,"CavalerieLourde");
$Belier mysql_result($req,$i,"Belier");
$Catapulte mysql_result($req,$i,"Catapulte");
$i++;
// Tableau avec le recenssement des comptes, personnages et de leur titre respectif
echo "
<form method='post' action='Modif_troupes2.php'>
<tr align='center'> 
<input type='hidden' name='IdVillage' value='$IdVillage' maxlength='30' size='26'>
<td bordercolordark='white' bordercolorlight='black' ><font face='Tahoma' size='1'><input type='text' name='VillageNom' value='$VillageNom' maxlength='30' size='26'></td>
<td bordercolordark='white' bordercolorlight='black' ><img src='images/aide/uniter/unit_spear.png' alt='Lancier' title='Lancier' /><font face='Tahoma' size='1'><input type='text' name='Lancier' value='$Lancier' maxlength='5' size='5'></td>
<td bordercolordark='white' bordercolorlight='black' ><img src='images/aide/uniter/unit_sword.png' alt='épéiste' title='épéiste' /><font face='Tahoma' size='1'><input type='text' name='Epee' value='$Epee' maxlength='5' size='5'></td>
<td bordercolordark='white' bordercolorlight='black' ><img src='images/aide/uniter/unit_axe.png' alt='Guerrier à  la hache' title='Guerrier à  la hache' /><font face='Tahoma' size='1'><input type='text' name='Hache' value='$Hache' maxlength='5' size='5'></td>
<td bordercolordark='white' bordercolorlight='black' ><img src='images/aide/uniter/unit_archer.png' alt='Archer' title='Archer' /><font face='Tahoma' size='1'><input type='text' name='Archer' value='$Archer' maxlength='5' size='5'></td>
<td bordercolordark='white' bordercolorlight='black' ><img src='images/aide/uniter/unit_spy.png' alt='Eclaireur' title='Eclaireur' /><font face='Tahoma' size='1'><input type='text' name='Eclaireur' value='$Eclaireur' maxlength='5' size='5'></td>
<td bordercolordark='white' bordercolorlight='black' ><img src='images/aide/uniter/unit_light.png' alt='Cavalerie légère' title='Cavalerie légère' /><font face='Tahoma' size='1'><input type='text' name='CavalerieLeger' value='$CavalerieLeger' maxlength='5' size='5'></td>
<td bordercolordark='white' bordercolorlight='black' ><img src='images/aide/uniter/unit_marcher.png' alt='Archer monté' title='Archer monté' /><font face='Tahoma' size='1'><input type='text' name='ArcherMonter' value='$ArcherMonter' maxlength='5' size='5'></td>
<td bordercolordark='white' bordercolorlight='black' ><img src='images/aide/uniter/unit_heavy.png' alt='Cavalerie lourde' title='Cavalerie lourde' /><font face='Tahoma' size='1'><input type='text' name='CavalerieLourde' value='$CavalerieLourde' maxlength='5' size='5'></td>
<td bordercolordark='white' bordercolorlight='black' ><img src='images/aide/uniter/unit_ram.png' alt='Bélier' title='Bélier' /><font face='Tahoma' size='1'><input type='text' name='Belier' value='$Belier' maxlength='5' size='5'></td>
<td bordercolordark='white' bordercolorlight='black' ><img src='images/aide/uniter/unit_catapult.png' alt='Catapulte' title='Catapulte' /><font face='Tahoma' size='1'><input type='text' name='Catapulte' value='$Catapulte' maxlength='5' size='5'></td>

<td bordercolordark='white' bordercolorlight='black' ><font face='Tahoma' size='1'>
<input type='submit' value='Modifier'>
</td>
</tr>
</form>
"
;
}
?>

</table>
<br />
<?php
mysql_close
(); // fermeture de la connexion
}
else{
echo "
<br /><br /><br /><br />
<font color='red'>
Vous ne pouvez pas éditer les troupes d'un autre compte que le votre !!!
</font>
"
;
}

}
else { 
echo '<br /><br /><br /><br /><p style="color:#FF0000; font-weight:bold;">Vous êtes actuellement déconnecter.<br /><br />
Voulez-vous vous <a href="connection.php?action=logout" title="Connexion">connecter</a> ?</p>'
;
}
?>


</center>
<?php 
include(
'footer.php'); 
include('copyright.php');
?>




et maintenant, voici le script d'exécution du formulaire.


<?php
// Lancement d'une session
session_start();

include('header.php'); 

if ($_SESSION["Account"] != "")
{
require_once(dirname(__FILE__) ."./includes/fonctions.php");


$IdJoueur $_SESSION['Account'];

$IdVillage addslashes(htmlspecialchars($_POST['IdVillage']));
$VillageNom addslashes(htmlspecialchars($_POST['VillageNom']));
$Lancier addslashes(htmlspecialchars($_POST['Lancier']));
$Epee addslashes(htmlspecialchars($_POST['Epee']));
$Hache addslashes(htmlspecialchars($_POST['Hache']));
$Archer addslashes(htmlspecialchars($_POST['Archer']));
$Eclaireur addslashes(htmlspecialchars($_POST['Eclaireur']));
$CavalerieLeger addslashes(htmlspecialchars($_POST['CavalerieLeger']));
$ArcherMonter addslashes(htmlspecialchars($_POST['ArcherMonter']));
$CavalerieLourde addslashes(htmlspecialchars($_POST['CavalerieLourde']));
$Belier addslashes(htmlspecialchars($_POST['Belier']));
$Catapulte addslashes(htmlspecialchars($_POST['Catapulte']));
?>


<font color="#000"><b><u>Troupes de : <font color='Green'><?php echo $IdJoueur ?></font> !</u></b></font>
<?php
if($IdJoueur $_SESSION['Account']) 
{
connect(DB_GT); //connexion à la bdd
$sql="UPDATE village SET VillageNom='$VillageNom', Lancier='$Lancier', Epee='$Epee', Hache='$Hache', Archer='$Archer', Eclaireur='$Eclaireur', CavalerieLeger='$CavalerieLeger', ArcherMonter='$ArcherMonter', CavalerieLourde='$CavalerieLourde', Belier='$Belier', Catapulte='$Catapulte' WHERE IdVillage='$IdVillage' AND IdJoueur='$IdJoueur'"//mise à jour des infos des troupes dans la bdd
$req=mysql_query($sql) or die(mysql_error());
$numberDeLigneEditer mysql_affected_rows();
mysql_close(); // fermeture de la connexion
echo "
<center>
"
;
if ($numberDeLigneEditer == 0
{
echo "
<BR /><BR /><BR /><BR /><BR /><BR />
<font color='red'>
Les troupes n'ont pas été édité du compte de : <font color='#0707BD'>$IdJoueur </font> sur le village <font color='#0707BD'>$VillageNom </font>!!!</font>
<BR /><BR /><BR /><BR /><BR />
<font color='#0707BD'>Cette page ce rafraichira dans 5 secondes</font>
<BR />
<META HTTP-EQUIV='Refresh' CONTENT='5; URL=Modif_troupes.php'>
"
;
} else 
{
echo "
<BR /><BR /><BR /><BR /><BR /><BR />
<center><b><u>Modification du village :<font color='#0707BD'>$VillageNom</font></u></b></center><BR /><BR />
<font color='green'><b>
Vous avez édité les troupes : <font color='#0707BD'>Lancier</font> pour une quantité de : <font color='#0707BD'>$Lancier</font> avec succès !!! <BR />
Vous avez édité les troupes : <font color='#0707BD'>Porteur d'épée</font> pour une quantité de : <font color='#0707BD'>$Epee</font> avec succès !!! <BR />
Vous avez édité les troupes : <font color='#0707BD'>Guerrier à la hache</font> pour une quantité de : <font color='#0707BD'>$Hache</font> avec succès !!! <BR />
Vous avez édité les troupes : <font color='#0707BD'>Archer</font> pour une quantité de : <font color='#0707BD'>$Archer</font> avec succès !!! <BR />
Vous avez édité les troupes : <font color='#0707BD'>Éclaireur</font> pour une quantité de : <font color='#0707BD'>$Eclaireur</font> avec succès !!! <BR />
Vous avez édité les troupes : <font color='#0707BD'>Cavalerie légère</font> pour une quantité de : <font color='#0707BD'>$CavalerieLeger</font> avec succès !!! <BR />
Vous avez édité les troupes : <font color='#0707BD'>Archer monté</font> pour une quantité de : <font color='#0707BD'>$ArcherMonter</font> avec succès !!! <BR />
Vous avez édité les troupes : <font color='#0707BD'>Cavalerie lourde</font> pour une quantité de : <font color='#0707BD'>$CavalerieLourde</font> avec succès !!! <BR />
Vous avez édité les troupes : <font color='#0707BD'>Bélier</font> pour une quantité de : <font color='#0707BD'>$Belier</font> avec succès !!! <BR />
Vous avez édité les troupes : <font color='#0707BD'>Catapulte</font> pour une quantité de : <font color='#0707BD'>$Catapulte</font> avec succès !!! 
</b></font>
<BR /><BR /><BR /><BR /><BR />
<font color='#0707BD'>Cette page ce rafraichira dans 3 secondes</font>
<BR />
<META HTTP-EQUIV='Refresh' CONTENT='3; URL=Modif_troupes.php'>
<BR /><BR />
<span style='position: fixed; top: 568px; left: 1480px; width: 198px; height: 309px'>
<img style='border:none' src='images/ritter1.gif' />
</span>
<span style='position: fixed; top: 490px; left: 10px; width: 198px; height: 309px'>
<img style='border:none' src='images/bg-paladin.gif' />
</span>
"
;
}

}
else
echo "
<BR /><BR /><BR /><BR /><BR /><BR /><BR /><BR />
<font color='red'>
Vous ne pouvez pas éditer les troupes d'un autre compte que le votre !!!
</font>
<BR /><BR /><BR /><BR /><BR /><BR /><BR /><BR />
<span style='position: fixed; top: 568px; left: 1480px; width: 198px; height: 309px'>
<img style='border:none' src='images/ritter1.gif' />
</span>
<span style='position: fixed; top: 490px; left: 10px; width: 198px; height: 309px'>
<img style='border:none' src='images/bg-paladin.gif' />
</span>
"
;

}
else { 
echo '<br /><br /><br /><br /><p style="color:#FF0000; font-weight:bold;">Vous êtes actuellement déconnecter.<br /><br />
Voulez-vous vous <a href="connection.php?action=logout" title="Connexion">connecter</a> ?</p>'
;
}
?>


</center>
<?php include('footer.php'); ?>





Merci pour votre aide.











IP archivée

Ghaldur

  • Modérateur Général
  • Hors ligne Hors ligne
  • *****

  • Sexe: Homme
  • Member Nº: 1983
  • Messages: 780
    • WWW
Re : Ajout multiple de donnée en php
« Réponse #1 le: 05 septembre 2009, 16:36:35 »
Une méthode simple mais pas forcément légère niveau utilisation de ressources du serveur, tu peux faire une boucle avec ça dedans :
$sql="UPDATE village SET VillageNom='$VillageNom', Lancier='$Lancier', Epee='$Epee', Hache='$Hache', Archer='$Archer', Eclaireur='$Eclaireur', CavalerieLeger='$CavalerieLeger', ArcherMonter='$ArcherMonter', CavalerieLourde='$CavalerieLourde', Belier='$Belier', Catapulte='$Catapulte' WHERE IdVillage='$IdVillage' AND IdJoueur='$IdJoueur'"; //mise à jour des infos des troupes dans la bdd
$req=mysql_query($sql) or die(mysql_error());

Ainsi tu ferais des requêtes à la chaîne... Bon c'est pas super léger.

Sinon à mon avis tu dois pouvoir "souder" tout ça dans une seule requête SQL, mais ça fait trop longtemps que j'ai pas codé il faudrait regarder dans la doc du SQL sur internet pour faire plusieurs requêtes en une. Je me souviens qu'il faut jouer avec un terme SQL spécial et avec tes requêtes que tu imbriques dans des parenthèses.

Je vais regarder dans mes codes pour voir si je retrouve, si je retrouve je te mettrai un exemple.


EDIT :
J'ai trouvé, il faut utiliser le mot clé UNION. Un exemple :

<?php
$sql 
"(SELECT `id_page` FROM `pages` WHERE `affichage` = 1)UNION(SELECT `id_page`FROM `pages` WHERE `affichage` = '$etat')";
?>

Le schéma est le suivant :
$sql = "(requête_1)UNION(requête_2)";
et après tu exécutes ta requête avec la fonction appropriée ^^.

Si tu veux faire un nombre indéfini de requêtes, suffit de faire une boucle genre :

<?php
$i 
1;
$sql "(requête_1)";
if(
$nombre_requetes 1)//c-à-d si on doit imbriquer plusieurs requêtes
{
while(
$i $nombre_requetes)
{
$sql .= "UNION(requête_x)";
$i++;
}
}
?>










IP archivée

« Dernière modification: 05 septembre 2009, 17:22:02 par Ghaldur »
i7 920 @3.34Ghz - 3Go DDR3 OCZ PC10666 - ASUS Rampage II Gene - XFX GTS 250 - Xigmatek Thor's Hammer - Corsair TX 850W - (bientôt) Cooler Master HAF 932

Taaazzz

  • Hors ligne Hors ligne
  • Habitué
  • **

  • Member Nº: 18978
  • Messages: 386
    • WWW
Re : Ajout multiple de donnée en php
« Réponse #2 le: 05 septembre 2009, 22:12:26 »
Est-ce que simplement modifier mon form dans ma page formulaire ne suffira pas avec ma requête actuelle?

car actuellement mon form ce met sur chaque village mais en le modifiant il engloberai tous les villages donc ma requête pourrait être bonne non?

Merci de cet réponse rapide :)










IP archivée

« Dernière modification: 05 septembre 2009, 22:15:31 par Taaazzz »

Ghaldur

  • Modérateur Général
  • Hors ligne Hors ligne
  • *****

  • Sexe: Homme
  • Member Nº: 1983
  • Messages: 780
    • WWW
Re : Ajout multiple de donnée en php
« Réponse #3 le: 05 septembre 2009, 22:31:11 »
Alors je comprends pas ce que tu veux, donne un exemple concret de l'effet du script actuellement et un exemple de ce que tu voudrais qu'il fasse.










IP archivée

i7 920 @3.34Ghz - 3Go DDR3 OCZ PC10666 - ASUS Rampage II Gene - XFX GTS 250 - Xigmatek Thor's Hammer - Corsair TX 850W - (bientôt) Cooler Master HAF 932

Taaazzz

  • Hors ligne Hors ligne
  • Habitué
  • **

  • Member Nº: 18978
  • Messages: 386
    • WWW
Re : Ajout multiple de donnée en php
« Réponse #4 le: 06 septembre 2009, 12:49:04 »
Donc pour l'instant ma page d'édition ressemble à ceci




moi j'aimerai juste modifier mon code pour que les bouton modifier de chaque ligne soit remplacer par un unique bouton modifier qui modifiera tous les villages en une fois au lieu d'un a un.










IP archivée

Ghaldur

  • Modérateur Général
  • Hors ligne Hors ligne
  • *****

  • Sexe: Homme
  • Member Nº: 1983
  • Messages: 780
    • WWW
Re : Ajout multiple de donnée en php
« Réponse #5 le: 06 septembre 2009, 13:24:59 »
ben déjà, au lieu d'ouvrir 56 formulaires pour tes 56 villages, t'ouvres UN formulaire pour TOUS tes villages.

Ensuite, tu utilises ta boucle while (dans ton premier fichier où se trouve le formulaire) pour créer un array dans lequel tu auras toutes tes données pour TOUS les villages. Pour ça tu as 2 solutions (à toi de choisir celle qui te sera la plus favorable).
Soit tu fais un array pour chaque village, soit tu fais un array par corps de métier (c'est-à-dire un array pour lancier, un array pour porteur d'épée et ainsi de suite).
1er cas, tes arrays seront présentés sous la forme suivante :
<?php
$village
[$i] = array("lancier""porteur_epee""guerrier_hache", ..., "catapulte");
?>
Dans lequel tu mettras tes données ainsi :
<?php
$village
[$i]['lancier'] = mysql_result($req,$i,"Lancier");
?>
et ainsi de suite pour chaque info sur chaque village.

2e cas, tes arrays (un pour chaque information) contiendront pour chacun le même type d'information mais pour tous les villages. Exemple :
<?php
$lancier 
= array();
$porteur_epee = array();
...
?>
dans lequel tu mettras tes données ainsi :
<?php
$lancier
[$i] = mysql_result($req,$i,"Lancier");
$porteur_epee[$i] = mysql_result($req,$i,"Epee");
?>

Ca c'est pour l'affichage des données dans ton tableau. La structure globale de ta page devra ressembler à ça :
[html de début de tableau]
[début form]
<boucle php>
[fin form avec le submit]
[html de fin de tableau]

Ensuite, tu devras faire comme je t'ai dit, soit une boucle de soumission de requêtes SQL, soit un boucle qui fera une seule union de plusieurs requêtes en une. (reviens à mes posts précédents si nécessaire)










IP archivée

i7 920 @3.34Ghz - 3Go DDR3 OCZ PC10666 - ASUS Rampage II Gene - XFX GTS 250 - Xigmatek Thor's Hammer - Corsair TX 850W - (bientôt) Cooler Master HAF 932

Taaazzz

  • Hors ligne Hors ligne
  • Habitué
  • **

  • Member Nº: 18978
  • Messages: 386
    • WWW
Re : Ajout multiple de donnée en php
« Réponse #6 le: 06 septembre 2009, 14:59:13 »
ben déjà, au lieu d'ouvrir 56 formulaires pour tes 56 villages, t'ouvres UN formulaire pour TOUS tes villages.

Je n'ai qu'UN script de formulaire et UN seul script pour l'édition postez ici au dessus, je vois pas pourquoi tu penses que j'en ai plus :p


Pour tes explication, je vais tester et trouver alors le bon compromis pour mon form :)

merci de tes réponses :)










IP archivée

Ghaldur

  • Modérateur Général
  • Hors ligne Hors ligne
  • *****

  • Sexe: Homme
  • Member Nº: 1983
  • Messages: 780
    • WWW
Re : Ajout multiple de donnée en php
« Réponse #7 le: 06 septembre 2009, 17:28:55 »
t'as pas lu ce que je t'ai écrit, j'ai pas dit "au lieu d'ouvrir 56 fichiers de formulaires" j'ai dit "au lieu d'ouvrir 56 formulaires", ce qui veut dire qu'à partir du moment où tu as une boucle while sous cette forme :
<?php
while($i<$variable)
{
...
echo 
'<form>...</form>';
...
}
?>

Tu as autant de formulaires générés que d'itérations de ta boucle, donc tu as $i formulaires (dans un seul document)...










IP archivée

i7 920 @3.34Ghz - 3Go DDR3 OCZ PC10666 - ASUS Rampage II Gene - XFX GTS 250 - Xigmatek Thor's Hammer - Corsair TX 850W - (bientôt) Cooler Master HAF 932

Taaazzz

  • Hors ligne Hors ligne
  • Habitué
  • **

  • Member Nº: 18978
  • Messages: 386
    • WWW
Re : Ajout multiple de donnée en php
« Réponse #8 le: 06 septembre 2009, 18:51:57 »
aaahhh oki maintenant je comprend mieux ce que tu voulais dire :p










IP archivée

Am'

  • Administrateur
  • Hors ligne Hors ligne
  • *****

  • Sexe: Homme
  • Member Nº: 2
  • Messages: 1.372
  • L'alpha & L'Omega
    • WWW
Re : Ajout multiple de donnée en php
« Réponse #9 le: 08 septembre 2009, 11:07:38 »
t'as eu ce que tu voulais ou pas ?

si tu veux et selon mon temps libre je peux te donner le code complet à mettre :p










IP archivée

Et qu'avez vous à ne pas combattre dans le sentier d'Allah, et pour la cause des faibles: hommes, femmes et enfants qui disent: ‹Seigneur! Fais-nous sortir de cette cité dont les gens sont injustes, et assigne-nous de Ta part un allié, et assigne-nous de Ta part un secoureur›. (Sourate an-Nisa, 75)

Statut : Occupé

Taaazzz

  • Hors ligne Hors ligne
  • Habitué
  • **

  • Member Nº: 18978
  • Messages: 386
    • WWW
Re : Ajout multiple de donnée en php
« Réponse #10 le: 03 octobre 2009, 12:38:53 »
Bonjour

désolé de ma réponse tardive mais j'étais hospitalisé donc dans l'impossibilité de venir plus tôt.

En faite non je n'ai absolument pas ce que je veux, d'ailleurs j'ai même pas réussi à faire ce qu'il m'a dit de faire... j'ai pas envie de modifier tout mon code, je sais que dans le mien je peux réussir à le faire en modifiant uniquement mon form et ma requête sur l'autre script...

Donc effectivement si ta un peu de temps, je veux bien qu'ensemble nous le fassions :p











IP archivée

Pages: [1]   En haut