begin process at 2012 05 30 13:53:15
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

Delete enregistrements > aux x derniers .


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Delete enregistrements > aux x derniers .

mardi 20 juillet 2010 à 19:45:54 | Delete enregistrements > aux x derniers .

arbilus

Bonjours j'ai crée un graph avec des données sql via google chart . Celui affiche les 70 derniers enregistrements POUR UN ID (un membre) donné de ma table . Le problème est que j'aimerais faire un script qui me permettrait de mettre à jour automatiquement ma table en supprimant tous les enregistrements superieurs aux 70 derniers enregistrements pour CHAQUE ID (utilisateur) .

Et je ne vois pas comment m'y prendre .
mardi 20 juillet 2010 à 21:32:30 | Re : Delete enregistrements > aux x derniers .

darkelda

un DELETE avec un LIMIT de $last_id, 70

darkelda
Développeur PHP&MySQL / Webmaster Freelance
Suivez Moi
mardi 20 juillet 2010 à 21:47:48 | Re : Delete enregistrements > aux x derniers .

arbilus

Cela voudrait dire qu'on supprime tout les enregistrements suivant $last_id et jusqu'au 70em ?
Mais je ne comprend pas $last_id . Pourrais-tu être plus précis concernant ceci ?
mardi 20 juillet 2010 à 21:57:11 | Re : Delete enregistrements > aux x derniers .

arbilus

J'ai essayé un truc du style DELETE FROM table WHERE id NOT IN (SELECT id FROM table ORDER BY xxxx_date DESC LIMIT 0, 70)

Mais ça ne fonctionne pas .
mardi 20 juillet 2010 à 23:06:37 | Re : Delete enregistrements > aux x derniers .

darkelda


Dans l'idéal, il faudra récupérer l'id du dernier enregistrement et exécuter la requête suivante (en espérant que les id se suivent):

si offset = 70

DELETE FROM graph WHERE (id < ($last_id + 1) AND id > ($last_id - $offset - 1));

darkelda
Développeur PHP&MySQL / Webmaster Freelance
Suivez Moi
mardi 20 juillet 2010 à 23:10:03 | Re : Delete enregistrements > aux x derniers .

darkelda

exemple valable pour cette table

CREATE TABLE `test`.`graph` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`point_x` tinyint(4) NOT NULL,
`point_y` tinyint(4) NOT NULL,
PRIMARY KEY (`id`)
)

donc à adapter suivant la situation

darkelda
Développeur PHP&MySQL / Webmaster Freelance
Suivez Moi
mardi 20 juillet 2010 à 23:30:58 | Re : Delete enregistrements > aux x derniers .

arbilus

Oui, sauf que ce que je prend en compte pour connaitre les enregistrements qui ne font pas parti des 70 derniers, c'est la date de type timestamp .

Donc pour te donner une id (heu idée .. la blague du soir) . Voila ce que j'ai réussi à faire :

Code PHP :
<?
include "sqlconnect.php";
function imp($char,$tag){
	foreach($char as $key=>$value){
	$char[$key] = $value;
	}
	$char = implode($tag,$char);
	return $char;
}
	$sql = "SELECT date_timestamp FROM xxxx ORDER BY date_timestamp DESC LIMIT 0,70";
	$query = mysql_query($sql);
	while($row = mysql_fetch_array($query)){
	$date[] = $row[date_timestamp];
	}
mysql_query("DELETE FROM xxxx WHERE date_timestamp NOT IN (".implode(',', $date).")");
?> 


Ce serait un truc de ce genre . Le seul problème avec ce code c'est qu'il ne fait pas ça POUR CHAQUE ID (style: pour id = 1 il fait ça , ensuite pour id = 34 aussi etc ..)

Du style: je supprime tous les enregistrements supérieur au 70em dernier POUR CHAQUE ID en prenant en compte la date .
mardi 20 juillet 2010 à 23:40:36 | Re : Delete enregistrements > aux x derniers .

darkelda

Code PHP :
<?php
require_once('sqlconnect.php');

$query = 'SELECT id FROM xxxx ORDER BY date_timestamp DESC LIMIT 0,70';
$query_result = mysql_query($query);

