Incrémentation d'un champs par tranche
Résolu/Fermé
A voir également:
- Incrémentation d'un champs par tranche
- Word mettre à jour tous les champs ✓ - Forum Word
- Générique champs elysées john miles - Forum Musique / Radio / Clip
- MAJ automatique de champs répétitifs dans un document Word - Forum Word
- Kinder tranche au lait amazon ✓ - Forum Consommation & Internet
- Word : Mise à jour des champs - Forum Word
19 réponses
chuka
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
378
13 juil. 2009 à 14:56
13 juil. 2009 à 14:56
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...
@+
chuka
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
378
13 juil. 2009 à 15:07
13 juil. 2009 à 15:07
--
Sur un malentendu, ca peut marcher!!
Sur un malentendu, ca peut marcher!!
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
Zep3k!GnO
Messages postés
2025
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
18 novembre 2015
200
13 juil. 2009 à 16:15
13 juil. 2009 à 16:15
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
chuka
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
378
13 juil. 2009 à 21:11
13 juil. 2009 à 21:11
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?
chuka
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
378
16 juil. 2009 à 15:49
16 juil. 2009 à 15:49
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
chuka
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
378
16 juil. 2009 à 16:03
16 juil. 2009 à 16:03
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??
chuka
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
378
16 juil. 2009 à 16:36
16 juil. 2009 à 16:36
Ben c'est une fonction Mysql!!
que tu pourras utiliser avec un script php... quel est le probleme?
que tu pourras utiliser avec un script php... quel est le probleme?
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
chuka
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
378
16 juil. 2009 à 18:42
16 juil. 2009 à 18:42
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
chuka
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
378
16 juil. 2009 à 20:15
16 juil. 2009 à 20:15
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!!
@+
jeangilles
Messages postés
816
Date d'inscription
samedi 21 juin 2008
Statut
Membre
Dernière intervention
17 juillet 2012
186
16 juil. 2009 à 20:24
16 juil. 2009 à 20:24
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 ...
jeangilles
Messages postés
816
Date d'inscription
samedi 21 juin 2008
Statut
Membre
Dernière intervention
17 juillet 2012
186
16 juil. 2009 à 20:53
16 juil. 2009 à 20:53
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)