Rubrica in php

  • Creatore Discussione Creatore Discussione Vicee
  • Data di inizio Data di inizio

Vicee

Nuovo Utente
24 Gen 2013
11
0
0
Ciao ragazzi sono Vincenzo e sono un nuovo utente di questo forum, innanzitutto un saluto a voi tutti...
Ecco il mio problema....
Sto studiando da poco tempo il php e la sua interazione con i db utilizzando mysql, come esercizio (ma che in realtà mi servirà realmente) sto progettando una semplice rubrica telefonica.
Ho creato il form di inserimento dati (con 6 campi) con tutti i controlli del caso ed ho creato anche un form (sempre con i soliti 6 campi) di ricerca dati nel DB che mi permette da qualsiasi campo di input di effettuare la ricerca. Il form mi restituisce correttamente i risultati che ho sistemato in una semplice tabella.
Adesso vorrei che cliccando su un risultato della suddetta tabella si popoli un form con i dati corrispondenti alla ricerca effettuata (es: Nome: Vincenzo; Cognome:...; ecc ecc) e che ci sia la possibilità di aggiornare o eliminare il dato presente nel form.
E' possibile?
 
Assolutamente sì. Crea un file edit.php di questo tipo:
PHP:
<?php
try {
    $pdo = new PDO('mysql:host=localhost;dbname=test', 'root', 'password');
} catch (PDOException $e) {
    header('HTTP/1.1 500 Internal Server Error');
    die('Si è verificato un errore.');
}

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$id = isset($_GET['id']) ? (int)$_GET['id'] : null;

if (null === $id) {
    header('HTTP/1.1 400 Bad Request');
    die('Non hai specificato un ID.');
}

$stm = $pdo->prepare('SELECT * FROM entries WHERE id = ?');

try {
    $stm->execute(array($id));
} catch (PDOException $e) {
    header('HTTP/1.1 500 Internal Server Error');
    die('Si è verificato un errore.');
}

if ($stm->rowCount() == 0) {
    header('HTTP/1.1 404 Not Found');
    die('Impossibile trovare la voce richiesta.');
}

$entry = $stm->fetchAssoc();

if ('POST' == $_SERVER['REQUEST_METHOD']) {
    $name      = isset($_POST['name'])      ? trim($_POST['name'])      : '';
    $surname   = isset($_POST['surname'])   ? trim($_POST['surname'])   : '';
    $telephone = isset($_POST['telephone']) ? trim($_POST['telephone']) : '';

    if ('' == $name || '' == $surname || '' == $telephone) {
        header('HTTP/1.1 500 Internal Server Error');
        die('Devi compilare tutti i campi.');
    }

    $stm = $pdo->prepare('UPDATE entries SET name = ?, surname = ?, telephone = ? WHERE id = ?');
    $stm->execute(array($name, $surname, $telephone, $entry['id']));

    echo 'La voce è stata aggiornata correttamente!';
} else {
    echo <<<EOF
<form method="post" action="{$_SERVER['REQUEST_URI']}">
    <div>
        <label for="name">Nome:</label>
        <input type="text" id="name" name="name" />
    </div>

    <div>
        <label for="surname">Cognome:</label>
        <input type="text" id="surname" name="surname" />
    </div>

    <div>
        <label for="telephone">Telefono:</label>
        <input type="text" id="telephone" name="telephone" />
    </div>

    <div>
        <button type="submit">Modifica voce</button>
    </div>
</form>
EOF;
}
(Nota: se non stai usando PDO leggi una guida e inizia a usarlo. mysql è deprecata di fatto e mysqli è molto poco flessibile.)

E poi nella pagina di visualizzazione dei risultati ti basterà linkare a edit.php?id=1 per modificare l'utente con ID 1.
 

Discussioni simili