par
Dralex76 » 15 juin 2011, 10:22
Bonjour a tous les internautes. Voilà je galère un peu beaucoup depuis deux jours sur un problème de requête multiple. Je suis en train de créer une application qui permet d'effectuer des sauvegardes de disques durs. L'utilisateur choisit le disque, visualise le rapport qui lui dit ou ira le disque après sauvegarde puis il confirme et là la sauvegarde se fait. Seul problème, lorsque l'utilisateur choisit plusieurs disques, la sauvegarde s'effectue mais ils prennent tous les mêmes valeurs. (La sauvegarde distribue une localisation et un emplacement pour chaque disque) Je n'arrive pas à comprendre comment je suis censé faire.
$select = "SELECT CURDATE(),DateDernièreSauvegarde,IDdisque,Périodicité,EnvironnementTravail,TypeMachine,TypeRaid,Capacité,MarqueModèle,Nsérie,MachineAssocié,EmplacementActuel,ADDDATE(DateDernièreSauvegarde,INTERVAL 1 MONTH),MONTH(DateDernièreSauvegarde),TypeIntervention,Localisation,Mode,Remarque FROM importexcel where $choix = '$Donné' order by IDdisque ASC";
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);
while($row = mysql_fetch_assoc($result))
{
$temps = $row['ADDDATE(DateDernièreSauvegarde,INTERVAL 1 MONTH)'];
$mois = $row['MONTH(DateDernièreSauvegarde)'];
$jours = $row['Périodicité'];
if (empty($jours))
{
$futur= strftime("%Y-%m-%d", strtotime("+$30 DAY"));
}
else $futur= strftime("%Y-%m-%d", strtotime("+$jours DAY"));
$IDdisque = $row['IDdisque'];
$requete1 = "Update importexcel SET Localisation='En production', EmplacementActuel= 1, DateDernièreSauvegarde= CURDATE(), DateFuturSauvegarde= '$futur' where $choix = '$Donné' ";
$requete2 = "Update importexcel SET Localisation='En production', EmplacementActuel= 0, DateDernièreSauvegarde= CURDATE(), DateFuturSauvegarde= '$futur' where $choix = '$Donné' ";
$requete3 = "Update importexcel SET Localisation='Au Coffre', DateDernièreSauvegarde= CURDATE(), DateFuturSauvegarde= '$futur' where $choix = '$Donné' ";
$requete4 = "Update importexcel SET DateDernièreSauvegarde= CURDATE(), DateFuturSauvegarde= '$futur' where $choix = '$Donné' ";
$requete5 = "Update importexcel SET Localisation='Au Coffre', DateDernièreSauvegarde= CURDATE(), DateFuturSauvegarde= '$futur' where $choix = '$Donné' ";
$requete6 = "Update importexcel SET DateDernièreSauvegarde= CURDATE(), DateFuturSauvegarde= '$futur' where $choix = '$Donné' ";
echo ' Des changements seront à effectuer sur la machine '.$row['MachineAssocié'].' le '.$temps.'</br> Le disque numéro '.$row['IDdisque'].' devra ';
if($row["Localisation"]=="Au Coffre")
{
if ($row["EmplacementActuel"] == "0")
{
echo' être placé en production à l\'emplacement numéro 1 </br></br>';
echo '<input type="hidden" name="query1" value="'.$requete1.'" >';
}
}
if ($row["Localisation"]=="Au Coffre")
{
if($row["EmplacementActuel"] == "1")
{
echo ' être placé en production à l\emplacement numéro 0 </br></br>';
echo '<input type="hidden" name="query2" value="'.$requete2.'">';
}
}
if($row["Localisation"]=="En production")
{
if($mois%2==0)
{
if($row["IDdisque"]%2!= 0 )
{
echo ' être placé au coffre </br></br>';
echo '<input type="hidden" name="query3" value="'.$requete3.'" >';
}
else
{
echo ' rester à sa place </br></br>';
echo '<input type="hidden" name="query4" value="'.$requete4.' ">';
}
}
if($mois%2!=0)
{
if($row["IDdisque"]%2== 0 )
{
echo ' être placé au coffre </br></br>';
echo '<input type="hidden" name="query3" value="'.$requete5.'">';
}
else
{
echo ' rester à sa place </br></br>';
echo '<input type="hidden" name="query4" value="'.$requete5.'">';
}
}
}
echo '<input type="hidden" name="IDdisque" value="'.$IDdisque.'">';
}
echo'</br>';
echo '<input name="Sauvegarde" value="Valider & Imprimer" type="submit" onClick="window.print()">';
?>
Ceci est le code qui me permet de rédiger un rapport à l'utilisateursur les disques qu'il a choisit. Lorsqu'il appuie sur confirmer les valeurs sont alors envoyé sur la page suivante :
<?php
if (isset($_POST['query1'])) $query1 = $_POST['query1'];
if (isset($_POST['query2'])) $query2 = $_POST['query2'];
if (isset($_POST['query3'])) $query3 = $_POST['query3'];
if (isset($_POST['query4'])) $query4 = $_POST['query4'];
if (isset($_POST['query5'])) $query5 = $_POST['query5'];
if (isset($_POST['query6'])) $query6 = $_POST['query6'];
$IDdisque = $_POST['IDdisque'];
$host = "localhost";
$user = "root";
$pass = "";
$db = "badolafarge";
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); // Connection a la BADO
mysql_select_db($db) or die ('Erreur :'.mysql_error());
$query = "Select AlerteMail From importexcel where IDdisque='$IDdisque'";
$AlerteMail = Mysql_query($query);
if(empty($query1))
{
}
else mysql_query($query1)or die(mysql_error());
if(empty($query2))
{
}
else mysql_query($query2)or die(mysql_error());
if(empty($query3))
{
}
else mysql_query($query3)or die(mysql_error());
if(empty($query4))
{
}
else mysql_query($query4)or die(mysql_error());
if(empty($query5))
{
}
else mysql_query($query5)or die(mysql_error());
if(empty($query6))
{
}
else mysql_query($query6)or die(mysql_error());
if($AlerteMail=="oui")
{
mail('MonMaitre:D','Gestion des disques','La sauvegarde des disques à bien été effectué');
}
?>
Ici les valeurs sont récupérés et les requêtes sont efféctuées. Cependant si plusieurs disques avaient été séléctionnés alors ils reçoivent tous la même valeur. J'ai tenté de réaliser une boucle au moment de l'éxécution des reqêtes sans succès.
Mon problème n'est pas forcément évident à expliquer essayer d'être indulgent ^^.
Je remercie d'avance tout ceux qui prendront un peu de temps pour m'aider, je reste connecté pour répondre à toutes les questions possibles et imaginables

