problème avec inser into

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 : problème avec inser into

Re: problème avec inser into

par Cricri » 21 oct. 2016, 15:30

Oui c'est presque ça sauf que la requête ne donne des bons qu'à 503 personnes le nombre est bon mais il y a 550 bons et je souhaiterai que les bons apparaissent dans la base ils sont en attente donc sans nom et sans matricule je dois pouvoir dire sur 550 bons 503 sont distribués et 47 en attente de distribution.
Je pensais faire un formulaire avec les bons en attente... Que dois-je modifier dans la requête pour que tous les bons soient répertoriés.

Re: problème avec inser into

par Cricri » 21 oct. 2016, 15:11

A part une erreur sur la variable $req que j'ai modifié en $stmtSelect j'ai lancé et pour le moment ça ressemble à quelques choses. Merci énormémentttttt.

Re: problème avec inser into

par Cricri » 21 oct. 2016, 14:51

Merci je vais essayer de mettre cette solution en oeuvre et pour info la limitation n'est qu'à la hauteur du nombre de bon à distibuer, il peut y avoir plus de bon.
Il me faut donner un bon par personne et les bons sont numérotés 27000,27001,27002....27500 je dois pouvoir dire le bon N° 27009 a été donné à cette personne.
Pensez-vous que cette solution est adapté ?
Encore merci de votre temps et de votre réponse

Re: problème avec inser into

par moogli » 21 oct. 2016, 14:36

salut,

déjà cela ne peux pas fonctionner
$req = $bd->query('SELECT
et quelques lignes plus loin
$req = $bd->prepare('INSERT I
=> tu écrase le contenue du select.

il faut que tu parcours les résultats du select pour insérer dans la base
voilà a quoi peux ressembler ton code
<?php

$jour = $param["jour"];
$mois = $param["mois"];
$annee=date('Y');
$age_supp=$param["age_supp"];
$ladate= $annee.'-'.$mois.'-'.$jour;
$tranche1=50;
$_debut = 27000;
$_fin = 27550;
$type ="Noël salariés";
$distrib ="Non";

  $stmtSelect = $bd->prepare('SELECT  matricule, groupe, nom, prenom , date_entree, TIMESTAMPDIFF(YEAR,`date_entree`, :dte ) as anc
      FROM membre
      WHERE groupe="8-actif" and TIMESTAMPDIFF(YEAR,`date_entree`, :dte) >= :age
      ORDER BY nom ASC, prenom ASC');
$stmtSelect->bindValue(':dte', $ladate);
$stmtSelect->bindValue(':age', $age_supp);
$stmtSelect->execute();
$stmtInsert = $bd->prepare('INSERT INTO archive SET
type = :type,
num_carnet= :num_carnet,
montant= :montant,
matricule= :matricule,
nom_parent= :nom_parent,
prenom_parent= :prenom_parent,
age= :age,
annee= :annee,
distrib= :distrib');
$stmtInsert->bindValue(':type', $type);
$stmtInsert->bindValue(':montant', $tranche1);
$stmtInsert->bindValue(':distrib', $distrib);
$stmtInsert->bindValue(':annee', $annee);

while ($donnees = $req->fetch(PDO::FETCH_ASSOC)) {
    if ($_debut == $_fin) {
        // a priori t'es limité à 500 salariés au dessus y a rien :)
    break;
    }
    $stmtInsert->bindValue(':num_carnet', $_debut);
    $stmtInsert->bindValue(':matricule', $donnees['matricule']);
    $stmtInsert->bindValue(':nom_parent', strtoupper($donnees['nom']));
    $stmtInsert->bindValue(':prenom_parent', strtoupper($donnees['prenom']));
    $stmtInsert->bindValue(':age', $donnees['anc']);
    $stmtInsert->execute();
    $_debut++;
}
$stmtSelect->closeCursor();
@+

problème avec inser into

par Cricri » 21 oct. 2016, 12:24

Bonjour à tous,

Voici mon problème :
Je souhaite insérer des enregistrements qui viennent de la table membre dans la table archive jusqu'à là pas de problème, mais j'essai par une boucle d'incrémenter une suite de N° de 27000 à 27500 et d'attribuer un N° par membre.
lorsque j'exécute la requête il insert soit la même personne ou il incrémente dans la table les N° mais pas l'enregistrement avec le nom, prénom...
Enfin je pense que mon prb vient de la boucle for et, ou peut-être du Fetch, si vous pouvez m'aider cela fait 2 jours que je tourne en rond...
<?php

$jour = $param["jour"];
$mois = $param["mois"];
$annee=date('Y');
$age_supp=$param["age_supp"];
$ladate= ''.$annee.'-'.$mois.'-'.$jour.'';
$tranche1=50;
$_debut = 27000;
$_fin = 27550;
$type ="Noël salariés";
$distrib ="Non"
?>


	
<?php

	$req = $bd->query('SELECT  matricule, groupe, nom, prenom , date_entree, TIMESTAMPDIFF(YEAR,`date_entree`, "' .$ladate.'" ) as anc 
			FROM membre 
			WHERE groupe="8-actif" and TIMESTAMPDIFF(YEAR,`date_entree`, "' .$ladate.'" ) >='.$age_supp.'
			ORDER BY nom ASC, prenom ASC
						');			
			
for($i=$_debut; $i<=$_fin; $i++)
 {	
	$donnees = $req->fetch() ;

 		
$req = $bd->prepare('INSERT INTO archive SET 
		type = :type,
		num_carnet= :num_carnet,
		montant= :montant,
		matricule= :matricule,
		nom_parent= :nom_parent,
		prenom_parent= :prenom_parent,
		age= :age, 
		annee= :annee, 
		distrib= :distrib
		');
	
		$req->execute(array(
		':type'=>$type, 
		':num_carnet'=>$i,
		':montant'=>$tranche1,
		':matricule'=>$donnees['matricule'],
		':nom_parent'=>strtoupper($donnees['nom']),
		':prenom_parent'=>strtoupper($donnees['prenom']),
		':age'=>$donnees['anc'],
		':annee'=>$annee,
		':distrib'=>$distrib)
		);	 
	
    if($i==$_fin){break;}
 }
					





  	?>