Yükleniyor..

PHP Çoklu Tablo Ekleme İşlemi [Çözüldü]

Hata : Müşteri ve şoför veri tabanında kendi tablolarında aratılıyor. Eğer isimle eşleşen kimse yoksa yani $count adındaki değişkenimiz 0 ise ekleme işlemi yapıyoruz. Fakat burada $count denetlemesi için yazdığımız if hatalı. Benim yazmış olduğum if denetlemesi if($count === 0) şeklinde. Bu şekilde yazmak yerine if($count == 0) veya if($count === "0") şeklinde yazmam lazımdı.

PHP Çoklu Tablo Ekleme İşlemi
PHP'de bir projemde veri tabanına iş eklemesi yapıyorum. Bu iş ekleme sırasında 3 tabloda işlem yaptırıyorum :

1 - İşler veri tabanına işin tamamını ekliyorum.
2 - İşe eklenen şoför veri tabanında yok ise şoförü ekletiyorum.
3 - İşe eklenen müşteri veri tabanında yok ise müşteriyi ekletiyorum.

Bu 3 işlemi localhost'ta aynı "POST" işleminde yapabiliyorum fakat projeyi web sitesine yüklediğimde sadece 1. İşlem olan işin tamamını eklemeyi yapıyor.

Kodun İşleyişi:

- Kodun işleyişi , öncelikle gerekli iş bilgilerini normal dolduruyoruz.

- Sonrasında ilk önce jobs adında bir tabloya bu işi ekliyoruz.

- jobs klasörüne bilgiler başarılı bir şekilde eklendikten sonra şoför bölümünde yazılan isim eğer drivers adındaki tabloda bulunmuyorsa , bu yazdığımız ismi ekliyoruz. Eğer bu isim zaten ekliyse bu işlemi yaptırmıyoruz.

- Aynı şekilde jobs klasörüne bilgiler başarılı bir şekilde eklendikten sonra müşteri bölümünde yazılan isim eğer passengers adındaki tabloda bulunmuyorsa , bu yazdığımız ismi ekliyoruz. Eğer bu isim zaten ekliyse bu işlemi yaptırmıyoruz.

- Örneğin işi ekliyorum ve Şoför kısmına "Ömer İslamoğlu" yazdım.

- jobs adındaki tabloda girilen bilgiler başarılı bir şekilde eklendikten sonra "Ömer İslamoğlu" şoförünü drivers tablosunda aratıyorum.

- Eğer şoförü bulamazsa drivers tablosuna "Ömer İslamoğlu" adında yeni bir şoför ekliyor. İşi eklerken eğer (Şoför Telefon) veya (Plaka No) gibi bilgiler girilmiş ise bu bilgileride alıp şoförü oluşturuyor.

- Şimdi ise yeni bir iş ekliyoruz diyelim.. Tekrardan bu işin şoförü "Ömer İslamoğlu". İşlemi POST ettiğimizde tekrardan "Ömer İslamoğlu" nu drivers tablosunda aratıyor ve böyle bir şoför artık drivers listesinde olduğundan dolayı tekrardan eklememiş oluyor.

- Bu işlemlerin aynısını müşteriler için de yapıyoruz.


<?php
session_start();
if(!isset($_SESSION["giris"]))
{
header("Refresh:0 url=../login/");
return;
}
?>

<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>İş Ekle | Cool Travel İstanbul</title>

