Comment transférer par date les champs dans une autre table?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Comment transférer par date les champs dans une autre table?

par zeus » 03 janv. 2009, 15:30

J'espère que tu as pris le temps de comprendre le code avant de l'utiliser ;)

par olivia » 03 janv. 2009, 15:10

Merci avec ton code simplifier c'est parfait Mille merci

par zeus » 03 janv. 2009, 13:37

Ah mais le sujet est pas encore résolu ...

Du coup, je te propose cette solution, en une seule requête :
$db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);
if(!$db_link) {echo "Connexion impossible à la base de données <b>$sql_bdd</b> sur le serveur <b>$sql_server</b><br>Vérifiez les paramètres du fichier"; exit;}

// Pour la clareté du code, il vaut mieux mettre la requête dans une variable
$str_requete = "INSERT INTO association2007 (id, adresse_fichier, nomfichier, nom, mdp, titre, rubrique, ville, description, condition, coordonnees, date, heure)
SELECT id, adresse_fichier, nomfichier, nom, mdp, titre, rubrique, ville, description, condition, coordonnees, date, heure 
FROM associations 
WHERE YEAR(date) = '2006' 
ORDER BY id DESC";

// Du coup, cette ligne est plus claire sans la requête.
mysql_db_query($sql_bdd, $str_requete, $db_link) or die(mysql_error()); 
echo 'Portage ok'; 

mysql_close($db_link); 
Comme ça, tu gagnes du temps d'exécution, de la sécurité (entre autre, plus besoin de t'embêter avec les protections d'apostrophes), et de la simplicité de code.

par dunbar » 03 janv. 2009, 13:28

Essaye avec
mysql_real_escape_string

par zeus » 03 janv. 2009, 12:18

Un INSERT SELECT (lien) aurait été beaucoup plus optimal

par olivia » 03 janv. 2009, 11:29

Bonjour Dunbar j'ai modifié un peu ton code qui enregistre les informations maintenant jusqu'au moment ou il rencontre une apostrophe dans un mot ou une phrase du champ, existe t'il un code spécifique à l'acceptation des apostrophes, voila la legere modif de ton aide qui m'a vraiment aiguiller.
$db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);
if(!$db_link) {echo "Connexion impossible à la base de données <b>$sql_bdd</b> sur le serveur <b>$sql_server</b><br>Vérifiez les paramètres du fichier"; exit;}

$sql = mysql_db_query($sql_bdd,"SELECT id,adresse_fichier,nomfichier,nom,mdp,titre,rubrique,ville,description,condition,coordonnees,date,heure FROM associations WHERE YEAR(date)= '2006' ORDER BY id DESC;",$db_link) or die(mysql_error()); 

     while($row = mysql_fetch_row($sql))
	 { 
                                   $requete_insert = "INSERT INTO 
                                                      association2007 
                                                 SET 
                                                 id                 = '".$row[0]."',
                                                 adresse_fichier    = '".$row[1]."', 
                                                 nomfichier         = '".$row[2]."', 
                                                 nom                = '".$row[3]."', 
                                                 mdp                = '".$row[4]."', 
                                                 titre              = '".$row[5]."',
                                                 rubrique           = '".$row[6]."', 
                                                 ville              = '".$row[7]."', 
                                                 description        = '".$row[8]."',
                                                 
			condition          = '".$row[9]."',
                                                 coordonnees        = '".$row[10]."', 
                                                 date               = '".$row[11]."', 
                                                 heure              = '".$row[12]."'
												 "; 
 
$result = mysql_query($requete_insert) or die ('Ne trouve pas tout les données : '.mysql_error());


} 



mysql_free_result ($sql);
	echo 'CODE ok bon'; 


mysql_close($db_link); 
 
[/code]

par dunbar » 02 janv. 2009, 00:57

Si l'insert est ds la boucle il devrait faire les 200 enregistrement :?:

par olivia » 02 janv. 2009, 00:50

non sa marche pas il n'y a pas d'erreur sur la page réponse. j'ai changé ma 2eme table au niveau de l id pour pas qu elle comptabilise mais rien a faire peut être qu'il n'y a pas de code pour ca car je voie sur le net les requetes sont faite a chaque fois pour un transfer seulement et non 200 ?

par dunbar » 02 janv. 2009, 00:12

Rajoute ceci après la requete INSERT
$result = mysql_query($requete_insert) or die ('Ne trouve pas tout les données : '.mysql_error());
Pour vérifier qu'il ne retourne pas d'erreur, fait également un echo de ta requete pour voir se qu'il te retourne

par olivia » 01 janv. 2009, 23:57

j'ai bien tester en transforment SET par SELECT et en inserant un FROM après le
heure = '".$row['heure']."'
rien à faire ce n'est pas du à L'id de la table association2007 qu'il ne doit pas monter mais enregistré seulement l'info?

par olivia » 31 déc. 2008, 21:02

Merci Dunbar j'ai essayé avec ton code, cela me donne l'echo de ma barre de navigation sans erreur sur ma page reponse mais il n'y a pas d'enregistrement dans la table association2007.
Merci Bisous et bonne soirée.

par dunbar » 31 déc. 2008, 12:23