//Récupération des id des 70 derniers enregistrements
while($row = mysql_fetch_array($query)):
	$id_array[] = $row['id'];
endwhile;


foreach($id_array as $key=>$value):
	mysql_query('DELETE FROM xxxx WHERE id = '.$value.' LIMIT 1');
endforeach;


?> 



darkelda
Développeur PHP&MySQL / Webmaster Freelance
Suivez Moi
mardi 20 juillet 2010 à 23:42:09 | Re : Delete enregistrements > aux x derniers .

darkelda

<?php
require_once('sqlconnect.php');

$query = 'SELECT id FROM xxxx ORDER BY date_timestamp DESC LIMIT 0,70';
$query_result = mysql_query($query);

//Récupération des id des 70 derniers enregistrements
while($row = mysql_fetch_array($query_result)):
$id_array[] = $row['id'];
endwhile;

//Suppression pour chaque id récupéré auparavant
foreach($id_array as $key=>$value):
mysql_query('DELETE FROM xxxx WHERE id = '.$value.' LIMIT 1');
endforeach;


?>


darkelda
Développeur PHP&MySQL / Webmaster Freelance
Suivez Moi
mardi 20 juillet 2010 à 23:49:53 | Re : Delete enregistrements > aux x derniers .

darkelda

Code PHP :
<?php 
require_once('sqlconnect.php'); 

$query = 'SELECT id FROM xxxx ORDER BY date_timestamp DESC LIMIT 0,70'; 
$query_result = mysql_query($query); 

//Récupération des id des 70 derniers enregistrements 
while($row = mysql_fetch_array($query_result)): 
    $id_array[] = $row['id']; 
endwhile; 

//Suppression pour chaque id récupéré auparavant 
foreach($id_array as $key=>$value): 
    mysql_query('DELETE FROM xxxx WHERE id = '.$value.' LIMIT 1'); 
endforeach; 


?>



darkelda
Développeur PHP&MySQL / Webmaster Freelance
Suivez Moi

1 2

Cette discussion est classée dans : table, enregistrements, id, derniers, delete


Répondre à ce message

Sujets en rapport avec ce message

MySQL DELETE [ par Mamax ] Salut a tous!!!Est ce que quelqu'un pourrait m'indiquer la syntax de la clause WHERE pour pouvoir supprimer plusieurs éléments en même temps.J'ai essa MySQL_INSERT_ID mais pour le delete ???? [ par ripoux ] Hello,Peut-être l'aurez-vous compris dans le titre...Je cherche un moyen pour faire un delete de plusieur table relié entre elle.Pour un Insert, il ex INSERT a l'id qu'on vient de DELETE [ par Bassman ] Bonjour a tous, Voila j'aimerais savoir sous mysql comment forcé l'insertion dès le "départ", c'est a dire, par exemple dans votre table utilisateur Changer l'id de mes enregistrements. [ par rscajeux ] Salut,J'ai une table qui contenait des questions de quizz qui ont été supprimée ! J'utilise une page d'administration afin de pouvoir ajouté une quest Pb relation entre deux tables ! [ par milkasoprano ] Bonjour tous le monde, apres 2 heures de recherches je narrive pas a mettre en relation "deux tables" pour afficher un while avec les donnés ! c un p aide moi [ par snikersmaster ] bonjour, je suis debutant dans la programmation avec language PHP et je veux m'aider svp, j'ai une liste des donner dans une petit  table  mysql, nom CREATE TABLE [ par simon0000 ] salut tous le monde est ce que quelque un pourais me dir pourquoi ce code ne me marche pasmerciCREATE TABLE shop_commandes (   ID int(5) DEFAULT '0' N afficher les trois derniers enregistrements [ par daveda ] salut,comment afficher les trois derniers enregistrements (les trois dernières lignes de mes tables)sachant que pour chaques tables j'ai pour clé  pri recuperer et inserer [ par snikersmaster ] bonjour, je veux un aide pour dans mon programme , je vais expliquer un peux j'ai 2 tables "partenaires" , " journal " partenaires            & recuperation et insertion [ par snikersmaster ] bonjour, je veux un aide  dans mon programme , je vais expliquer un peux j'ai 2 tables "partenaires" , " journal " partenaires


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,030 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales