Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    Cancellare una riga definita di una tabella db

    Buongiorno a tutti!
    Ho cercato nel manuale php MySql ma non ho trovato risposta. Ho bisogno di uno script che cancelli una riga precisa di una tabella di un database.

    La tabella di un db che memorizza l'iscrizione di utenti, così organizzata a colonne:

    ID cognome nome matricola

    Ora dovrei fare in modo che un iscritto possa anche annullare la sua iscrizione. In che modo: attraverso dei campi in cui l'utente già registrato reinserisce di nuovo le sue generalità (cognome, nome, matricola)

    A me serve il comando che, confrontando il contenuto delle varibili passate (cognome, nome, matricola), vada alla ricerca della riga che le contiene (quindi tutti i dati devono matchare nella stessa riga!) e la CANCELLI!

    Questo dovrebbe essere lo script della query di ricerca dei match (che se non li trova, dice all'utente che non si è mai iscritto!), ma poi deve cancellare quella riga: chi mi può fornire lo script?

    $controllo = mysql_query ("SELECT cognome,nome,matricola FROM listafisio1 WHERE cognome='$cognome' AND nome='$nome' AND matricola='$matricola'", $db);

    $match= mysql_num_rows($controllo);

    if ($match = 0) die ("Impossibile effettuare la cancellazione: le generalità inserite non corrispondono a nessuno degli iscritti");

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    1,141
    se dlla tua select tiri fuori anche l'id, una volta controllato che l'utente abbian inserito i dati che a te interessano, fai la delete:
    DELETE FROM tabella WHERE id = '$id_della_select';

    spero di esserti stato d'aiuto...

    ciao

  3. #3
    In questo modo cancella tutta la riga corrispondente all'id?

    Fare così potrebbe andare bene comunque? -> $delete= ("DELETE FROM listafisio1 WHERE cognome='$cognome' AND nome='$nome' AND matricola='$matricola'");

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    1,141
    si,dovrebbe funzionare ugualmente...

    ciao

  5. #5
    Utente di HTML.it L'avatar di thepooh
    Registrato dal
    Oct 2005
    Messaggi
    203
    Stai solo attento a prendere un dato univoco.
    Per cancellare una sola riga basta utilizzare solo ed esclusivamente il dato univoco che non si ripete all'interno della tabella.
    Quindi è più giusto e pulito scrivere:
    DELETE FROM tabella WHERE id = '$id_della_select';
    Se fai delle delete su dati non univoci rischi di cancellarti dei dati che non vorresti.

  6. #6
    Originariamente inviato da thepooh
    Stai solo attento a prendere un dato univoco.
    Per cancellare una sola riga basta utilizzare solo ed esclusivamente il dato univoco che non si ripete all'interno della tabella.
    Quindi è più giusto e pulito scrivere:
    DELETE FROM tabella WHERE id = '$id_della_select';
    Se fai delle delete su dati non univoci rischi di cancellarti dei dati che non vorresti.
    Ho già fatto un controllo sull'iscrizione in modo che non si iscrivano persone che hanno generalità completamente uguali: nome, cognome, matricola.

    Mi sbaglio: se faccio un select con tre condizioni legate da AND, le tre condizioni devono "coabitare"... per questo, se cancello ciò che seleziono in questo modo, non rischio di cancellare tutti i ROSSI e tutti i Mario della tabella... è corretto?

    Cmq, se per favore potete darmi lo script in cui trova come ho scritto io e seleziona quella tabella per id... grazie

  7. #7
    Utente di HTML.it L'avatar di thepooh
    Registrato dal
    Oct 2005
    Messaggi
    203
    codice:
    Cmq, se per favore potete darmi lo script in cui trova come ho scritto io e seleziona quella tabella per id... grazie

    potresti spiegarti meglio!

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    1,141
    Mi sbaglio: se faccio un select con tre condizioni legate da AND, le tre condizioni devono "coabitare"... per questo, se cancello ciò che seleziono in questo modo, non rischio di cancellare tutti i ROSSI e tutti i Mario della tabella... è corretto?
    Penso che thepooh volesse dire che sarebbe + corretto cancellare per id, se questo fosse univoco, perchè anche in questo caso ( cancellazione per id),non avresti problemi e cancelleresti solo un Rossi Mario ( quello relativo all'id) e non tutti quelli della tabella.
    Se hai fatto un controllo sulla matricola, ossia che questa sia univoca per ogni utente inserito, cmq, non ci sono problemi, puoi usare quella come discriminante....

    Bisognerebbe vedere come hai impostato tu i campi di quella tabella...

    Ciao

  9. #9
    $query="SELECT id FROM listafisio1 WHERE cognome='$cognome' AND nome='$nome' AND matricola='$matricola';";

    $res=mysql_query($query);

    $numero_righe=mysql_num_rows($res);

    if ($numero_righe > 0 )
    {
    $row=mysql_fetch_assoc($res);
    $id_da_cancellare=$row['id'];
    mysql_query("DELETE FROM listafisio1 WHERE id='$id_da_cancellare'");
    }
    ______________________________________

    Progresso Web.

  10. #10
    Utente di HTML.it L'avatar di thepooh
    Registrato dal
    Oct 2005
    Messaggi
    203
    codice:
    Penso che thepooh volesse dire che sarebbe + corretto cancellare per id, se questo fosse univoco,

    Comunque sarebbe utile avere la struttura della tabella.
    Se hai o metti un id autoincrementale non corri nessun rischio, quell'id vrrà scritto una sola volta, dietro ci possono essere tutti i dati che vuoi, tutti i Mario Rossi che esistono, ma saranno sempre diversi perchè hanno un id univoco.
    Semplifica la vita e non devi fare tanti controlli.
    Non so se per questo caso specifico sia la cosa migliore che puoi fare ma è buona cosa inserire un id in ogni tabella anche perchè serve come collegamento alle altre tabelle del db.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.