(sur mon post bien sur)
Bonjour a tous les internautes. Voilà je galère un peu beaucoup depuis deux jours sur un problème de requête multiple. Je suis en train de créer une application qui permet d'effectuer des sauvegardes de disques durs. L'utilisateur choisit le disque, visualise le rapport qui lui dit ou ira le disque après sauvegarde puis il confirme et là la sauvegarde se fait. Seul problème, lorsque l'utilisateur choisit plusieurs disques, la sauvegarde s'effectue mais ils prennent tous les mêmes valeurs. (La sauvegarde distribue une localisation et un emplacement pour chaque disque) Je n'arrive pas à comprendre comment je suis censé faire.
[php]$select = "SELECT CURDATE(),DateDernièreSauvegarde,IDdisque,Périodicité,EnvironnementTravail,TypeMachine,TypeRaid,Capacité,MarqueModèle,Nsérie,MachineAssocié,EmplacementActuel,ADDDATE(DateDernièreSauvegarde,INTERVAL 1 MONTH),MONTH(DateDernièreSauvegarde),TypeIntervention,Localisation,Mode,Remarque FROM importexcel where $choix = '$Donné' order by IDdisque ASC";
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);
while($row = mysql_fetch_assoc($result))
{
$temps = $row['ADDDATE(DateDernièreSauvegarde,INTERVAL 1 MONTH)'];
$mois = $row['MONTH(DateDernièreSauvegarde)'];
$jours = $row['Périodicité'];
if (empty($jours))
{
$futur= strftime("%Y-%m-%d", strtotime("+$30 DAY"));
}
else $futur= strftime("%Y-%m-%d", strtotime("+$jours DAY"));
$IDdisque = $row['IDdisque'];
$requete1 = "Update importexcel SET Localisation='En production', EmplacementActuel= 1, DateDernièreSauvegarde= CURDATE(), DateFuturSauvegarde= '$futur' where $choix = '$Donné' ";
$requete2 = "Update importexcel SET Localisation='En production', EmplacementActuel= 0, DateDernièreSauvegarde= CURDATE(), DateFuturSauvegarde= '$futur' where $choix = '$Donné' ";
$requete3 = "Update importexcel SET Localisation='Au Coffre', DateDernièreSauvegarde= CURDATE(), DateFuturSauvegarde= '$futur' where $choix = '$Donné' ";
$requete4 = "Update importexcel SET DateDernièreSauvegarde= CURDATE(), DateFuturSauvegarde= '$futur' where $choix = '$Donné' ";
$requete5 = "Update importexcel SET Localisation='Au Coffre', DateDernièreSauvegarde= CURDATE(), DateFuturSauvegarde= '$futur' where $choix = '$Donné' ";
$requete6 = "Update importexcel SET DateDernièreSauvegarde= CURDATE(), DateFuturSauvegarde= '$futur' where $choix = '$Donné' ";
echo ' Des changements seront à effectuer sur la machine '.$row['MachineAssocié'].' le '.$temps.'</br> Le disque numéro '.$row['IDdisque'].' devra ';
if($row["Localisation"]=="Au Coffre")
{
if ($row["EmplacementActuel"] == "0")
{
echo' être placé en production à l\'emplacement numéro 1 </br></br>';
echo '<input type="hidden" name="query1" value="'.$requete1.'" >';
}
}
if ($row["Localisation"]=="Au Coffre")
{
if($row["EmplacementActuel"] == "1")
{
echo ' être placé en production à l\emplacement numéro 0 </br></br>';
echo '<input type="hidden" name="query2" value="'.$requete2.'">';
}
}
if($row["Localisation"]=="En production")
{
if($mois%2==0)
{
if($row["IDdisque"]%2!= 0 )
{
echo ' être placé au coffre </br></br>';
echo '<input type="hidden" name="query3" value="'.$requete3.'" >';
}
else
{
echo ' rester à sa place </br></br>';
echo '<input type="hidden" name="query4" value="'.$requete4.' ">';
}
}
if($mois%2!=0)
{
if($row["IDdisque"]%2== 0 )
{
echo ' être placé au coffre </br></br>';
echo '<input type="hidden" name="query3" value="'.$requete5.'">';
}
else
{
echo ' rester à sa place </br></br>';
echo '<input type="hidden" name="query4" value="'.$requete5.'">';
}
}
}
echo '<input type="hidden" name="IDdisque" value="'.$IDdisque.'">';
}
echo'</br>';
echo '<input name="Sauvegarde" value="Valider & Imprimer" type="submit" onClick="window.print()">';
?>[/php]
Ceci est le code qui me permet de rédiger un rapport à l'utilisateursur les disques qu'il a choisit. Lorsqu'il appuie sur confirmer les valeurs sont alors envoyé sur la page suivante :
[php]<?php
if (isset($_POST['query1'])) $query1 = $_POST['query1'];
if (isset($_POST['query2'])) $query2 = $_POST['query2'];
if (isset($_POST['query3'])) $query3 = $_POST['query3'];
if (isset($_POST['query4'])) $query4 = $_POST['query4'];
if (isset($_POST['query5'])) $query5 = $_POST['query5'];
if (isset($_POST['query6'])) $query6 = $_POST['query6'];
$IDdisque = $_POST['IDdisque'];
$host = "localhost";
$user = "root";
$pass = "";
$db = "badolafarge";
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); // Connection a la BADO
mysql_select_db($db) or die ('Erreur :'.mysql_error());
$query = "Select AlerteMail From importexcel where IDdisque='$IDdisque'";
$AlerteMail = Mysql_query($query);
if(empty($query1))
{
}
else mysql_query($query1)or die(mysql_error());
if(empty($query2))
{
}
else mysql_query($query2)or die(mysql_error());
if(empty($query3))
{
}
else mysql_query($query3)or die(mysql_error());
if(empty($query4))
{
}
else mysql_query($query4)or die(mysql_error());
if(empty($query5))
{
}
else mysql_query($query5)or die(mysql_error());
if(empty($query6))
{
}
else mysql_query($query6)or die(mysql_error());
if($AlerteMail=="oui")
{
mail('MonMaitre:D','Gestion des disques','La sauvegarde des disques à bien été effectué');
}
?>[/php]
Ici les valeurs sont récupérés et les requêtes sont efféctuées. Cependant si plusieurs disques avaient été séléctionnés alors ils reçoivent tous la même valeur. J'ai tenté de réaliser une boucle au moment de l'éxécution des reqêtes sans succès.
Mon problème n'est pas forcément évident à expliquer essayer d'être indulgent ^^.
Je remercie d'avance tout ceux qui prendront un peu de temps pour m'aider, je reste connecté pour répondre à toutes les questions possibles et imaginables :D (sur mon post bien sur)