Salut,
Et comme ceci cela donne quoi ?
<?php
     $db_link = mysql_connect($sql_serveur, $sql_user, $sql_passwd);
     if(!$db_link)
     {
     echo "Connexion impossible à la base de données <b>'".$sql_bdd."'</b>
     sur le serveur <b>'".$sql_server."'</b><br>Vérifiez les paramètres du fichier";
     exit;
     }


$resultat = mysql_db_query($sql_bdd,"SELECT count(*) FROM associations WHERE date LIKE '%".$recherche."%';",$db_link) or die(mysql_error());
$nb_total = mysql_fetch_array($resultat);
if (($nb_total = $nb_total[0]) == 0)
{
    echo 'Aucune réponse trouvée';
}
else
{


    if (!isset($_GET['debut'])) $_GET['debut'] = 0;
    $nb_affichage_par_page = 200;
    $rechtable ="associations";
$sql = mysql_db_query($sql_bdd,"SELECT * FROM ". $rechtable ." WHERE YEAR(date)= '2007' ORDER BY id DESC LIMIT ". $_GET['debut'] .",". $nb_affichage_par_page ." ;",$db_link) or die(mysql_error());

     while($row = mysql_fetch_row($sql)){
     	                          $requete_insert = "INSERT INTO
                                                      association_2007
                                                 SET
                                                 id                 = '',
                                                 adresse_fichier    = '".$row['adresse_fichier']."',
                                                 nomfichier         = '".$row['nomfichier']."',
                                                 nom                = '".$row['nom']."',
                                                 mdp                = '".$row['nomfichier']."',
                                                 titre              = '".$row['mdp']."',
                                                 rubrique           = '".$row['rubrique']."',
                                                 ville              = '".$row['ville']."',
                                                 description        = '".$row['description']."',
                                                 condition          = '".$row['condition']."',
                                                 coordonnees        = '".$row['coordonnees']."',
                                                 date               = '".$row['date']."',
                                                 heure              = '".$row['heure']."'

                                                  ";




}



mysql_free_result ($sql);

 echo 'Navigation des pages : <span class="gras">'.barre_navigation($nb_total, $nb_affichage_par_page, $_GET['debut'], 3).'</span>';
}
mysql_free_result ($resultat);
mysql_close($db_link);
?>

par olivia » 31 déc. 2008, 11:49

Aureusms je ne vois pas la différence avec le code ou il y a erreur suite au poids des infos mais j'ai quand même essayé sans succé toujours la même phrase d'erreur.
Dunbar tu as raison cela fonctionne bien avec YEAR (date) si tous les enregistrement sont éditer sur une page mais si je passe en page 2 cela saute. Je te donne la structure de la table
CREATE TABLE associations (
PRIMARY KEY (id),
id INT(10) auto_increment,
adresse_fichier varchar(100) NOT NULL,
nomfichier varchar(50) NOT NULL,
nom varchar(20) NOT NULL,
mdp varchar(6) NOT NULL,
titre varchar(30) NOT NULL,
rubrique varchar(40) NOT NULL,
ville varchar(20) NOT NULL,
description longblob NOT NULL,
membre varchar(15) NOT NULL,
condition varchar(15) NOT NULL,
coordonnees varchar(100) NOT NULL,
date date NOT NULL default '0000-00-00',
heure time NOT NULL default '00:00:00'
);
Voila je continu à cherché merci à plus tard bisous

par Aureusms » 30 déc. 2008, 18:50

Concernant ton code, essaye dont cela :
$db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);
if(!$db_link) {echo "Connexion impossible à la base de données <b>$sql_bdd</b> sur le serveur <b>$sql_server</b><br>Vérifiez les paramètres du fichier"; exit;}

if (!isset($_GET['debut'])) $_GET['debut'] = 0;

$nb_affichage_par_page = 200;
$rechtable ="associations";

$sql = mysql_db_query($sql_bdd,"SELECT * FROM ". $rechtable ." WHERE date LIKE '".$recherche."%' ORDER BY id DESC LIMIT ". $_GET['debut'] .",". $nb_affichage_par_page ." ;",$db_link) or die(mysql_error());

if (mysql_num_rows($sql) == 0)
   {
   echo "pas d'enregistrements";
   }
else
   {
   $requete_insert = "INSERT INTO association_2007 values ("; 
   while ($row = mysql_fetch_row($sql)) 
           { 
           foreach ($row as $valeur) 
                      { 
                      $requete_insert .="'$valeur',"; 
                       } 

           $requete_insert .= substr($requete_insert,0,-1); 
           $requete_insert .= "),("; 
           } 
    $requete_insert = substr($requete_insert,0,-2);  
    mysql_free_result ($sql); 
    
echo 'Navigation des pages : <span class="gras">'.barre_navigation($nb_total, $nb_affichage_par_page, $_GET['debut'], 3).'</span>';
}
mysql_free_result ($resultat); 
mysql_close($db_link);

par Aureusms » 30 déc. 2008, 18:42

Moi j'aime bien les bisous alors je vais t'aider...
Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 5833899 bytes) in /home/clients/legroupe.com/http/rech/supprimer_assos_anTEST.php4 on line 68

et la ligne 68 c'est ca
$requete_insert .= substr($requete_insert,0,-1);


Ca veut dire que tu as pas mal d'enregistrements et que la ligne texte commence à saturer.
Il va falloir la découper et adapter un peu si on veut que cela fonctionne.