echo mysql_error().$req; $req="insert into Discussion (sujet,intitule,auteur,dest) value ('$lapin','$intitule',$idAok,".$ids[0].");insert into Message value (null,'$intitule','$texte',LAST_INSERT_ID(),$auteur);COMMIT"; */ //pour rechercher l'id de l'insertion il faut savoir depuis quand l'insertion s'est faite $req = "select now()"; $date = requete_champ_unique($req); echo "{$req} " . mysql_error(); $req = "insert into `{$prefixe}Discussion` (sujet,intitule,auteur,dest) value ('{$lapin}','{$intitule}',{$idAok}," . $ids[0] . ")"; echo "{$req} "; $res = requete($req); if (mysql_errno()) { echec("{$res} erreur : " . mysql_error() . $req); } //puisqu'on ne peut garantir qu'il n'y a pas eu d'autre insertion entre les deux, LAST_INSERT_ID() ne peut être utilisée //on recherche donc la discussion créée avec ces paramètres depuis quelques secondes; $req = "select id_disc from `{$prefixe}Discussion` where sujet='{$lapin}' and intitule='{$intitule}' and auteur={$idAok} and dest=" . $ids[0] . " and date>='{$date}'"; echo "{$req} "; $id_d = requete_champ_unique($req); //Rq : il ne faut SURTOUT PAS tenter d'affecter un retour en comparant ave une valeur : $var=fonction()==null ne met pas le résultat de fonction dans var mais rien (pas même false ou true apparemment) ! if ($id_d == null) { echec("erreur : " . mysql_error() . $req); } echo $id_d; $req = "insert into `{$prefixe}Message` value (null,'{$intitule}','{$texte}',NOW(), {$id_d}, {$auteur})"; // $req=mysql_real_escape_string($req); echo "{$req} "; if (requete($req) == null) { echo "discussion lancée !"; } else { echec("erreur : " . mysql_error() . $req); } echo "fin";
* - PMA ne tient pas compte de la transaction, malgré le paramètre persistent, et commit de suite * - la ligne de commande pas mieux, que ce soit begin, start transaction ou set autocommit=0 ! * * il n'est donc pas possible de définir des transactions et des requêtes de source différentes peuvent interférer entre elles ! * * mysql_query("SET AUTOCOMMIT=0"); * $req=" BEGIN"; * */ //pour rechercher l'id de l'insertion il faut savoir depuis quand l'insertion s'est faite $req = "select now()"; $date = requete_champ_unique($req); $req = "insert into `{$prefixe}Discussion` (sujet,intitule,auteur,dest) value (" . $ids[1] . ",'{$intitule}',{$idAok}," . $ids[1] . ")"; $res = requete($req); if (mysql_errno() > 0) { echec("{$res} erreur lors de la création de la discussion."); } //puisqu'on ne peut garantir qu'il n'y a pas eu d'autre insertion entre les deux, LAST_INSERT_ID() ne peut être utilisée //on recherche donc la discussion créée avec ces paramètres depuis quelques secondes; $req = "select id_disc from `{$prefixe}Discussion` where sujet='" . $ids[1] . "' and intitule='{$intitule}' and auteur={$idAok} and dest=" . $ids[1] . " and date>='{$date}'"; $id_d = requete_champ_unique($req); //Rq : il ne faut SURTOUT PAS tenter d'affecter un retour en comparant ave une valeur : $var=fonction()==null ne met pas le résultat de fonction dans var mais rien (pas même false ou true apparemment) ! if ($id_d == null || trim($id_d) == "") { echec("erreur : discussion introuvable. Sans doute non créée."); } $req = "insert into `{$prefixe}Message` value (null,'{$intitule}','{$texte}',NOW(), {$id_d}, {$auteur})"; requete($req); if (mysql_errno() == 0) { header("Location: ../../index.php?page=messagerie"); } else { echec("erreur lors de la création du message d'ouverture."); }