<link rel="shortcut icon" href="../../logo.png">
</head>
<body>
<?php
ob_start();
@$sayfa = $_GET["sayfa"];
Switch($sayfa)
{
case "logout";
include("logout.php");
break;
}
?>
<div class="wrapper">
<?php include_once '../../sidebar.php'; ?>
<div class="content ">
<div class="title">
<h1>İş Ekle</h1>
<div style="display:flex; gap:10px; align-items:center;">
<a href="../"><i class="fa-solid fa-list"></i><span>İş Listesi</span></a>
<i onmouseover="help_over();" onmouseout="help_out();" class="fa-solid fa-circle-question question"></i>
<div id="question-box">
<p>Yolcu İsimlerini ( , ) Koyarak Yazınız</p>
<p><?php echo htmlspecialchars('Ömer İslamoğlu , Erdinç İslamoğlu'); ?></p>
<hr>
</div>
</div>
</div>
<div class="row">
<?php
include("../../connection.php");
if($_POST)
{
error_reporting(E_ALL);
ini_set('display_errors', 1);

$type = $_POST["type"];
$partner = @$_POST["partner"];
$start = $_POST["start"];
$passenger = $_POST["passenger"];
$passengers = $_POST["passengers"];
$people = 1;
$phone = $_POST["phone"];
$start_location = $_POST["start_location"];
$end_location = $_POST["end_location"];
$notes = $_POST["notes"];
$start = $_POST["start"];
$date = $_POST["date"];
$datetxt = $_POST["datetxt"];
$driver = $_POST["driver"];
$driver_phone = $_POST["driver_phone"];
$driver_plate_no = $_POST["driver_plate_no"];
$receive = $_POST["receive"];
$payment = $_POST["payment"];
$cost = $_POST["cost"];
$progress_payment = $_POST["progress_payment"];
$flight = $_POST["flight"];
$active = "yes";
$typeTxt = $type;

$currency_receive = $_POST["currency_receive"];
$currency_payment = $_POST["currency_payment"];
$currency_cost = $_POST["currency_cost"];
$currency_progress_payment = $_POST["currency_progress_payment"];

$people = 1;
$passengers = trim($passengers);
if($passengers)
{
if (strpos($passengers, ",") !== false)
{
@$passengersArray = explode(",", $passengers);
@$passengersCount = count($passengersArray);
@$people = 1 + @$passengersCount;
}
}

if(empty($receive))
{
$receive = 0;
}
if(empty($payment))
{
$payment = 0;
}
if(empty($commission))
{
$commission = 0;
}
if(empty($cost))
{
$cost = 0;
}
if(empty(@$progress_payment))
{
$progress_payment = 0;
}

$veriekle = $db->prepare("INSERT INTO jobs SET
type = ?,
partner = ?,
start = ?,
passenger = ?,
passengers = ?,
receive = ?,
payment = ?,
people = ?,
phone = ?,
start_location = ?,
end_location = ?,
notes = ?,
date = ?,
datetxt = ?,
driver = ?,
cost = ?,
progress_payment = ?,
flight = ?,
currency_receive = ?,
currency_payment = ?,
currency_cost = ?,
currency_progress_payment = ?,
active = ?,
dbtype = 'job'");
$veriekle->execute([
$type,
$partner,
$start,
$passenger,
$passengers,
$receive,
$payment,
$people,
$phone,
$start_location,
$end_location,
$notes,
$date,
$datetxt,
$driver,
$cost,
$progress_payment,
$flight,
$currency_receive,
$currency_payment,
$currency_cost,
$currency_progress_payment,
$active
]);
if($veriekle)
{
// Tur veya Transfer EKlendiğinde eğer Müşteri ile Şoför ekli değilse ekleme işlemleri
$passengers = trim($passengers);
if($passenger)
{
try
{
$count = 0;
$passengersdb = $db->prepare("SELECT COUNT(*) AS count FROM passengers WHERE name_surname = ?");
$passengersdb->execute([$passenger]);
$count = $passengersdb->fetchColumn();

if ($count === 0) {
$addpassenger = $db->prepare("INSERT INTO passengers SET name_surname = ?, phone = ?");
$addpassenger->execute([$passenger,$phone]);
}
}
catch (PDOException $error)
{
echo $error->getMessage();
}
}
$driver = trim($driver);
if($driver)
{
try
{
$drivercount = 0;
$driversdb = $db->prepare("SELECT COUNT(*) AS count FROM drivers WHERE name_surname = ?");
$driversdb->execute([$driver]);
$drivercount = $driversdb->fetchColumn();

if ($drivercount === 0) {
$adddriver = $db->prepare("INSERT INTO drivers SET name_surname = ?, phone = ?, plate_no = ?");
$adddriver->execute([$driver,$driver_phone,$driver_plate_no]);
}
}
catch (PDOException $error)
{
echo $error->getMessage();
}
}
echo '<div class="alert alert-success" role="alert">
'.$typeTxt.' Eklendi
</div>';
}
else
{
echo '<div class="alert alert-danger" role="alert">
'.$typeTxt.' Eklenirken Bir Hata Oluştu
</div>';
header("Refresh:1; url=./");
}
}
?>
<form action="" method="post" class="form">
<div class="inputBx">
<select type="select" name="type" id="type" class="form-control inBox">
<option value="TRANSFER">TRANSFER</option>
<option value="TUR">TUR</option>
</select>
<i>Tip</i>
</div>
<div class="inputBx">
<input type="date" onfocus="driversClose(); passengersClose();" name="date" id="datePicker" class="form-control inBox" onchange="formatDate()">
<i>Tarih</i>
<input type="hidden" name="datetxt" id="formattedDate">
</div>
<div class="inputBx">
<input type="text" onfocus="driversClose(); passengersClose();" name="start" class="form-control inBox" oninput="clockNumber(this)" maxlength="5">
<i>Saat</i>
</div>
<div class="inputBx">
<input type="text" onfocus="driversClose(); passengersClose();" name="partner" class="form-control inBox">
<i>İş Ortağı</i>
</div>
<div class="inputBx">
<input type="text" onfocus="driversClose(); passengersClose();" name="start_location" class="form-control inBox">
<i>Nereden</i>
</div>
<div class="inputBx">
<input type="text" onfocus="driversClose(); passengersClose();" name="end_location" class="form-control inBox">
<i>Nereye</i>
</div>
<div class="inputBx">
<input type="text" onfocus="driversClose(); passengersClose();" name="flight" class="form-control inBox">
<i>Uçuş Kodu</i>
</div>
<div class="inputBx searchBx">
<input type="text" name="driver" onfocus="driversOpen();" id="driver" class="form-control inBox" required>
<i>Şoför</i>
<a class="inputEditbtn" id="driverEditbtn" onclick="driverEditlink();">
<input type="hidden" id="driverEdit" value="0">
<e class="fa-regular fa-pen-to-square"></e>
</a>
<div class="drivers-list my-list">
<ul>
<?php
$searchdriversdb = $db->prepare("SELECT * FROM drivers ORDER BY name_surname");
$searchdriversdb->execute();
$searchdrivers = $searchdriversdb->fetchAll(PDO::FETCH_ASSOC);
if($searchdrivers)
{
foreach($searchdrivers as $row)
{
echo '<li onclick="choseDriver(this,\''.$row["phone"].'\',\''.$row["plate_no"].'\',\''.htmlspecialchars($row["id"]).'\')">'.$row["name_surname"].'</li>';
}
}
?>
</ul>
</div>
</div>
<div class="inputBx phoneBx">
<input type="number" id="driverphone" onfocus="driversClose(); passengersClose();" onfocus="timeNumber(this)" name="driver_phone" class="form-control inBox" required>
<i>Şoför Telefon</i>
<g id="g-driverphone">+</g>
</div>
<div class="inputBx">
<input type="text" id="driverplateno" onfocus="driversClose(); passengersClose();" name="driver_plate_no" class="form-control inBox">
<i>Araç Plaka</i>
</div>
<div class="inputBx searchBx">
<input type="text" name="passenger" onfocus="passengersOpen();" id="passenger" class="form-control inBox" required>
<i>Müşteri</i>
<a class="inputEditbtn" id="passengerEditbtn" onclick="passengerEditlink();">
<input type="hidden" id="passengerEdit" value="0">
<e class="fa-regular fa-pen-to-square"></e>
</a>
<div class="passengers-list my-list">
<ul>
<?php
$searchpassengersdb = $db->prepare("SELECT * FROM passengers ORDER BY name_surname");
$searchpassengersdb->execute();
$searchpassengers = $searchpassengersdb->fetchAll(PDO::FETCH_ASSOC);

if($searchpassengers)
{
foreach($searchpassengers as $row)
{
echo '<li onclick="chosePassenger(this,\''.$row["phone"].'\',\''.htmlspecialchars($row["id"]).'\')">'.$row["name_surname"].'</li>';
}
}
?>
</ul>
</div>
</div>
<div class="inputBx phoneBx">
<input type="number" id="passengerphone" onfocus="driversClose(); passengersClose();" oninput="timeNumber(this)" name="phone" class="form-control inBox" required>
<i>Müşteri Telefon</i>
<g id="g-passengerphone">+</g>
</div>
<div class="inputBx">
<input type="text" onfocus="driversClose(); passengersClose();" name="passengers" class="form-control inBox">
<i>Yolcu İsimleri ( , )</i>
</div>
<div class="inputBx">
<input type="number" value="0" onfocus="driversClose(); passengersClose();" oninput="timeNumber(this)" name="receive" class="form-control inBox mini-control">
<i>Müşteriden Alınacak</i>
<div class="currency">
<select name="currency_receive">
<option value="₺">₺ Türk Lirası</option>
<option value="$">$ Dolar</option>
<option value="€">€ Euro</option>
<option value="£">£ Sterlin</option>
</select>
</div>
</div>
<div class="inputBx">
<input type="number" value="0" onfocus="driversClose(); passengersClose();" oninput="timeNumber(this)" name="progress_payment" class="form-control inBox mini-control">
<i>Hakediş</i>
<div class="currency">
<select name="currency_progress_payment">
<option value="₺">₺ Türk Lirası</option>
<option value="$">$ Dolar</option>
<option value="€">€ Euro</option>
<option value="£">£ Sterlin</option>
</select>
</div>
</div>
<div class="inputBx">
<input type="number" value="0" onfocus="driversClose(); passengersClose();" oninput="timeNumber(this)" name="payment" class="form-control inBox mini-control">
<i>Ödeme</i>
<div class="currency">
<select name="currency_payment">
<option value="₺">₺ Türk Lirası</option>
<option value="$">$ Dolar</option>
<option value="€">€ Euro</option>
<option value="£">£ Sterlin</option>
</select>
</div>
</div>
<div class="inputBx">
<input type="number" value="0" onfocus="driversClose(); passengersClose();" oninput="timeNumber(this)" name="cost" class="form-control inBox mini-control">
<i>Maliyet</i>
<div class="currency">
<select name="currency_cost">
<option value="₺">₺ Türk Lirası</option>
<option value="$">$ Dolar</option>
<option value="€">€ Euro</option>
<option value="£">£ Sterlin</option>
</select>
</div>
</div>
<div class="inputBx">
<textarea type="textarea" onfocus="driversClose(); passengersClose();" name="notes" class="form-control inBox"></textarea>
<i>Notlar</i>
</div>
<div class="inputBx">
<input type="submit" onfocus="driversClose(); passengersClose();" class="form-control" value="İş Ekle">
</div>
</form>
</div>
</div>
</div>
<script>

/**
* ? My-List tıklandığında SearchBx tasarım işlemi
*/
function handleHold() {
var inputElement = document.getElementById("driver");
inputElement.classList.add("active-input");
}

// Basılı tutma işlemi sona erdiğinde tetiklenecek fonksiyon
function handleRelease() {
var inputElement = document.getElementById("driver");
inputElement.classList.remove("active-input");
}

// .my-list içeriğine basılı tutma ve serbest bırakma olaylarına dinleyiciler ekleme
var myListElement = document.querySelector(".my-list");
myListElement.addEventListener("mousedown", handleHold);
myListElement.addEventListener("mouseup", handleRelease);
myListElement.addEventListener("mouseleave", handleRelease);


/**
* ? Şoför Bölümü
*/

const searchInput = document.getElementById("driver");
const driversList = document.querySelector(".drivers-list");
const driverPlate = document.getElementById("driverplateno");
const driverPhone = document.getElementById("driverphone");
const gdriverPhone = document.getElementById("g-driverphone");
const driverEdit = document.getElementById("driverEdit");
const driverEditbtn = document.getElementById("driverEditbtn");

function choseDriver(element, dphone, dplate,d_id)
{
searchInput.value = element.innerText;
driverPhone.value = dphone;
driverPlate.value = dplate;
driverEdit.value = d_id;
driversList.style.display = "none";
driverPlate.readOnly = "true";
driverPhone.readOnly = "true";
driverEditbtn.style.opacity = "1";
driverEditbtn.style.right = "-2%";
driverEditbtn.style.pointerEvents = "auto";

gdriverPhone.classList.add("gfocus");
}
function driversOpen()
{
driversList.style.display = "block";
}
function driversClose()
{
driversList.style.display = "none";
}
document.addEventListener("click", function(event) {
if (!searchInput.contains(event.target)) {
driversList.style.display = "none";
}
});
searchInput.addEventListener("keydown", function(event) {
if (event.key === "Backspace") {
driverPlate.style.pointerEvents = "auto";
driverPhone.style.pointerEvents = "auto";
driverPhone.value = "";
driverPlate.value = "";
gdriverPhone.classList.remove("gfocus");
driverEditbtn.style.opacity = "0";
driverEditbtn.style.right = "-5.2%";
}
});
searchInput.addEventListener("input", function(event) {
driverPlate.style.pointerEvents = "auto";
driverPhone.style.pointerEvents = "auto";
driverPhone.value = "";
driverPlate.value = "";
gdriverPhone.classList.remove("gfocus");
driverEditbtn.style.opacity = "0";
driverEditbtn.style.right = "-5.2%";
});
function driverEditlink()
{
window.location.href="../../drivers/driver="+driverEdit.value;
}

/**
* ? Müşteri Bölümü
*/

const searchpassengerInput = document.getElementById("passenger");
const passengersList = document.querySelector(".passengers-list");
const passengerPhone = document.getElementById("passengerphone");
const gpassengerPhone = document.getElementById("g-passengerphone");
const passengerEdit = document.getElementById("passengerEdit");
const passengerEditbtn = document.getElementById("passengerEditbtn");

function chosePassenger(element, pphone,p_id)
{
searchpassengerInput.value = element.innerText;
passengerPhone.value = pphone;
passengerEdit.value = p_id;
passengersList.style.display = "none";
passengerPhone.readOnly = "true";
passengerEditbtn.style.opacity = "1";
passengerEditbtn.style.right = "-2%";
passengerEditbtn.style.pointerEvents = "auto";

gpassengerPhone.classList.add("gfocus");
}
function passengersOpen()
{
passengersList.style.display = "block";
}
function passengersClose()
{
passengersList.style.display = "none";
}
document.addEventListener("click", function(event) {
if (!searchpassengerInput.contains(event.target)) {
passengersList.style.display = "none";
}
});
searchpassengerInput.addEventListener("keydown", function(event) {
if (event.key === "Backspace") {
passengerPhone.style.pointerEvents = "auto";
passengerPhone.value = "";
gpassengerPhone.classList.remove("gfocus");
passengerEditbtn.style.opacity = "0";
passengerEditbtn.style.right = "-5.2%";
}
});
searchpassengerInput.addEventListener("input", function(event)
{
passengerPhone.style.pointerEvents = "auto";
passengerPhone.value = "";
gpassengerPhone.classList.remove("gfocus");
passengerEditbtn.style.opacity = "0";
passengerEditbtn.style.right = "-5.2%";
});
function passengerEditlink()
{
window.location.href = "../../passengers/passenger="+passengerEdit.value;
}

/**
* ? Search Menu
*/
function searchMenu()
{
/**
* ? Şoför Arama
*/
searchInput.addEventListener('keyup', function(){
let data = this.value.toUpperCase();
let liItems = document.querySelectorAll(".drivers-list ul li");
for (let i = 0; i < liItems.length; i++) {
if (liItems[i].innerHTML.toUpperCase().indexOf(data) > -1) {
liItems[i].style.display = "";
} else {
liItems[i].style.display = "none";
}
}
});

/**
* ? Müşteri Arama
*/
searchpassengerInput.addEventListener('keyup', function(){
let data = this.value.toUpperCase();
let liItems = document.querySelectorAll(".passengers-list ul li");
for (let i = 0; i < liItems.length; i++) {
if (liItems[i].innerHTML.toUpperCase().indexOf(data) > -1) {
liItems[i].style.display = "";
} else {
liItems[i].style.display = "none";
}
}
});
}
searchMenu();






const inputDate = document.getElementById("datePicker");
const formattedDate = document.getElementById("formattedDate");

inputDate.addEventListener("change", () => {
const selectedDateValue = inputDate.value; // Tarih değeri al
const dateParts = selectedDateValue.split("-"); // Tarihi parçalara ayır
const year = parseInt(dateParts[0], 10);
const month = parseInt(dateParts[1], 10) - 1; // JavaScript ayları 0-11 arasında temsil eder
const day = parseInt(dateParts[2], 10);

const selectedDate = new Date(year, month, day);

if (isNaN(selectedDate)) {
console.error("Geçersiz tarih formatı!");
return;
}

const formattedDateString = formatDate(selectedDateValue);

formattedDate.value = formattedDateString;
});

function formatDate(inputDateValue) {
var dateParts = inputDateValue.split("-");
var day = new Date(inputDateValue).toLocaleDateString('tr-TR', { weekday: 'long' });
return dateParts[0] + "." + dateParts[1] + "." + dateParts[2] + " - " + day;
}

function timeNumber(input) {
var value = input.value;
var formattedValue = "";

// Remove any non-numeric characters
value = value.replace(/\D/g, "");

formattedValue = value;

input.value = formattedValue;
}
function clockNumber(input) {
var value = input.value;
var formattedValue = "";

// Remove any non-numeric characters
value = value.replace(/\D/g, "");

if (value.length >= 2) {
formattedValue = value.slice(0, 2) + ":" + value.slice(2);
} else {
formattedValue = value;
}

input.value = formattedValue;
}
var menujoblist = document.getElementById("menujoblist");

menujoblist.classList.add("active-menu");
</script>
<script src="https://kit.fontawesome.com/b40b33d160.js" crossorigin="anonymous"></script>
</body>
</html>

Tarih : 2024-09-08 01:06:11 Kategori :   Yazılım Yazar :   Ömer İslamoğlu