derniere date de modification BD MySQL

ViPHP
ViPHP | 3607 Messages

05 déc. 2006, 16:50

tu ne peux pas faire de order by dans une requête de type show table status,
donc voici ce que je te propose:
<?php
//variable qui contiendra les derniers enregistrement de chaque table
$tableau_modifs=array();

$sql_derniere_modif="SHOW TABLE STATUS FROM `dbsitedebase`";
$dermodif= mysql_query($sql_derniere_modif);
$datemodifbd= mysql_fetch_array($dermodif);
foreach($datemodifbd as $value){
  $tableau_modifs[]=$value['Update_time'];
}

//affichage du contenu du tableau
print_r($tableau_modifs);

//il ne te reste plus qu'a trier $tableau_modifs pour récupérer la première ou la dernière valeur
//selon l'ordre dans lequel tu as trier le tableau
?>

Eléphant du PHP | 258 Messages

05 déc. 2006, 17:32

Juste pour verifier si c'est normale avant de trier mon tableau quand je met le code de jojolapine sa me donne ceci :
PHP:
Notice: Uninitialized string offset: 0 in c:\program files\easyphp1-7\www\sitedebase\index.php on line 375

Notice: Uninitialized string offset: 0 in c:\program files\easyphp1-7\www\sitedebase\index.php on line 375

Notice: Uninitialized string offset: 0 in c:\program files\easyphp1-7\www\sitedebase\index.php on line 375

Notice: Uninitialized string offset: 0 in c:\program files\easyphp1-7\www\sitedebase\index.php on line 375
Array ( [0] => s [1] => s [2] => M [3] => M [4] => D [5] => D [6] => 7 [7] => 7 [8] => 3 [9] => 3 [10] => 2 [11] => 2 [12] => 4 [13] => 4 [14] => 2 [15] => 2 [16] => 0 [17] => 0 [18] => 8 [19] => 8 [20] => 2 [21] => 2 [22] => 2 [23] => 2 [24] => [25] => [26] => [27] => [28] => [29] => )
est ce normale?

ah oui la line 375 c'est celle ci:

Code : Tout sélectionner

$tableau_modifs[]=$value['Update_time'];

ViPHP
ViPHP | 3607 Messages

05 déc. 2006, 17:55

après quelques test, il s'avère que je ne parvient pas à récupérer autre chose que la première ligne de résultats, et je ne sais pas pourquoi....
essaye simplement ce code:
<?php
$connexion=mysql_connect($server,$login,$pass);
$db=mysql_select_db($db,$connexion);

$sql_derniere_modif="SHOW TABLE STATUS";
$dermodif= mysql_query($sql_derniere_modif);
$datemodifbd= mysql_fetch_array($dermodif);
echo '<pre>';
print_r($datemodifbd);
echo '</pre>';

?> 

ViPHP
ViPHP | 3607 Messages

05 déc. 2006, 18:08

ça y est j'ai trouvé la solution, je ne sais pas pourquoi, le mysql_fetch_array() ne passe pas, essaye ce code, et tu auras ton tableau comme il faut:
<?php
$server="***";
$login="***";
$pass="***";
$db="***";
$connexion=mysql_connect($server,$login,$pass);
$db=mysql_select_db($db,$connexion);
//variable qui contiendra les derniers enregistrement de chaque table
$tableau_modifs=array();

$sql_derniere_modif="SHOW TABLE STATUS FROM `***`";
$dermodif= mysql_query($sql_derniere_modif);
for($i=0;$i<mysql_num_rows($dermodif);$i++){
    $tableau_modifs[]=mysql_result($dermodif,$i,"Update_time");
}

print_r($tableau_modifs);
//il ne te reste plus qu'a trier $tableau_modifs pour récupérer la première ou la dernière valeur
//selon l'ordre dans lequel tu as trier le tableau
?> 

Eléphant du PHP | 258 Messages

05 déc. 2006, 18:28

Merci sa marche , bon maintenant je vais trier mon tableau mais je ne sais pas ce qui faut utiliser entre ces 5 fonctions

asort()
arsort()
kasort()
krsort()
sort()

Je pense que c'est arsort() mais pas sur.

Et jojolapine, à tu trouver la réponse à cette bizzari de mysql_fetch_array() ?

Bon merci en tout cas.

ViPHP
ViPHP | 3607 Messages

05 déc. 2006, 19:00

je vais quand-même pas tout te macher... fait des essais par toi-même

Eléphant du PHP | 258 Messages

05 déc. 2006, 20:24

bon j'ai mis longtemps mais sa a l'air d'etre sa enfin juste pour le tri sa me trie bien de la plus recente a la plus ancienne:
arsort($tableau_modifs);
foreach ($tableau_modifs as $key => $val) {
   echo "$val\n";
}
Mais je n'arrive pas à afficher juste la date la plus recente.

