$erreur = "erreur dans l ajout du client :" .mysqli_error($lien);
include 'erreur.html.php';
exit();
}
header('Location: http://127.0.0.1/gescompt/listeclients.php', true, 303);
exit();
}
?>
<?php
function changedatefrus($datefr)
{
$dateus=$datefr{6}.$datefr{7}.$datefr{8}.$datefr{9}."-".$datefr{3}.$datefr{4}."-".$datefr{0}.$datefr{1};
return $dateus;
}
?>
je ne sais pas comment faire quelqu'un peut il m'aider ???
aureliemerlin
Messages postés82Date d'inscriptionjeudi 24 juin 2010StatutMembreDernière intervention17 avril 2013 5 janv. 2011 à 15:29
merci pour votre réponse
voici le code modifié :
if (!mysqli_query($lien, $sql))
{
$erreur = "erreur dans l ajout du client :" .mysqli_error($lien);
include 'erreur.html.php';
exit();
}
//header('Location: http://127.0.0.1/gescompt/listeclients.php', true, 303);
// trouve id de la ligne ajoutée...
$id = mysql_insert_id(Num);
// affiche...
$sql 'INSERT INTO bdenfants set NumCli "'.$id .'"';
if (!mysqli_query($lien, $sql))
{
$erreur = "erreur dans l ajout des enfants :" .mysqli_error($lien);
include 'erreur.html.php';
exit();
}
exit();
}
mais lorsque je l'exécute j'arrive bien à créer une ligne mais je récupére 0 au lieu du dernier numéro
Morphinof
Messages postés255Date d'inscriptionvendredi 20 avril 2007StatutMembreDernière intervention 9 août 20134 5 janv. 2011 à 16:59
mysql_insert_id retourne false soit 0 en cas d'echec, ca dois venir de la connexion mysql que tu lui a transmi ici ton parametre $Num ne dois pas etre une resource sql valide, verifier avec un var_dump($Num)
TychoBrahe
Messages postés1309Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention 5 juin 201312 6 janv. 2011 à 09:55
Salut,
mysql_insert_id retourne false soit 0 en cas d'echec, ca dois venir de la connexion mysql que tu lui a transmi ici ton parametre $Num ne dois pas etre une resource sql valide, verifier avec un var_dump($Num)
Non. La documentation est très explicite à ce sujet : en cas de connexion foireuse c'est false qui est retourné, 0 c'est uniquement si la requête est bien passée mais que aucune valeur n'a précédemment été générée par AUTO_INCREMENT.
Enfin bref, vu que Aurélie ne nous dit pas comment elle à affiché le résultat, on peut penser que false ait été transformé en sa valeur numérique (donc 0) pour s'afficher, si c'est le cas il existe bien un problème au niveau de la connexion avec MySQL.
Une fois que l'on a écarté tout soucis de connexion, on peux se pencher sur le second problème : personne en semble avoir remarqué qu'Aurélie utilises les fonctions de la famille de mysqli et non mysql. Bien que travaillant toutes deux sur MySQL, ces deux familles de fonctions n'interagissent pas entre elles, ce qui fait que mysql_insert_id() ne peux pas prendre en compte les requêtes effectuées avec mysqli_query(). Bref, pour continuer à utiliser mysqli il faut donc utiliser l'équivalent de mysqli_query() pour cette famille, équivalent qui est mysqli_insert_id().
Une fois ce remplacement effectué, si mysqli_insert_id() ne retourne pas ce que l'on veux il faudra alors se pencher sur la structure de la table ainsi que sur la requête qui a inséré la dernière entrée.
Vous n’avez pas trouvé la réponse que vous recherchez ?
if (!mysqli_query($lien, $sql))
{
$erreur = "erreur dans l ajout du client :" .mysqli_error($lien);
include 'erreur.html.php';
exit();
}
//header('Location: http://127.0.0.1/gescompt/listeclients.php', true, 303);
// trouve id de la ligne ajoutée...
$id = mysqli_insert_id(Num);
echo $id
// affiche...
$sql 'INSERT INTO bdenfants set NumCli "'.$id .'"';
if (!mysqli_query($lien, $sql))
{
$erreur = "erreur dans l ajout des enfants :" .mysqli_error($lien);
include 'erreur.html.php';
exit();
}
exit();
}
?>
<?php
function changedatefrus($datefr)
{
$dateus=$datefr{6}.$datefr{7}.$datefr{8}.$datefr{9}."-".$datefr{3}.$datefr{4}."-".$datefr{0}.$datefr{1};
return $dateus;
}
?>
et voici la structure de ma table bdclient :
Num int(11) Non Aucun AUTO_INCREMENT
CodeCom varchar(50) utf8_general_ci Oui NULL
NomEmp varchar(100) utf8_general_ci Oui NULL
....
Num BTREE Oui Non Num 173 A
faut il toute la table ????
voila
TychoBrahe
Messages postés1309Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention 5 juin 201312 10 janv. 2011 à 20:07
Salut,
$id = mysqli_insert_id(Num);
Avant d'utiliser une fonction regarde la documentation à son sujet, ça évitera ce genre d'erreur bête (et sur laquelle des remarques ont déjà été faites par d'autres personnes). Bref, ce n'est pas le nom du champ que tu dois passer mais le lien mysqli :
Dans la variable $DatNaisEmp tu affecte la valeur du champ DatNaisEmp.
Tu vérifie que la variable ne soit pas vide ou NULL.
Si tel est le cas, tu affecte NULL à ta variable.
Sinon, tu prend la valeur de la variable $DatNaisEmp que tu réaffecte à la même variable $DatNaisEmp.
Et c'est surtout là, que j'ai du mal à te suivre !
Concernant la condition de vérification du contenu de la variable, je peut comprendre que tu souhaite systématiquement affecter la valeur NULL pour une valeur équivalente à 0 ou "0" ... Pourquoi réaffecter une valeur contenu dans une variable dans la même variable ? Cette dite variable contient déjà la valeur.
Il n'est donc pas nécessaire de réaffecter à la même variable sa propre valeur. Enfin je crois ?
aureliemerlin
Messages postés82Date d'inscriptionjeudi 24 juin 2010StatutMembreDernière intervention17 avril 2013 11 janv. 2011 à 11:25
[size=100]bonjour
merci pour vos réponses
cela fonctionne en mettant mysqli_insert_id($lien)
une fois que j'ai insérer la ligne dans ma table je voudrais récupérer l'identifiant de la ligne que je viens d'insérer mais je récupère 0
voici le code :
// trouve id de la ligne ajoutée dans la table client
$id = mysqli_insert_id($lien);
//boucle permettant de creer 4 lignes dans la table enfants
$compteur = 1;
while ($compteur <=4)
{
$sql 'INSERT INTO bdenfants set NumCli "'.$id .'", Commercial = "' .$CodeCom .'"';
if (!mysqli_query($lien, $sql))
{
$erreur = "erreur dans l ajout des enfants :" .mysqli_error($lien);
include 'erreur.html.php';
exit();
}
++$compteur;
}
//creation d une ligne dans la table operations
$sql 'INSERT INTO bdoperations set NumCli "'.$id .'", CodeCom = "' .$CodeCom .'"';
if (!mysqli_query($lien, $sql))
{
$erreur = "erreur dans l ajout des operations :" .mysqli_error($lien);
include 'erreur.html.php';
exit();
}
$idnum = mysqli_insert_id($lien);
//boucle permettant de creer 5 lignes dans la table pret
$compteur = 1;
while ($compteur <=5)
{
$sql 'INSERT INTO bdpret set NumCli "'.$id .'", CodeCom = "' .$CodeCom .'", NumOp = "' .idnum .'"';
if (!mysqli_query($lien, $sql))
{
$erreur = "erreur dans l ajout des enfants :" .mysqli_error($lien);
include 'erreur.html.php';
exit();
}
++$compteur;
}
//boucle permettant de creer 3 lignes dans la table patrimoine
$compteur = 1;
while ($compteur <=3)
{
$sql 'INSERT INTO bdpatrimoine set NumCli "'.$id .'", CodeCom = "' .$CodeCom .'", NumOp = "' .idnum .'"';
if (!mysqli_query($lien, $sql))
{
$erreur = "erreur dans l ajout des enfants :" .mysqli_error($lien);
include 'erreur.html.php';
exit();
}
++$compteur;
}
je ne comprend pas pourquoi je ne récupère pas la bonne valeur