problème utilisation procedure stockée
Bonjour,
Je travail sous sqlserver2005 express et php.
J'ai une page php à partir de laquelle j'appel plusieurs procédure stockée. et malheuresement j'ai le message d'erreur suivant que je ne comprend pas :
Code:
Warning: odbc_do(): SQL error: [Microsoft][ODBC SQL Server Driver]La connexion est occupée avec les résultats d'un autre hstmt, SQL state S1000 in SQLExecDirect in c:\program files\easyphp1-8\www\jeuxvideo\jeuxvideo_admin\gestionstock.php on line 138
Pour vous montrer voici un bout de code php :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| $req="SP_NBJEUENATTENTEDERECEPTION_JEUX_VIDEO";
$resultat=odbc_do($connection,$req);
$vide = odbc_fetch_into($resultat,$fis);
if ($vide=="0")
{
echo 'Aucune commande en cours';
}
else
{
$req="SP_LISTEJEUENATTENTEDERECEPTION_JEUX_VIDEO ";
$resultat=odbc_do($connection,$req);
echo '<table border=0 ><tr bgcolor=#003366><td>Nom du Jeu</td><td>Console</td><td>Stock actuel</td><td>Quantité commander</td><td>Reçu</td></tr>';
$Compteur2 = 0;
while (odbc_fetch_row($resultat))
{
$idjv=odbc_result($resultat, 'jv_id');
$nomjv=odbc_result($resultat, 'jv_nom');
$qtejv=odbc_result($resultat, 'jv_qte');
$qtecommander=odbc_result($resultat, 'jv_qtecmd');
$console=odbc_result($resultat, 'con_nom');
$Compteur2++;
echo '<tr><td>'.$nomjv.' </td><td>'.$console. '</td>
<td><input type=text readonly=readonly name=qteactuel'.$Compteur2.' value='.$qtejv.' /></td>
<td><input type=text readonly=readonly name=qte'.$Compteur2.' value='.$qtecommander.'></td>';
echo '<td><input type=checkbox name=recu'.$Compteur2.' value="'.$idjv.'"</td>
</tr>';
} |
ps : la ligne 138 correspond au $resultat juste apres l'appel de la 2eme procedure stockée
Merci de votre aide
TRANSACTION sql serve 2005
Bonjour,
Je demande votre aide car je n'y arrive decidement pas.
Cette transaction dois regrouper 2 requetes (2 insert into).
Malheuresement j'ai le message d'erreur suivant, que je n'arrive pas a resoudre :
Code:
Warning: odbc_do(): SQL error: [Microsoft][ODBC SQL Server Driver][SQL Server]Le identificateur qui commence par 'CREATION_COMMANDEbeginSP_CREER_COMMANDE' est trop long. La longueur maximale est 32., SQL state 37000 in SQLExecDirect in c:\program files\easyphp1-8\www\pti_jv_admin_clients\jeuxvideo_clients\panier_4.php on line 184
Et voici un extrait de mon code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| //TRANSACTION
$createcmd = "BEGIN TRANSACTION CREATION_COMMANDE"; //On démarre une transaction et on lui donne un nom
$createcmd .= "begin";
$createcmd .= "SP_CREER_COMMANDE '$idclient', '$datecmd', '$tot', '$liv' ";
//$rs=odbc_do($connection,$createcmd);
if ($createcmd)
{
// recupération de l'id de la commande par rapport
// au numéro client et à la dernière de ses commandes
$riq = "SP_RECUPCMD_COMMANDE '$idclient' ";
$rik=odbc_do($connection,$riq);
odbc_fetch_into($rik,$fiis);
$NumCd=$fiis[0];
foreach ($panier as $valeur=>$cde)
{
$sql15 = "SP_INFOJEU_JEUX_VIDEO '$valeur' ";
$req15=odbc_do($connection,$sql15);
// recupération du stck d'un produit
$stck=odbc_result($req15,'jv_qte');
$nbVente=odbc_result($req15,'jv_nbvente');
$newNbVente= $nbVente + $cde;
$newstock = $stck - $cde;
//mise à jour du stock
$udstock= "SP_MAJSTOCK_JEUX_VIDEO '$newstock', '$newNbVente', '$valeur' ";
$rudstock=odbc_do($connection,$udstock);
if($rudstock)
{
$createcmd.="SP_CREERARTICLECMD_LIGNECOMMANDE '$NumCd', '$valeur', '$cde' ";
$rsILS=odbc_do($connection,$createcmd);
if ($rsILS)
{
$createcmd .= " COMMIT TRANSACTION CREATION_COMMANDE "; //On commit la transaction
echo "<SCRIPT LANGUAGE='JavaScript'>alert('Votre commande à bien été prise en compte.');</SCRIPT> ";
echo " <h3 align=center>Votre commande à bien été prise en compte.<br/> <a href=ResumerCommande.php class=type1> Voir le résumer de la commande</a></h3>";
echo '<script language="javascript">document.location.href = "ResumerCommande.php"</script>';
$_SESSION['RefCmd']= $NumCd;
unset($_SESSION['panier']);
}// si il y a eu des erreurs
else
{
echo 'Une erreure est survenue';
$createcmd .= " ROLLBACK TRANSACTION CREATION_COMMANDE "; //On annule tous les changements de cette transaction
}
//FIN TRANSACTION
}
else
{
echo 'Une erreure est survenue';
}
}
} |
Merci pour votre aide