a mois que je face sa:
asort($tableau_modifs);
foreach ($tableau_modifs as $key => $val) {
   
}
echo "$val\n";
Sa a l'air de marcher mais je voudrais savoir si c'est la bonne solution

ViPHP
ViPHP | 1961 Messages

05 déc. 2006, 20:32

Bonsoir,

Si ton tableau est trié, c'est soit la première valeur
$tableau_modifs[0]
soit c'est la dernière
$tableau_modifs[count($tableau_modifs) - 1]
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphant du PHP | 258 Messages

05 déc. 2006, 21:24

Que sa soit :
$tableau_modifs[0]
ou
$tableau_modifs[count($tableau_modifs) - 1]

Sa ne marche pas enfin pas comme je le veut dans le premier cas sa m'affiche bien le premier mais pas du tableau trier mais du tableau retourner par la requete sql

et dans le deuxieme cas c'est pareil sauf que c'est le dernier , mais pas du tableau trier, c'est le dernier de la requete sql

ViPHP
ViPHP | 1961 Messages

05 déc. 2006, 21:30

Bonsoir,

Si ton tableau est trié, c'est soit la première valeur
$tableau_modifs[0]
soit c'est la dernière
$tableau_modifs[count($tableau_modifs) - 1]
Relis bien, Si ton tableau est trié

Ce qui veux dire que ton tableau doit être trié avant d'utiliser l'affichage.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

ViPHP
ViPHP | 1961 Messages

05 déc. 2006, 21:37

Re,

Pourquoi veux-tu absolument traiter cette date par une requête ?

Je pense qu'il est bien plus simple d'utiliser les fonctions de manipulation de fichiers.

MySQL crée un répertoire par base. Il te suffis de prendre la date de dernière modification de ce dosier, non?

QQ chose du style
<?php
$filename = 'chemin/vers/dossier/base';
if (file_exists($filename)) {
   echo "$filename  a été modifié le : " . date ("d/m/Y H:i:s.", filemtime($filename));
}
?> 
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphant du PHP | 258 Messages

05 déc. 2006, 21:38

escuse moi met je croyer que quand je faisait sa sa me trier le tableau.
arsort($tableau_modifs); 
foreach ($tableau_modifs as $key => $val) { 
    
}
Si c'est pas le cas je me suis tromper alors.

ViPHP
ViPHP | 1961 Messages

05 déc. 2006, 21:52

Re,
Tu te compliques la vie
<?php
$server="***";
$login="***";
$pass="***";
$db="***";
$connexion=mysql_connect($server,$login,$pass);
$db=mysql_select_db($db,$connexion);

$sql_derniere_modif="SHOW TABLE STATUS FROM `***`";
$dermodif= mysql_query($sql_derniere_modif);
$lastModif = '';
for($i=0;$i<mysql_num_rows($dermodif);$i++){
    if($lastModif < mysql_result($dermodif,$i,"Update_time"){
      $lastModif = mysql_result($dermodif,$i,"Update_time");
}
echo 'Date modif : ' .  $lastModif . '<br />';
?> 
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphant du PHP | 258 Messages

06 déc. 2006, 16:33

Bon de toute facon les deux marche mais et il y a toujours un mais , je viens de m'apercevoir de 2 choses.

-1 C'est que la date n'est pas au format jour, moi, année. J'aurais voulus savoir si il est possible d'y remedier , mais bon sa c'est pas trop grave.

-2 Et la deuxieme c'est quand faite ma table est modifier toute les seconde car j'ai mon compteur de visite qui verifie combien de temps passe l'internaute sur mon site.
Donc j'aurais voulu savoir si le mieux c'est pas que je crée une base de donnée uniquement pour mon compteur de visite et comme sa l'autre il n'y aurais plus de probleme ou si il y a un moyen de ne pas compter la table 'stas' car c'est elle qui s'actualise toutes les secondes.

Merci pour vos suggestions.

ViPHP
ViPHP | 3607 Messages

06 déc. 2006, 16:45

pour le petit 1: http://www.phpfrance.com/forums/voir_sujet-8323.php
pour le petit 2:
<?php
$server="***";
$login="***";
$pass="***";
$db="***";
$connexion=mysql_connect($server,$login,$pass);
$db=mysql_select_db($db,$connexion);

$sql_derniere_modif="SHOW TABLE STATUS FROM `***`";
$dermodif= mysql_query($sql_derniere_modif);
$lastModif = '';
for($i=0;$i<mysql_num_rows($dermodif);$i++){
    if($lastModif < mysql_result($dermodif,$i,"Update_time" && mysql_result($dermodif,$i,"Name")!="matabledecompteurdevisite"){
      $lastModif = mysql_result($dermodif,$i,"Update_time");
}
echo 'Date modif : ' .  $lastModif . '<br />';
?>