• ModSenior

    Se c'è già la condizione con la chiave primaria è inutile, in quanto la chiave primaria deve per forza identificare univocamente un record. O non è quella la chiave primaria o stavi utilizzando un campo inutile.


  • User

    Il campo Utilizzatore è la chiave... Se tu mi metti anche la checkbox allora ti adorerò per sempre! Almeno togliamo anche strumenti! 😄


  • ModSenior

    Dipende che tipo di chiave è.
    Qualcosa non mi quadra, puoi postarmi la query di creazione della tabella?
    Il checkbox va bene se hai più di un record mostrato, ma se usi un chiave primaria che senso ha? :mmm:


  • User

    Un Utilizzatore può utilizzare più strumenti! Per questo ce l'ho bisogno! Va' bene lo stesso se ti do solo le caratteristiche principali?


  • ModSenior

    Se un utilizzatore può usare più strumenti il campo Utilizzatore non è chiave primaria, ma è chiave esterna. La tabella strumenti deve comunque avere una chiave primaria.
    Dovresti postarmi proprio la query che hai usato perchè creo che tra quello che stai facendo tu, e quello che dovevi ottenere c'è qualche leggera differenza e non riesco a scriverti il codice esatto da utilizzare.


  • User

    CREATE TABLE strumenti
    (Fornitore char(50) Not null,
    Assistenza char(50) Not null,
    Utilizzatore char(8) Not null,
    Strumento char(50) Not null,
    Marca char(50) Not null,
    Modello char(50),
    Descrizione longtext Not null,
    Venduto_Dismesso char(3),
    Data_acquisizione timestamp,
    PRIMARY KEY(Utilizzatore));


  • User

    Ah! Mi sono accorto di aver sbagliato!
    Venduto_Dismesso non deve essere nullo!


  • ModSenior

    Se un utilizzatore può avere più strumenti come hai detto prima, quella tabella non và bene in quanto fà in modo che un utilizzatore abbia un solo strumento.


  • User

    Hai ragione... Che babbo che sono... XD devo mettere come chiave una variabile contatore? (invisibile all'utente ovviamente...)


  • ModSenior

    Si, dovresti creare un campo apposito.


  • User

    Ok, ora lo modifico! Grazie! 😄


  • User

    Come posso definire in MySQL un contatore?


  • ModSenior

    Devi mettere il campo come autoincrement e chiave primaria.


  • User

    Guarda non prende l'autoincrement...


  • ModSenior

    Che query usi per modificare la tabella?


  • User

    Ho cancellato la precendente... La sto ricreando...

    E' questa:

    CREATE TABLE strumenti
    (Matricola auto_increment Not null,
    Fornitore char(50) Not null,
    Assistenza char(50) Not null,
    Utilizzatore char(8) Not null,
    Strumento char(50) Not null,
    Marca char(50) Not null,
    Modello char(50),
    Descrizione longtext Not null,
    Venduto_Dismesso char(3),
    Data_acquisizione timestamp,
    PRIMARY KEY(Matricola));


  • User

    Ho sistemato! XD Falso allarme! XD


  • ModSenior

    Hai dimenticato di inserire il tipo int(11)


  • User

    Si, piccolo errore... 😄


  • ModSenior

    Ok allora se il nome è Matricola, cosi dovrebbe andare:
    [php]
    <?php
    session_start();
    $conn = mysql_connect("localhost","root","") or die('Connessione mancata con il root. Errore: ' . mysql_error());
    $select = mysql_select_db("sabicom",$conn) or die("Errore nella connessione con il database. Errore: " . mysql_error());
    ?>
    <html lang="en">
    <head>
    <title>Cancellazione strumenti</title>
    </head>
    <body>
    <marquee width="100%" direction="left" scrollamount="8"><img src="img/logo.jpg" /></marquee>
    <?php
    if(isset($_POST['utiliz']))
    $utiliz = trim($_POST['utiliz']);
    else
    die('Input mancante');

    if(isset($_POST['strum']))
    $strum = trim($_POST['strum']);
    else
    die('Input mancante');

    $sql = "SELECT * FROM strumenti WHERE Utilizzatore = '".mysql_real_escape_string($utiliz)."' AND Strumento = '".mysql_real_escape_string($strum)."'";
    $result = mysql_query($sql, $conn);
    if(!$result)
    {
    die('Errore durante il trasferimento dei dati');
    }
    $num=mysql_numrows($result);
    mysql_close();
    ?>
    <form method="post" action="confirm-cancel.php">
    <table border="1" align="center" bordercolor="lightblue">
    <tr>
    <td align="center">Fornitore</td>
    <td align="center">Assistenza</td>
    <td align="center">Utilizzatore</td>
    <td align="center">Strumento</td>
    <td align="center">Marca</td>
    <td align="center">Modello</td>
    <td align="center">Descrizione</td>
    <td align="center">Venduto / Dismesso</td>
    <td align="center">Data di acquisizione</td>
    </tr>
    <?php
    $i=0;
    while ($i < $num) {
    $Matricola = mysql_result($result,$i,"Matricola");
    $fornitore=mysql_result($result,$i,"Fornitore");
    $assistenza=mysql_result($result,$i,"Assistenza");
    $utilizzatore=mysql_result($result,$i,"Utilizzator e");
    $strumento=mysql_result($result,$i,"Strumento");
    $marca=mysql_result($result,$i,"Marca");
    $modello=mysql_result($result,$i,"Modello");
    $descrizione=mysql_result($result,$i,"Descrizione" );
    $vend_dism=mysql_result($result,$i,"Venduto_Dismes so");
    $data_acquis=mysql_result($result,$i,"Data_acquisi zione");
    ?>
    <tr>
    <td align="center"><?php echo $fornitore ?></td>
    <td align="center"><?php echo $assistenza ?></td>
    <td align="center"><?php echo $utilizzatore ?></td>
    <td align="center"><?php echo $strumento ?></td>
    <td align="center"><?php echo $marca ?></td>
    <td align="center"><?php echo $modello ?></td>
    <td align="center"><?php echo $descrizione ?></td>
    <td align="center"><?php echo $vend_dism ?></td>
    <td align="center"><?php echo $data_acquis ?></td>
    <td align="center"><input type="checkbox" name="identificatore[]" value="<?php echo $Matricola; ?>" /></td>
    </tr>
    <?php
    $i++;
    }
    ?>
    </table>
    <input type="submit" value="Elimina selezionati" />
    </form>
    <br />
    <br />
    <form method="post" action="index.html">
    <div align="right"><input type="submit" value="Vai alla pagina principale" /></div>
    </form>
    </body>
    </html>
    [/php]
    [php]
    <?php
    session_start();
    $conn = mysql_connect("localhost","root","") or die('Connessione mancata con il root. Errore: ' . mysql_error());
    $select = mysql_select_db("sabicom", $conn) or die("Errore nella connessione con il database. Errore: " . mysql_error());
    ?>
    <!DOCTYPE html>
    <head>
    <title>Conferma cancellazione</title>
    </head>
    <body>
    <marquee width="100%" direction="left" scrollamount="8"><img src="img/logo.jpg" /></marquee>
    <?php
    if(isset($_POST['identificatore']))
    $identificatore = $_POST['identificatore'];
    else
    die('Input mancante');

    foreach($identificatore AS $tmp)
    if(!is_numeric($tmp))
    die('Input manomessi');

    if(isset($_POST['conferma']))
    {
    $identificatori = implode(',', $identificatore);
    mysql_query("DELETE FROM strumenti WHERE Matricola IN '".mysql_real_escape_string($identificatori)."'");
    die('Eliminato/i correttamente');
    }
    ?>
    <form method="post" action="">
    <input type="submit" name="conferma" value="Conferma eliminazione" />
    </form>
    <br />
    <br />
    <form method="post" action="index.html">
    <div align="right"><input type="submit" value="Vai alla pagina principale" /></div>
    </form>
    </body>
    </html>
    [/php]Vedi se funziona perchè l'ho scritto velocemente.