Gros soucis apparemment mineurs avec base de données
Posté : 04 sept. 2010, 12:23
Bonjour je suis nouveau sur le forum.
Je suis en train de faire un intranet, et il est pas mal avancé. Je suis en train de galérer parce que le programme ne fait pas ce que je lui demande...! Je m'explique. J'ai une table qui contient tous les deniers dossier créés. Je ne veux pas qu'il y ait plus de 100 entrées (ici 5 pour simplifier). Du coup au moment d'enregistrer un nouveau dossier, si c'est le 100ème, je supprime le premier de la liste et je décale tout, parce que les dossiers récents sont insérés à la fin de la table. Je procède de la façon suivante :
1. Copie de table DossiersRecents vers une table Temporaire
2. Boucle for qui fait des update pour chaque ligne : elle copie la ligne 2 de Temporaire vers la ligne 1 de DossiersRecents, etc... on a donc bien décalé
3. Je supprime la dernière ligne de DossiersRecents
4. Je supprime la table Temporaire
5. Je peux enregistrer la nouvelle entrée
Seulement voilà... j'ai des soucis.
1. La table ne veut pas se créer, pourtant quand je copie la partie du code qui la créé dans un autre programme php, ça le fait
2. Admettons que la table existe déjà (je la créé sous phpmyadmin), il refuse de copier les lignes de Temp vers Dossiers Recents, rien ne se fait
Bref je ne comprends pas, pouvez-vous m'aider ?
Je copie ci-dessous la partie de code que j'ai extraite dans un programme indépendant, l'algorithme de décalage.
Je suis en train de faire un intranet, et il est pas mal avancé. Je suis en train de galérer parce que le programme ne fait pas ce que je lui demande...! Je m'explique. J'ai une table qui contient tous les deniers dossier créés. Je ne veux pas qu'il y ait plus de 100 entrées (ici 5 pour simplifier). Du coup au moment d'enregistrer un nouveau dossier, si c'est le 100ème, je supprime le premier de la liste et je décale tout, parce que les dossiers récents sont insérés à la fin de la table. Je procède de la façon suivante :
1. Copie de table DossiersRecents vers une table Temporaire
2. Boucle for qui fait des update pour chaque ligne : elle copie la ligne 2 de Temporaire vers la ligne 1 de DossiersRecents, etc... on a donc bien décalé
3. Je supprime la dernière ligne de DossiersRecents
4. Je supprime la table Temporaire
5. Je peux enregistrer la nouvelle entrée
Seulement voilà... j'ai des soucis.
1. La table ne veut pas se créer, pourtant quand je copie la partie du code qui la créé dans un autre programme php, ça le fait
2. Admettons que la table existe déjà (je la créé sous phpmyadmin), il refuse de copier les lignes de Temp vers Dossiers Recents, rien ne se fait
Bref je ne comprends pas, pouvez-vous m'aider ?
Je copie ci-dessous la partie de code que j'ai extraite dans un programme indépendant, l'algorithme de décalage.
<?php
//méthode 1
$host = 'localhost';
$user = '***';
$pass = '***';
$db = '***';
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
//connexion à la base de données
try
{$bdd = new PDO('mysql:host=localhost;dbname=***', '***', '***'); }
catch(Exception $e)
{die('Erreur : '.$e->getMessage());}
//création de la base de données temporaire
mysql_query('CREATE TABLE Temporaire AS SELECT * FROM DossiersRecents');
for($i=2;$i<=4;$i++){
$reponse = $bdd->query('SELECT Dossier, Nom, Prenom, Ville, MoisArrivee, AnneeArrivee,NumeroOrdre FROM Temporaire Where NumeroOrdre='.$i.'');
$donnees = $reponse->fetch();
$dossiertemp=$donnees['Dossier'];
$nomtemp=$donnees['Nom'];
$prenomtemp=$donnees['Prenom'];
$villetemp=$donnees['Ville'];
$moisarriveetemp=$donnees['MoisArrivee'];
$anneearriveetemp=$donnees['AnneeArrivee'];
$numeroordretemp=$donnees['NumeroOrdre'];
$numeroordretemp=$numeroordretemp-1;
echo $nomtemp; echo $prenomtemp; echo $villetemp; echo $dossiertemp;
//puis on copie :il s'agit d'essais de copie
mysql_query('UPDATE DossiersRecents SET Dossier=4 WHERE NumeroOrdre= '.$id.'');
mysql_query('UPDATE DossiersRecents SET Nom=5 WHERE NumeroOrdre= '.$id.'');
mysql_query('UPDATE DossiersRecents SET Prenom=6 WHERE NumeroOrdre= '.$id.'');
mysql_query('UPDATE DossiersRecents SET Ville=7 WHERE NumeroOrdre= '.$id.'');
mysql_query('UPDATE DossiersRecents SET MoisArrivee=8 WHERE NumeroOrdre= '.$id.'');
mysql_query('UPDATE DossiersRecents SET AnneeArrivee=9 WHERE NumeroOrdre= '.$id.'');
mysql_query('UPDATE DossiersRecents SET Dossier=10 WHERE NumeroOrdre= '.$id.'');
//j'ai tout mis en commentaire, mais ça ne marche pas plus qu'au-dessus
//mysql_query('UPDATE DossiersRecents SET Dossier='.$dossiertemp.' WHERE NumeroOrdre= '.$id.'');
//mysql_query('UPDATE DossiersRecents SET Nom='.$nomtemp.' WHERE NumeroOrdre= '.$id.'');
//mysql_query('UPDATE DossiersRecents SET Prenom='.$prenomtemp.' WHERE NumeroOrdre= '.$id.'');
//mysql_query('UPDATE DossiersRecents SET Ville='.$villetemp.' WHERE NumeroOrdre= '.$id.'');
//mysql_query('UPDATE DossiersRecents SET MoisArrivee='.$moisarriveetemp.' WHERE NumeroOrdre= '.$id.'');
//mysql_query('UPDATE DossiersRecents SET AnneeArrivee='.$anneearriveetemp.' WHERE NumeroOrdre= '.$id.'');
//et on supprime la dernière ligne et la table temporaire : la suppression de la table fonctionne, elle... je l'ai mise en commentaire tout de même pour les besoins de mes essais des débuggage
mysql_query('DELETE FROM DossiersRecents WHERE NumeroOrdre=5');
//mysql_query('DROP TABLE Temporaire');
}
?>