• 1 رای - 3 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
خروجی برنامه ام 4 جواب دارد
#1
در اسکریپت سایتم می خواهم یک فرایند چند بار (مثلا 4 بار) تکرار شود ولی مشکلی که وجود دارد بجای اجرای یکی از این فرایند تمامی فرایند ها تکرار می شود.

کد تابعی که چند بار تکرار شده است

کد پی‌اچ‌پی:
function PaymentWasSuccessfully1()
 {
 
$payer_email $_SESSION['user_email'];
 
$item_number $_SESSION['item_id'];
 
$Service $_SESSION['service'];
 
$phone $_SESSION['user_phone'];
 
$dataJSON json_decode(file_get_contents('./includes/Inc/paymentClass/' $Service '/info.json'));
 if (
$dataJSON->{'Back_TYPE'} == 'POST') {
 
$RefID $_POST[$dataJSON->{'Back_TAG'}];
 } else if (
$dataJSON->{'Back_TYPE'} == 'GET') {
 
$RefID $_GET[$dataJSON->{'Back_TAG'}];
 }
 
$row mysql_fetch_array(mysql_query("SELECT * FROM `items1` WHERE `id`='" $item_number "'"));
 
$web mysql_fetch_array(mysql_query("SELECT * FROM `settings`"));
 
$web_admin mysql_fetch_array(mysql_query("SELECT * FROM `admins`"));
 
$payment_amount $row['price'];
 
$update mysql_query("UPDATE settings SET earnings=earnings+$payment_amount");
 
$update mysql_query("UPDATE items1 SET sales=sales+1 WHERE id='$item_number'");
 
$time time();
 
$insert mysql_query("INSERT buyers1 (service,item_id,buyer_email,buyer_phone,authority,time)
 VALUES ('
$Service','$item_number','$payer_email','$phone','$RefID','$time')");
 
$SMS_THEME_BUY str_replace(array(
 
"[SITE_NAME]",
 
"[SITE_URL]",
 
"[ITEM_NAME]",
 
"[EMAIL_BUYER]",
 
"[PHONE_BUYER]"
 
), array(
 
$web['sitename'],
 
$web['url'],
 
$row['name'],
 
$payer_email,
 
$phone
 
), $web['SMS_THEME_BUY']);
 echo 
SmsSender($phone$SMS_THEME_BUY);
 
$array_str = array(
 
"[SITE_URL]",
 
"[ITEM_NAME]",
 
"[ITEM_Authority]",
 
"[ITEM_DOWNLOAD_LINK]"
 
);
 
$array_replace = array(
 
$web,
 
$row[name],
 
$RefID,
 
$web 'download/' $email_code '/email=' $payer_email
 
);
 
$message str_replace($array_str$array_replacebase64_decode($web[etheme]));
 
$mail = new PHPMailer();
 
$mail->setFrom('[email protected]');
 
$mail->addAddress($payer_email);
 
$mail->Subject $web[sitename] . ' - دانلود محصول "' $row['name'] . '"';
 
$mail->msgHTML($message);
 
$mail->addAttachment($row['main_file']);
 if (!
$mail->send()) {
 echo 
"Mailer Error: " $mail->ErrorInfo;
 } else {
 
$_SESSION['PaymentWasSuccessfully_Authority'] = $RefID;
 
header("Location: $webCheckPayment");
 }
 } 

کد تابع PaymentWasSuccessfully2,3,4 مانند بالاست بااین تفاوت که 'items1'و 'buyers1' تغییر می کنند

اما کدی که باید این فرایند را بررسی کند

کد پی‌اچ‌پی:
<?php
 
if (isset($_SESSION['payment_error'])) {
 echo 
'پرداخت موفق آمیز نبود !';
if (empty(
$_SESSION['PAYMENT_ERR_MSG'])) {
 echo 
error("به دلیل نا معلومی تراکنش با خطا مواجه شده است .");
 } else {
 echo 
error($_SESSION['PAYMENT_ERR_MSG']);
 unset(
$_SESSION['PAYMENT_ERR_MSG']);
 }
 unset(
$_SESSION['payment_error']);
 } elseif (isset(
$_SESSION['PaymentWasSuccessfully_Authority']) && isset($_SESSION['user_email']) && isset($_SESSION['item_name'])) {
 echo 
PaymentWasSuccessfullyMsg();
 }else {
 if (!
PaymentTrue($_SESSION['service'], 'true')) {
 echo 
error("سروریس پرداختی از طرف سرور تایید نشد . با مدیر سایت تماس بگیرید .");
 } else {
 include 
'includes/Inc/paymentClass/' $_SESSION['service'] . '/' $_SESSION['service'] . '.php';
 if (
PaymentFunc('''verify') == true) {
 
PaymentWasSuccessfully1();
 
PaymentWasSuccessfully2();
 
PaymentWasSuccessfully3();
 
PaymentWasSuccessfully4();
 } else {
 
$_SESSION['payment_error'] = 'ERR';
 
header("Location: $webCheckPayment");
 }
 }
 }
 
?>
مشکلم در این بخش از کد است
کد پی‌اچ‌پی:
if (PaymentFunc('''verify') == true) {
 
PaymentWasSuccessfully1();
 
PaymentWasSuccessfully2();
 
PaymentWasSuccessfully3();
 
PaymentWasSuccessfully4();
 } 
هدف اینست خروجی مورد نظر یک جواب داشته باشد
  پاسخ
تشکر شده توسط :
#2
1- کد شما (و ظاهراً شیوه کد نویسیت) Indent نداره و بسختی خونده میشه، اونم با اون شروط تودرتو. اصلاحش کن که بتونیم بخونیمش
2- اون فرایند چی هست؟ توابع PaymentWasSuccessfully 1-2-3-4 هه؟
3- تابع PaymentFunc حاویه چه کدهاییه؟ می شه بزایش اینجا؟
4- بهتر نیست بجای ساخت 4 تابع شبیه هم(PaymentWasSuccessfully)، یک تابع بنویسی و توسط پارامتر های ورودیش items1 و buyers1 رو اعمال کنی؟
وبلاگ: Yousha.Blog.ir


کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بیشتر => نگهداری بهتر
  پاسخ
تشکر شده توسط : Alaa
#3
اصلاحش کردم و مشکلم حل شد
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان