Загрузка данных
<?php
use PDO;
$inp = fopen('php://stdin', 'r');
function connectToDatabase() {
$pdo = new PDO('sqlite:' . DB_NAME);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $pdo;
}
function run(int $argc, array $argv) {
$pdo = connectToDatabase();
$command = strtolower($argv[0]);
switch ($command) {
case "add":
$name = promptInput("Enter name: ");
$email = promptInput("Enter email: ");
$phone = promptInput("Enter phone: ");
$address = promptInput("Enter address: ");
$stmt = $pdo->prepare("INSERT INTO contacts (name, email, phone, address) VALUES (?, ?, ?, ?)");
$stmt->execute([$name, $email, $phone, $address]);
echo "Contact added successfully.\n";
break;
case "list":
$stmt = $pdo->query("SELECT * FROM contacts");
$contacts = $stmt->fetchAll(PDO::FETCH_ASSOC);
$i = 1;
foreach ($contacts as $contact) {
printf("%d. %s - %s - %s - %s\n", $i, $contact['name'], $contact['email'], $contact['phone'], $contact['address']);
$i++;
}
break;
case "search":
$query = trim($argv[1]);
$stmt = $pdo->prepare("SELECT * FROM contacts WHERE name LIKE :query OR email LIKE :query OR phone LIKE :query OR address LIKE :query");
$stmt->execute(['query' => "%$query%"]);
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmtAll = $pdo->query("SELECT * FROM contacts"); // Запрос для получения всех контактов
$allContacts = $stmtAll->fetchAll(PDO::FETCH_ASSOC);
if (empty($results)){
echo "No contacts found matching '{$query}'";
} else
foreach ($results as $result) {
$index = array_search($result, $allContacts); // Находим индекс строки в исходном списке
printf("%d. %s - %s - %s - %s\n", $index + 1, $result['name'], $result['email'], $result['phone'], $result['address']);
}
break;
case "view":
$contactId = $argv[1];
$stmt = $pdo->prepare("SELECT * FROM contacts WHERE id = ?");
$stmt->execute([$contactId]);
$contact = $stmt->fetch(PDO::FETCH_ASSOC);
if ($contact) {
echo "Name: " . $contact['name'] . "\nEmail: " . $contact['email'] . "\nPhone: " . $contact['phone'] . "\nAddress: " . $contact['address'] . "\n";
$action = promptInput("Do you want to edit or delete this contact? (edit/delete/none): ");
if ($action === 'edit') {
$name = promptInput("Enter new name (leave empty to keep the same): ");
$email = promptInput("Enter new email (leave empty to keep the same): ");
$phone = promptInput("Enter new phone (leave empty to keep the same): ");
$address = promptInput("Enter new address (leave empty to keep the same): ");
$name = !empty($name) ? $name : $contact['name'];
$email = !empty($email) ? $email : $contact['email'];
$phone = !empty($phone) ? $phone : $contact['phone'];
$address = !empty($address) ? $address : $contact['address'];
$stmt = $pdo->prepare("UPDATE contacts SET name = ?, email = ?, phone = ?, address = ? WHERE id = ?");
$stmt->execute([$name, $email, $phone, $address, $contactId]);
echo "Contact updated successfully.\n";
} elseif ($action === 'delete') {
// Handle deleting the contact
$stmt = $pdo->prepare("DELETE FROM contacts WHERE id = ?");
$stmt->execute([$contactId]);
echo "Contact deleted successfully.\n";
}
} else {
echo "Contact not found.\n";
}
break;
default:
echo "Unknown command. Available commands: add, list, search, view.\n";
break;
}
}
function promptInput($prompt) {
global $inp;
echo $prompt;
return trim(fgets($inp));;
}