Bonjour, je suis confronté à un petit problème (Perl ? SQL ?):
J'ai créé une fonction qui ajoute un enregistrement à une table.
J'ai mis la clé primaire de cette table en AUTO_INCREMENT.
J'ajoute un enregistrement, ca marche. Un autre, impecc. (disons que j'ai
maintenant 10 enregistrements - Un enregistrement a un ID en PK)
Puis j'efface par exemple l'enregistrement 1, 2, 5...
Je relance la fonction. L'ID de l'enregistrement sera 11... ce qui va
laisser des 'trous' dans les ID :\
J'aurais souhaité qu'il mette 1 (puis 2, 5, etc)
Donc j'aimerais savoir comment faire pour ne plus en avoir ?
Merci.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Patrice Karatchentzeff
"Delf" writes:
Bonjour, je suis confronté à un petit problème (Perl ? SQL ?): J'ai créé une fonction qui ajoute un enregistrement à une table. J'ai mis la clé primaire de cette table en AUTO_INCREMENT. J'ajoute un enregistrement, ca marche. Un autre, impecc. (disons que j'ai maintenant 10 enregistrements - Un enregistrement a un ID en PK) Puis j'efface par exemple l'enregistrement 1, 2, 5... Je relance la fonction. L'ID de l'enregistrement sera 11... ce qui va laisser des 'trous' dans les ID : J'aurais souhaité qu'il mette 1 (puis 2, 5, etc) Donc j'aimerais savoir comment faire pour ne plus en avoir ?
Il n'y a pas de « trous »... C'est la base de données qui gère cela. C'est justement l'intérêt d'utiliser une base de données ;-)
Bonjour, je suis confronté à un petit problème (Perl ? SQL ?):
J'ai créé une fonction qui ajoute un enregistrement à une table.
J'ai mis la clé primaire de cette table en AUTO_INCREMENT.
J'ajoute un enregistrement, ca marche. Un autre, impecc. (disons que j'ai
maintenant 10 enregistrements - Un enregistrement a un ID en PK)
Puis j'efface par exemple l'enregistrement 1, 2, 5...
Je relance la fonction. L'ID de l'enregistrement sera 11... ce qui va
laisser des 'trous' dans les ID :
J'aurais souhaité qu'il mette 1 (puis 2, 5, etc)
Donc j'aimerais savoir comment faire pour ne plus en avoir ?
Il n'y a pas de « trous »... C'est la base de données qui gère
cela. C'est justement l'intérêt d'utiliser une base de données ;-)
Bonjour, je suis confronté à un petit problème (Perl ? SQL ?): J'ai créé une fonction qui ajoute un enregistrement à une table. J'ai mis la clé primaire de cette table en AUTO_INCREMENT. J'ajoute un enregistrement, ca marche. Un autre, impecc. (disons que j'ai maintenant 10 enregistrements - Un enregistrement a un ID en PK) Puis j'efface par exemple l'enregistrement 1, 2, 5... Je relance la fonction. L'ID de l'enregistrement sera 11... ce qui va laisser des 'trous' dans les ID : J'aurais souhaité qu'il mette 1 (puis 2, 5, etc) Donc j'aimerais savoir comment faire pour ne plus en avoir ?
Il n'y a pas de « trous »... C'est la base de données qui gère cela. C'est justement l'intérêt d'utiliser une base de données ;-)
"Patrice Karatchentzeff" a écrit dans le message news:
Il n'y a pas de « trous »... C'est la base de données qui gère cela. C'est justement l'intérêt d'utiliser une base de données ;-)
Je parlais de 'trus' juste dans la suite des chiffres. Mais en fait je m'en sers plus :) Par contre, j'ai une question: J'effectue une requete SELECT. J'aimerais savoir s'il y a au moins un resultat ou non. Actuellemnt je fais comme ceci: if ($SQLRequest->fetchrow_array != 0) Ca marche, sauf avec des tables qui contiennent des adresses email (que j'insere avec le simple quote).
-- Delf
"Patrice Karatchentzeff" a écrit dans le message news:
Il n'y a pas de « trous »... C'est la base de données qui gère
cela. C'est justement l'intérêt d'utiliser une base de données ;-)
Je parlais de 'trus' juste dans la suite des chiffres. Mais en fait je m'en
sers plus :)
Par contre, j'ai une question:
J'effectue une requete SELECT. J'aimerais savoir s'il y a au moins un
resultat ou non.
Actuellemnt je fais comme ceci:
if ($SQLRequest->fetchrow_array != 0)
Ca marche, sauf avec des tables qui contiennent des adresses email (que
j'insere avec le simple quote).
"Patrice Karatchentzeff" a écrit dans le message news:
Il n'y a pas de « trous »... C'est la base de données qui gère cela. C'est justement l'intérêt d'utiliser une base de données ;-)
Je parlais de 'trus' juste dans la suite des chiffres. Mais en fait je m'en sers plus :) Par contre, j'ai une question: J'effectue une requete SELECT. J'aimerais savoir s'il y a au moins un resultat ou non. Actuellemnt je fais comme ceci: if ($SQLRequest->fetchrow_array != 0) Ca marche, sauf avec des tables qui contiennent des adresses email (que j'insere avec le simple quote).
-- Delf
Delf
"Delf" a écrit dans le message news:
if ($SQLRequest->fetchrow_array != 0) Ca marche, sauf avec des tables qui contiennent des adresses email (que j'insere avec le simple quote).
Le message d'erreur quand meme :) Argument "" isn't numeric in numeric ne (!=) at ./db.pl line 152. Si qq'un pouvait m'aider.
-- Delf
"Delf" a écrit dans le message news:
if ($SQLRequest->fetchrow_array != 0)
Ca marche, sauf avec des tables qui contiennent des adresses email (que
j'insere avec le simple quote).
Le message d'erreur quand meme :)
Argument "xyz@xyz.xyz" isn't numeric in numeric ne (!=) at ./db.pl line 152.
Si qq'un pouvait m'aider.
if ($SQLRequest->fetchrow_array != 0) Ca marche, sauf avec des tables qui contiennent des adresses email (que j'insere avec le simple quote).
Le message d'erreur quand meme :) Argument "" isn't numeric in numeric ne (!=) at ./db.pl line 152. Si qq'un pouvait m'aider.
-- Delf
Freddo
Salut,
Delf à écrit:
Bonjour, je suis confronté à un petit problème (Perl ? SQL ?):
SQL
J'ai créé une fonction qui ajoute un enregistrement à une table. J'ai mis la clé primaire de cette table en AUTO_INCREMENT. J'ajoute un enregistrement, ca marche. Un autre, impecc. (disons que j'ai maintenant 10 enregistrements - Un enregistrement a un ID en PK) Puis j'efface par exemple l'enregistrement 1, 2, 5... Je relance la fonction. L'ID de l'enregistrement sera 11... ce qui va laisser des 'trous' dans les ID :
C'est normal. Et ça aide, imagine deux table, une User qui contient (je schématise): ID AUTO_INCREMENT Name STRING qui contient 1 Delf 2 Freddo
et une table UserInfo avec: UserID NUMBER Country STRING qui contient: 1 France 2 Gelbique
Bien sûr UserInfo.UserID et User.ID sont liés. Dans ton example, que se passerait-il si tu effaces Patrice mais pas son addresse (Bruxelles) (par erreur, panne, etc...)?
Le prochain user que tu vas créer aura comme User.ID la valeur 2. Plus tard Quand tu sélectionneras les addresses, tu auras deux rangs de retour et ce n'est peut-être pas ce qu'on veut dans ce cas-ci. Tandis que si tu laisses MySQL s'en charger, pas de problèmes.
J'aurais souhaité qu'il mette 1 (puis 2, 5, etc)
Oui tu peux toi-même mettre la valeur dans ton INSERT, par contre je ne sais pas si MySQL a une fonction pour trouver le premier "trou".
Donc j'aimerais savoir comment faire pour ne plus en avoir ?
Il y a peut-être une option pour faire ça dans MySQL, mais je ne sais pas non plus, jette un oeil dans les docs après AUTO_INCREMENT/KEY/INDEX/????.
A plus, Freddo
Salut,
Delf à écrit:
Bonjour, je suis confronté à un petit problème (Perl ? SQL ?):
SQL
J'ai créé une fonction qui ajoute un enregistrement à une table.
J'ai mis la clé primaire de cette table en AUTO_INCREMENT.
J'ajoute un enregistrement, ca marche. Un autre, impecc. (disons que j'ai
maintenant 10 enregistrements - Un enregistrement a un ID en PK)
Puis j'efface par exemple l'enregistrement 1, 2, 5...
Je relance la fonction. L'ID de l'enregistrement sera 11... ce qui va
laisser des 'trous' dans les ID :
C'est normal. Et ça aide, imagine deux table, une User qui contient (je schématise):
ID AUTO_INCREMENT
Name STRING
qui contient
1 Delf
2 Freddo
et une table UserInfo avec:
UserID NUMBER
Country STRING
qui contient:
1 France
2 Gelbique
Bien sûr UserInfo.UserID et User.ID sont liés. Dans ton example, que se passerait-il si tu effaces Patrice mais pas son addresse (Bruxelles) (par erreur, panne, etc...)?
Le prochain user que tu vas créer aura comme User.ID la valeur 2. Plus tard Quand tu sélectionneras les addresses, tu auras deux rangs de retour et ce n'est peut-être pas ce qu'on veut dans ce cas-ci. Tandis que si tu laisses MySQL s'en charger, pas de problèmes.
J'aurais souhaité qu'il mette 1 (puis 2, 5, etc)
Oui tu peux toi-même mettre la valeur dans ton INSERT, par contre je ne sais pas si MySQL a une fonction pour trouver le premier "trou".
Donc j'aimerais savoir comment faire pour ne plus en avoir ?
Il y a peut-être une option pour faire ça dans MySQL, mais je ne sais pas non plus, jette un oeil dans les docs après AUTO_INCREMENT/KEY/INDEX/????.
Bonjour, je suis confronté à un petit problème (Perl ? SQL ?):
SQL
J'ai créé une fonction qui ajoute un enregistrement à une table. J'ai mis la clé primaire de cette table en AUTO_INCREMENT. J'ajoute un enregistrement, ca marche. Un autre, impecc. (disons que j'ai maintenant 10 enregistrements - Un enregistrement a un ID en PK) Puis j'efface par exemple l'enregistrement 1, 2, 5... Je relance la fonction. L'ID de l'enregistrement sera 11... ce qui va laisser des 'trous' dans les ID :
C'est normal. Et ça aide, imagine deux table, une User qui contient (je schématise): ID AUTO_INCREMENT Name STRING qui contient 1 Delf 2 Freddo
et une table UserInfo avec: UserID NUMBER Country STRING qui contient: 1 France 2 Gelbique
Bien sûr UserInfo.UserID et User.ID sont liés. Dans ton example, que se passerait-il si tu effaces Patrice mais pas son addresse (Bruxelles) (par erreur, panne, etc...)?
Le prochain user que tu vas créer aura comme User.ID la valeur 2. Plus tard Quand tu sélectionneras les addresses, tu auras deux rangs de retour et ce n'est peut-être pas ce qu'on veut dans ce cas-ci. Tandis que si tu laisses MySQL s'en charger, pas de problèmes.
J'aurais souhaité qu'il mette 1 (puis 2, 5, etc)
Oui tu peux toi-même mettre la valeur dans ton INSERT, par contre je ne sais pas si MySQL a une fonction pour trouver le premier "trou".
Donc j'aimerais savoir comment faire pour ne plus en avoir ?
Il y a peut-être une option pour faire ça dans MySQL, mais je ne sais pas non plus, jette un oeil dans les docs après AUTO_INCREMENT/KEY/INDEX/????.
A plus, Freddo
Delf
"Patrice Karatchentzeff" a écrit dans le message news:
utilise ne à la place de != dans ce cas.
Requete initiale pour savoir si un user peut acceder à la suite du prg: $DBRequest->prepare("SELECT * FROM USERS WHERE LoginUser = '$Login' AND PassUser = '$Pass'");
Comme je veux savoir s'il est present dans la base, j'ai changer cette requete par:
$DBRequest->prepare("SELECT COUNT(*) FROM USERS WHERE LoginUser = '$Login' AND PassUser = '$Pass'");
J'aimerais savoir si c'est propre ou non. En tout cas ca fonctionne. Merci. (en principe j'ai fini mes questions de la journée :o)
Je vais voir avec le "ne" ca que ca aurait fait.
-- Delf
"Patrice Karatchentzeff" a écrit dans le message news:
utilise ne à la place de != dans ce cas.
Requete initiale pour savoir si un user peut acceder à la suite du prg:
$DBRequest->prepare("SELECT * FROM USERS WHERE LoginUser = '$Login' AND
PassUser = '$Pass'");
Comme je veux savoir s'il est present dans la base, j'ai changer cette
requete par:
$DBRequest->prepare("SELECT COUNT(*) FROM USERS WHERE LoginUser = '$Login'
AND PassUser = '$Pass'");
J'aimerais savoir si c'est propre ou non. En tout cas ca fonctionne.
Merci. (en principe j'ai fini mes questions de la journée :o)
"Patrice Karatchentzeff" a écrit dans le message news:
utilise ne à la place de != dans ce cas.
Requete initiale pour savoir si un user peut acceder à la suite du prg: $DBRequest->prepare("SELECT * FROM USERS WHERE LoginUser = '$Login' AND PassUser = '$Pass'");
Comme je veux savoir s'il est present dans la base, j'ai changer cette requete par:
$DBRequest->prepare("SELECT COUNT(*) FROM USERS WHERE LoginUser = '$Login' AND PassUser = '$Pass'");
J'aimerais savoir si c'est propre ou non. En tout cas ca fonctionne. Merci. (en principe j'ai fini mes questions de la journée :o)
Je vais voir avec le "ne" ca que ca aurait fait.
-- Delf
Maxime Wojtczak
Salut!
Delf wrote:
"Patrice Karatchentzeff" a écrit dans le message news:
utilise ne à la place de != dans ce cas.
Requete initiale pour savoir si un user peut acceder à la suite du prg: $DBRequest->prepare("SELECT * FROM USERS WHERE LoginUser = '$Login' AND PassUser = '$Pass'");
Comme je veux savoir s'il est present dans la base, j'ai changer cette requete par:
$DBRequest->prepare("SELECT COUNT(*) FROM USERS WHERE LoginUser = '$Login' AND PassUser = '$Pass'");
$sth = $DBRequest->prepare('SELECT COUNT(*) FROM users WHERE loginuser=? AND passuser=?;'); $sth->execute($Login,$Pass) or die $dbh->errstr;
est beaucoup plus propre que la méthode que tu utilises et, chose bien pratique, si la variable $Login contient une quote, avec la méthode que je viens de donner, elle est automatiquement *backslashée* si je puis m'exprimer ainsi, contrairement à ta méthode où il risque d'y avoir une erreur SQL
J'aimerais savoir si c'est propre ou non. En tout cas ca fonctionne. Merci. (en principe j'ai fini mes questions de la journée :o)
Pas de quoi
Je vais voir avec le "ne" ca que ca aurait fait.
-- Delf
Max
Salut!
Delf wrote:
"Patrice Karatchentzeff" a écrit dans le message news:
utilise ne à la place de != dans ce cas.
Requete initiale pour savoir si un user peut acceder à la suite du prg:
$DBRequest->prepare("SELECT * FROM USERS WHERE LoginUser = '$Login' AND
PassUser = '$Pass'");
Comme je veux savoir s'il est present dans la base, j'ai changer cette
requete par:
$DBRequest->prepare("SELECT COUNT(*) FROM USERS WHERE LoginUser = '$Login'
AND PassUser = '$Pass'");
$sth = $DBRequest->prepare('SELECT COUNT(*) FROM users WHERE loginuser=?
AND passuser=?;');
$sth->execute($Login,$Pass) or die $dbh->errstr;
est beaucoup plus propre que la méthode que tu utilises et, chose bien
pratique, si la variable $Login contient une quote, avec la méthode que
je viens de donner, elle est automatiquement *backslashée* si je puis
m'exprimer ainsi, contrairement à ta méthode où il risque d'y avoir une
erreur SQL
J'aimerais savoir si c'est propre ou non. En tout cas ca fonctionne.
Merci. (en principe j'ai fini mes questions de la journée :o)
"Patrice Karatchentzeff" a écrit dans le message news:
utilise ne à la place de != dans ce cas.
Requete initiale pour savoir si un user peut acceder à la suite du prg: $DBRequest->prepare("SELECT * FROM USERS WHERE LoginUser = '$Login' AND PassUser = '$Pass'");
Comme je veux savoir s'il est present dans la base, j'ai changer cette requete par:
$DBRequest->prepare("SELECT COUNT(*) FROM USERS WHERE LoginUser = '$Login' AND PassUser = '$Pass'");
$sth = $DBRequest->prepare('SELECT COUNT(*) FROM users WHERE loginuser=? AND passuser=?;'); $sth->execute($Login,$Pass) or die $dbh->errstr;
est beaucoup plus propre que la méthode que tu utilises et, chose bien pratique, si la variable $Login contient une quote, avec la méthode que je viens de donner, elle est automatiquement *backslashée* si je puis m'exprimer ainsi, contrairement à ta méthode où il risque d'y avoir une erreur SQL
J'aimerais savoir si c'est propre ou non. En tout cas ca fonctionne. Merci. (en principe j'ai fini mes questions de la journée :o)