PHP probleme avec une clé primaire
Résolu/Fermé
Flipmode
-
19 mars 2008 à 10:19
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 19 mai 2008 à 11:21
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 19 mai 2008 à 11:21
A voir également:
- PHP probleme avec une clé primaire
- Clé windows 10 gratuit - Guide
- Cle usb non reconnu - Guide
- Clé bootable windows 10 - Guide
- Télécharger microsoft office 2010 avec clé d'activation gratuit - Télécharger - Sécurité
- Recuperer cle windows - Guide
11 réponses
Utilisateur anonyme
19 mars 2008 à 15:11
19 mars 2008 à 15:11
Les 2 liens ci-dessous valent mieux que de longs discours ;-) :
https://www.php.net/mysql_fetch_array
https://www.php.net/mysql_fetch_row
Dans un cas le select te retourne plusieurs lignes (donc tu fais une boucle) --> mysql_fetch_array
Dans l'autre le select ne te ramène qu'une ligne (pas de boucle) --> mysql_fetch_row
https://www.php.net/mysql_fetch_array
https://www.php.net/mysql_fetch_row
Dans un cas le select te retourne plusieurs lignes (donc tu fais une boucle) --> mysql_fetch_array
Dans l'autre le select ne te ramène qu'une ligne (pas de boucle) --> mysql_fetch_row
Utilisateur anonyme
19 mars 2008 à 10:36
19 mars 2008 à 10:36
Pourquoi la clé primaire ne peut pas être incrémentée automatiquement, c'est une obligation ou c'est parce que tu ne sais pas faire ?
Exemple de table avec Auto incrément :
Si tu ne peux pas modifier ta table alors il ne te reste qu'a faire une requête sur ta table en récupérant le MAX(COLONNE) et ensuite tu insères avec le résultat du SELECT + 1.
Exemple de table avec Auto incrément :
CREATE TABLE animals ( id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (id) ); INSERT INTO animals (name) VALUES ('dog'),('cat'),('penguin'), ('lax'),('whale'),('ostrich') +----+---------+ | id | name | +----+---------+ | 1 | dog | | 2 | cat | | 3 | penguin | | 4 | lax | | 5 | whale | | 6 | ostrich | +----+---------+
Si tu ne peux pas modifier ta table alors il ne te reste qu'a faire une requête sur ta table en récupérant le MAX(COLONNE) et ensuite tu insères avec le résultat du SELECT + 1.
Merci pour ta réponse.
Je sais incrémenter automatiquement la clé primaire d'une table. C'est une obligation car la table peut est modifiée a partir d'autres tables... je ne vais pas tout expliquer dans le détails car ça serait trop long et trop compliqué. Mais dans tous les cas, je ne peux pas utiliser une clé primaire auto-incrémentée.
Je vais essayer de faire ce que tu m'as dit :
Si tu ne peux pas modifier ta table alors il ne te reste qu'a faire une requête sur ta table en récupérant le MAX(COLONNE) et ensuite tu insères avec le résultat du SELECT + 1.
Et si je n'y arrive pas, je laisserai un post ici
Merci pour ton aide
Flipmode
Je sais incrémenter automatiquement la clé primaire d'une table. C'est une obligation car la table peut est modifiée a partir d'autres tables... je ne vais pas tout expliquer dans le détails car ça serait trop long et trop compliqué. Mais dans tous les cas, je ne peux pas utiliser une clé primaire auto-incrémentée.
Je vais essayer de faire ce que tu m'as dit :
Si tu ne peux pas modifier ta table alors il ne te reste qu'a faire une requête sur ta table en récupérant le MAX(COLONNE) et ensuite tu insères avec le résultat du SELECT + 1.
Et si je n'y arrive pas, je laisserai un post ici
Merci pour ton aide
Flipmode
J'ai testé le INSERT INTO table VALUES ((SELECT MAX(id) + 1 FROM table), valeur1, valeur2, ...) et ça ne marche pas donc je vais devoir faire ça en 2 requêtes
Mais je galère un peu :
$sql = "SELECT int_product_id FROM tb_product ORDR BY int_product_id DESC LIMIT 1";
$result_sql = mysql_query($sql);
$row = mysql_fetch_array($result_sql);
$max_id = $row[0];
$add = "INSERT INTO tb_product (int_product_id,var_product_name,) VALUES ('$max_id + 1','$name')";
....
Il m'insère bien une nouvelle ligne dans ma table mais avec l'id=0 :(
Toutes les nouvelles lignes que j'insere ont int_product_id=0
Le $max_id + 1 dans ma requete SQL ne marche pas!
J'ai essaye de faire $max_id = $row[0] +1; mais toutes les nouvelles lignes ont int_product_id=1
Merci pour votre aide
Flipmode
Mais je galère un peu :
$sql = "SELECT int_product_id FROM tb_product ORDR BY int_product_id DESC LIMIT 1";
$result_sql = mysql_query($sql);
$row = mysql_fetch_array($result_sql);
$max_id = $row[0];
$add = "INSERT INTO tb_product (int_product_id,var_product_name,) VALUES ('$max_id + 1','$name')";
....
Il m'insère bien une nouvelle ligne dans ma table mais avec l'id=0 :(
Toutes les nouvelles lignes que j'insere ont int_product_id=0
Le $max_id + 1 dans ma requete SQL ne marche pas!
J'ai essaye de faire $max_id = $row[0] +1; mais toutes les nouvelles lignes ont int_product_id=1
Merci pour votre aide
Flipmode
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
19 mars 2008 à 11:34
19 mars 2008 à 11:34
$query = "SELECT MAX(int_product_id) FROM tb_product";
$result = mysql_query($query) or die ("Exécution de la requête impossible");
$row = mysql_fetch_row($result);
echo $row[0];
Cette requête doit être effectuée à chaque fois avant insertion.
$result = mysql_query($query) or die ("Exécution de la requête impossible");
$row = mysql_fetch_row($result);
echo $row[0];
Cette requête doit être effectuée à chaque fois avant insertion.
Un grand merci pour ton aide
Mon problème est résolu :)
Voici le code que j'ai utilisé:
$max_id=0;
$query = "SELECT MAX(int_product_id) FROM tb_product";
$result = mysql_query($query) or die ("Exécution de la requête impossible");
$row = mysql_fetch_row($result);
$max_id = $row[0] + 1;
$add = "INSERT INTO tb_product (int_product_id,var_product_name,) VALUES ('$max_id','$name')";
Flipmode
Mon problème est résolu :)
Voici le code que j'ai utilisé:
$max_id=0;
$query = "SELECT MAX(int_product_id) FROM tb_product";
$result = mysql_query($query) or die ("Exécution de la requête impossible");
$row = mysql_fetch_row($result);
$max_id = $row[0] + 1;
$add = "INSERT INTO tb_product (int_product_id,var_product_name,) VALUES ('$max_id','$name')";
Flipmode
Dernière question :
C'est quoi la différence entre $row = mysql_fetch_row($result); et $row = mysql_fetch_array($result);
Merci
Flipmode
C'est quoi la différence entre $row = mysql_fetch_row($result); et $row = mysql_fetch_array($result);
Merci
Flipmode
Bonjour
Dans un cas le select te retourne plusieurs lignes (donc tu fais une boucle) --> mysql_fetch_array
Dans l'autre le select ne te ramène qu'une ligne (pas de boucle) --> mysql_fetch_row
Si j'ose m'en mêler.. le choix entre mysql_fetch_array et mysql_fetch_row n' a *aucun* rapport avec le fait que select retourne une ou plusieurs lignes. Effectivement, il vaut mieux aller voir les liens indiqués.
Dans un cas le select te retourne plusieurs lignes (donc tu fais une boucle) --> mysql_fetch_array
Dans l'autre le select ne te ramène qu'une ligne (pas de boucle) --> mysql_fetch_row
Si j'ose m'en mêler.. le choix entre mysql_fetch_array et mysql_fetch_row n' a *aucun* rapport avec le fait que select retourne une ou plusieurs lignes. Effectivement, il vaut mieux aller voir les liens indiqués.
Bonjour
Je suis debutant en php, si vous pourriez me donne un exemple de codes qui permettent
d'inserer les donnees dans une table a partir d'un formulaire. j'utilise easyPH pour apprendre le php mais je n'arrive pas
a inserer avec un formulaire.si vous pouvez me donner un ex.avec un formulaire contenant plus de 4 textbox et un bouton pour evoyer
Je suis debutant en php, si vous pourriez me donne un exemple de codes qui permettent
d'inserer les donnees dans une table a partir d'un formulaire. j'utilise easyPH pour apprendre le php mais je n'arrive pas
a inserer avec un formulaire.si vous pouvez me donner un ex.avec un formulaire contenant plus de 4 textbox et un bouton pour evoyer
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
19 mai 2008 à 11:21
19 mai 2008 à 11:21
Bonjour ,
Merci de poster ton message dans un nouveau sujet.
Merci de poster ton message dans un nouveau sujet.