Incrémentation d'un champs par tranche
Résolu
tima
-
tima -
tima -
Bonjour,
je voudrais créer un champs dans une table qui s'incrémente à chaque entrée jusqu'à ce qu'on arrive à la 250 ème entrée ça recommence de 1 jusq'à 250 et ainsi de suite je dois faire une boucle mais je n'arrive pas à avoir le résultat
est ce que vous avez une idée?
je voudrais créer un champs dans une table qui s'incrémente à chaque entrée jusqu'à ce qu'on arrive à la 250 ème entrée ça recommence de 1 jusq'à 250 et ainsi de suite je dois faire une boucle mais je n'arrive pas à avoir le résultat
est ce que vous avez une idée?
A voir également:
- Incrémentation d'un champs par tranche
- Excel copier formule sans incrémentation ✓ - Forum Excel
- Copier des formules à l' identique . ✓ - Forum Excel
- Champs calculé tcd formule si - Forum Excel
- Word mettre à jour tous les champs ✓ - Forum Word
- Calcul moyenne d'âge par tranche excel - Forum Excel
19 réponses
Salut,
CREATE SEQUENCE MA_SEQU INCREMENT BY 1 MINVALUE 1 MAXVALUE 250 CACHE 249 CYCLE NOORDER;
Si tu es sur oracle...
@+
CREATE SEQUENCE MA_SEQU INCREMENT BY 1 MINVALUE 1 MAXVALUE 250 CACHE 249 CYCLE NOORDER;
Si tu es sur oracle...
@+
bonjour, merci pour ta réponse mais moi je ne travaille pas avec oracle mais avec php/mysql
alors si vous avez une idée je vous serrais très reconnaissante
merci
alors si vous avez une idée je vous serrais très reconnaissante
merci
Tu veux que ce soit automatique dans la BDD la remise à 0 de l'auto incremente pour une table donnée c'est ça ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut,
tu peux faire une fonction.....
Apres tu fais ton insert:
insert into ma_table values (index,....,...,..,...,...,Ma_Functi(250));
C'est une piste!!
@+
tu peux faire une fonction.....
CREATE FUNCTION Ma_Functi(num INT(10)) RETURNS INT(10) BEGIN DECLARE nbr INT(10); DECLARE nb INT(10); SELECT COUNT(*) INTO nb FROM ma_table; IF (nb=0) THEN SET nbr=1; ELSE SELECT mon_champ_a_incrementer INTO nbr FROM ma_table ORDER BY index DESC LIMIT 1; SET nbr=nbr+1; IF nbr>num THEN SET nbr=1; END IF; END IF; RETURN nbr; END$$
Apres tu fais ton insert:
insert into ma_table values (index,....,...,..,...,...,Ma_Functi(250));
C'est une piste!!
@+
Bonjour j'ai essayé d'appliquer ton idée mais ça n'a pas marché
le champs est toujours à zéro je te donne ma fonction je te rappelle que je travaille en php/mysql
function num_distributeur($num)
{
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("mabase"); // Sélection de la base coursph
mysql_query("select Count(customers_id) into $nb from customers")or die ('Erreur SQL !'.mysql_error());
if ($nb==0)
{
$nbr=1;
}
else
{
// mysql_query("select customers_id into $nb from customers order by customers_id DESC LIMIT 1 ")or die ('Erreur SQL !'.mysql_error());
$nbr=$nbr+1;
if ($nbr> $num)
{
$nbr=1;
}
}
return $nbr;
}
en suite je fait
mysql_query("INSERT INTO customers VALUES('','','$prenom','$nom','$datnais','$email','$adresse','$tel','$fax','".tep_encrypt_password($password)."','','','num_distributeur(250)')")or die ('Erreur SQL !'.mysql_error());
est ce que tu peux m'aider?
le champs est toujours à zéro je te donne ma fonction je te rappelle que je travaille en php/mysql
function num_distributeur($num)
{
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("mabase"); // Sélection de la base coursph
mysql_query("select Count(customers_id) into $nb from customers")or die ('Erreur SQL !'.mysql_error());
if ($nb==0)
{
$nbr=1;
}
else
{
// mysql_query("select customers_id into $nb from customers order by customers_id DESC LIMIT 1 ")or die ('Erreur SQL !'.mysql_error());
$nbr=$nbr+1;
if ($nbr> $num)
{
$nbr=1;
}
}
return $nbr;
}
en suite je fait
mysql_query("INSERT INTO customers VALUES('','','$prenom','$nom','$datnais','$email','$adresse','$tel','$fax','".tep_encrypt_password($password)."','','','num_distributeur(250)')")or die ('Erreur SQL !'.mysql_error());
est ce que tu peux m'aider?
Salut,
le plus simple est certainement de créer la procédure dans la db mysql, puis tu fais un insert classique en php:
mysql_query("INSERT INTO customers VALUES(ma_fonctioon(250)'','','$prenom','$nom','$datnais','$email','$adresse','$tel','$fax','".tep_encrypt_password($password)."','','','num_distributeur(250)')")or die ('Erreur SQL !'.mysql_error());
@+
le plus simple est certainement de créer la procédure dans la db mysql, puis tu fais un insert classique en php:
mysql_query("INSERT INTO customers VALUES(ma_fonctioon(250)'','','$prenom','$nom','$datnais','$email','$adresse','$tel','$fax','".tep_encrypt_password($password)."','','','num_distributeur(250)')")or die ('Erreur SQL !'.mysql_error());
@+
Bonjour,
merci de m'avoir répondu si rapidement mais je n'ai pas compris ta solution je te rappelle que je suis débutante alors est ce que tu peux m'expliquer c'est quoi créer la procédure dans la db mysql s'il te plait
merci de m'avoir répondu si rapidement mais je n'ai pas compris ta solution je te rappelle que je suis débutante alors est ce que tu peux m'expliquer c'est quoi créer la procédure dans la db mysql s'il te plait
salut,
tu te connectes à la base mysql
mysql -u nom_utilisateur -pton_password nom_de_la_base_a_utiliser
tu as le prompt mysql comme suit et tu tapes:
mysql>delimiter $$
mysql>CREATE FUNCTION Ma_Functi(num INT(10))
RETURNS INT(10)
BEGIN
DECLARE
nbr INT(10);
DECLARE
nb INT(10);
SELECT COUNT(*) INTO nb FROM ma_table;
IF (nb=0) THEN
SET nbr=1;
ELSE
SELECT mon_champ_a_incrementer INTO nbr FROM ma_table
ORDER BY index DESC
LIMIT 1;
SET nbr=nbr+1;
IF nbr>num THEN
SET nbr=1;
END IF;
END IF;
RETURN nbr;
END$$
mysql> delimiter ;
mysql>quit
Tu modifies les champs qui vont bien pour que ca colle à ta table et tes champs et c'est tout!!
Apres tu peux utiliser cette fonction dans tes scripts....
@+
tu te connectes à la base mysql
mysql -u nom_utilisateur -pton_password nom_de_la_base_a_utiliser
tu as le prompt mysql comme suit et tu tapes:
mysql>delimiter $$
mysql>CREATE FUNCTION Ma_Functi(num INT(10))
RETURNS INT(10)
BEGIN
DECLARE
nbr INT(10);
DECLARE
nb INT(10);
SELECT COUNT(*) INTO nb FROM ma_table;
IF (nb=0) THEN
SET nbr=1;
ELSE
SELECT mon_champ_a_incrementer INTO nbr FROM ma_table
ORDER BY index DESC
LIMIT 1;
SET nbr=nbr+1;
IF nbr>num THEN
SET nbr=1;
END IF;
END IF;
RETURN nbr;
END$$
mysql> delimiter ;
mysql>quit
Tu modifies les champs qui vont bien pour que ca colle à ta table et tes champs et c'est tout!!
Apres tu peux utiliser cette fonction dans tes scripts....
@+
bonjour merci mais avant d'essayer je te pose une question dans ta fonction tu utilise begin end ... mais c'est pas du php ça??
bonjour, merci mais je n'ai pas compris parce que j'insert ton code mais j'ai des erreurs c'est comme s,il n'arrive pas à lire le code par ce que ce n'est pas du php
Salut,
<?php
$conn=mysql_connect("localhost", "user","mon_pass") or die("error connection");
mysql_select_db("test",$conn) or die("error db");
$quer= "INSERT INTO test_table (ind,incr) VALUES (10,ma_function(3))";
echo $quer;
$res=mysql_query($quer);
if (!$res) {
die('Invalid query: ' . mysql_error());
}
?>
j'ai pas d'erreur.....
C'est quoi ton message d'erreur??
<?php
$conn=mysql_connect("localhost", "user","mon_pass") or die("error connection");
mysql_select_db("test",$conn) or die("error db");
$quer= "INSERT INTO test_table (ind,incr) VALUES (10,ma_function(3))";
echo $quer;
$res=mysql_query($quer);
if (!$res) {
die('Invalid query: ' . mysql_error());
}
?>
j'ai pas d'erreur.....
C'est quoi ton message d'erreur??
voici le code que j'insert mais le champs est toujours égal à 5 je ne comprend pas pour quoi ça devrait marcher
function num_distributeur($num)
{
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("mabase"); // Sélection de la base coursph
$nb= mysql_query("select Count(*) from customers")or die ('Erreur SQL !'.mysql_error());
if ($nb==0)
{
$nbr=1;
}
else
{
$nbr =mysql_query("select customers_id from customers order by customers_id DESC LIMIT 1 ")or die ('Erreur SQL !'.mysql_error());
$nbr=$nbr+1;
if ($nbr> $num)
{
$nbr=1;
}
}
return $nbr;
}
mysql_query("INSERT INTO customers VALUES('','','$prenom','$nom','$datnais','$email','$adresse','$tel','$fax','".tep_encrypt_password($password)."','','','$D')")or die ('Erreur SQL !'.mysql_error());
aide moi s'il te plais
function num_distributeur($num)
{
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("mabase"); // Sélection de la base coursph
$nb= mysql_query("select Count(*) from customers")or die ('Erreur SQL !'.mysql_error());
if ($nb==0)
{
$nbr=1;
}
else
{
$nbr =mysql_query("select customers_id from customers order by customers_id DESC LIMIT 1 ")or die ('Erreur SQL !'.mysql_error());
$nbr=$nbr+1;
if ($nbr> $num)
{
$nbr=1;
}
}
return $nbr;
}
mysql_query("INSERT INTO customers VALUES('','','$prenom','$nom','$datnais','$email','$adresse','$tel','$fax','".tep_encrypt_password($password)."','','','$D')")or die ('Erreur SQL !'.mysql_error());
aide moi s'il te plais
Salut,
Je suis vraiement pas un expert en php mais bon là ca devrait le faire!!
Mais attention tu dois avoir imperativement un autre id dans ta table, que customers_id, qui lui s'incremente normalement car sinon ca ne marchera pas!!
Je reste persuadé aussi que la fonction stockée dans la db est une meilleur solution...mais c'est toi qui choisit!!
@+
function num_distributeur($num) { $conn=mysql_connect("localhost", "u","p") or die("error connection"); mysql_select_db("test",$conn) or die("error db"); $res= mysql_query("select Count(*) from ma_table")or die ('Erreur SQL !'.mysql_error()); if (!$res) { $nbr=1; } else { $n =mysql_query("select index,customer_id from ma_table order by index DESC LIMIT 1 ")or die ('Erreur SQL !'.mysql_error()); $nbre=mysql_fetch_array($n); $nbr=$nbre['customer_id']; $nbr=$nbr+1; if ($nbr> $num) { $nbr=1; } } return $nbr; } ?>
Je suis vraiement pas un expert en php mais bon là ca devrait le faire!!
Mais attention tu dois avoir imperativement un autre id dans ta table, que customers_id, qui lui s'incremente normalement car sinon ca ne marchera pas!!
Je reste persuadé aussi que la fonction stockée dans la db est une meilleur solution...mais c'est toi qui choisit!!
@+
Heu je dis peut etre une connerie, mais la fonction modulo existe en SQL (%) , pourquoi ne pas l'utiliser ?
si j'ai bien compris ce que tu voulais faire, en une ligne ca doit pouvoir le faire ...
si j'ai bien compris ce que tu voulais faire, en une ligne ca doit pouvoir le faire ...
mysql_query("INSERT INTO customers SELECT count(*)%250+1
,'','$prenom','$nom','$datnais','$email','$adresse','$tel','$fax','".tep_encrypt_password($password)."','','','$D' FROM customers ")or die ('Erreur SQL !'.mysql_error());
ou quelquechose comme ca (j'ai testé sur mon serveur ca marche bien après je sais pas si ca répond bien à ta demande)
,'','$prenom','$nom','$datnais','$email','$adresse','$tel','$fax','".tep_encrypt_password($password)."','','','$D' FROM customers ")or die ('Erreur SQL !'.mysql_error());
ou quelquechose comme ca (j'ai testé sur mon serveur ca marche bien après je sais pas si ca répond bien à ta demande)