🚀 Hostinger Optimized
🖥️ Server: LiteSpeed
💻 System: Linux in-mum-web1643.main-hosting.eu 5.14.0-687.46.1.el9_8.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Sep 11 09:03:19 EDT 2026 x86_64
👤 User: u621169360 (621169360)
🐘 PHP: 8.2.33
🚫 Disabled: system, exec, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail

💻 Terminal

📁 /home/u621169360/domains/agriexpertt.com/public_html
$

📄 question_add.php

📁 Path: /home/u621169360/domains/agriexpertt.com/public_html/mobile/Flutter/question_add.php
📊 Size: 4.75 KB
🔒 Perm: 0644
📝 MIME: text/x-php
<?php

// Enable error reporting for debugging
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// Enable CORS headers
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST");
header("Access-Control-Allow-Headers: Content-Type");

require_once 'db.php';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Start a database transaction
    $pdo->beginTransaction();

    try {
        $baseUploadDir = "assets/uploads/photos/";

        function uploadPhoto($fieldName, $baseUploadDir) {
            if(isset($_FILES[$fieldName]) && $_FILES[$fieldName]['error'] == UPLOAD_ERR_OK) {
                $tmpName = $_FILES[$fieldName]['tmp_name'];
                $originalFileName = basename($_FILES[$fieldName]['name']);
                
                // Generate MD5 hash using the original file name and current date-time
                $encryptedFileName = md5($originalFileName . date('Y-m-d H:i:s')) . "." . pathinfo($originalFileName, PATHINFO_EXTENSION);
                
                // Create year, month, and date directories
                $targetDir = $baseUploadDir . date('Y/m/d/');
                if (!is_dir($targetDir)) {
                    mkdir($targetDir, 0777, true);
                }
                $targetFilePath = $targetDir . $encryptedFileName;

                if(move_uploaded_file($tmpName, $targetFilePath)) {
                    return $targetFilePath; // Return the full path for storage in the database
                } else {
                    throw new Exception("Error uploading file: " . $fieldName);
                }
            }
            return null;
        }

        // Create an array for uploaded photos
        $photos = [];
        for ($i = 0; $i < 5; $i++) {
            $photos["question_photo_" . ($i + 1)] = uploadPhoto('image' . $i, $baseUploadDir);
        }

        $data = [
            'question_cat' => $_POST['question_cat'],
            'question_subcat' => $_POST['question_subcat'],
            'question_cus_name' => $_POST['question_cus_name'],
            'question_cus_mobile' => $_POST['question_cus_mobile'],
            'question_cus_id' => $_POST['question_cus_id'],
            'question_age_no' => $_POST['question_age_no'],
            'question_age_period' => $_POST['question_age_period'],
            'question_question_description' => $_POST['question_question_description'],
            'status' => 'Pending'
        ];
        
        $data = array_merge($data, $photos); // Add the photo data to the main data array

        // First, check and decrement questions left
        $mobileNumber = $_POST['question_cus_mobile'];
        $checkMembershipStmt = $pdo->prepare("
            SELECT id, mem_question_left 
            FROM membership 
            WHERE mem_mobile = :mobile 
            AND mem_end_date >= CURDATE() 
            AND mem_question_left > 0
        ");
        $checkMembershipStmt->execute(['mobile' => $mobileNumber]);
        $membership = $checkMembershipStmt->fetch(PDO::FETCH_ASSOC);

        if (!$membership) {
            throw new Exception("No active membership or no questions left");
        }

        // Decrement questions left
        $updateQuestionsStmt = $pdo->prepare("
            UPDATE membership 
            SET mem_question_left = mem_question_left - 1 
            WHERE id = :id
        ");
        $updateQuestionsStmt->execute(['id' => $membership['id']]);

        // Insert the question
        $sql = "INSERT INTO questions (question_cat, question_subcat, question_cus_name, question_cus_mobile, question_cus_id, question_age_no, question_age_period, question_question_description, question_photo_1, question_photo_2, question_photo_3, question_photo_4, question_photo_5, status)
                VALUES (:question_cat, :question_subcat, :question_cus_name, :question_cus_mobile, :question_cus_id, :question_age_no, :question_age_period, :question_question_description, :question_photo_1, :question_photo_2, :question_photo_3, :question_photo_4, :question_photo_5, :status)";
        
        $stmt = $pdo->prepare($sql);
        $stmt->execute($data);
        
        // Commit the transaction
        $pdo->commit();

        // Prepare response with remaining questions
        $response = [
            'status' => 'success',
            'message' => 'Question added successfully',
            'questionsLeft' => $membership['mem_question_left'] - 1
        ];
        
        echo json_encode($response);
    } catch(Exception $e) {
        // Rollback the transaction in case of error
        $pdo->rollBack();

        // Prepare error response
        $response = [
            'status' => 'error',
            'message' => $e->getMessage()
        ];
        
        echo json_encode($response);
        exit;
    }
}
?>
← Back📥 Raw✏️ Edit🔒 Chmod
✨ File Manager Magic ✨