Visualizzazione risultati 1 fino 26 di 26
Like Tree2Likes
  • 1 Post By mzanella
  • 1 Post By mzanella

Discussione: Cancella valore in tabella mysql

  1. #1
    attenzion non è connesso Utente AlterBlog
    Data registrazione
    15-01-2017
    Messaggi
    25

    Predefinito Cancella valore in tabella mysql

    Ciao a tutti

    Non riesco a cancellare il valore inserito nel select tramite lettura tabella mysql

    Codice PHP:
    <select name="Codice" required id="Codice">
    <?php
    $query
    = mysql_query("SELECT DISTINCT Codice FROM Codice_");
    while (
    $riga=mysql_fetch_array($query)){
    $Codice=$riga['Codice'];
    echo
    "<option value=\"$Codice\">$Codice</option>";
    }
    ?>
    </select>
    Codice PHP:
    <?php

    // connessione al database
    if ( $_GET['inviodati'] == "ok" )


    {

    include(
    'connect-db.php');
    // ottiene il valore id
    $Codice = $riga['Codice'];

    // elimina la voce
    $result = mysql_query("DELETE FROM Codice WHERE Codice=$Codice")
    or die(
    mysql_error());

    }

    ?>

  2. #2
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    $riga['codice'] non sembra essere definito nel secondo brano di codice:
    Codice PHP:
    $Codice = $riga['Codice'];
    probabilmente intendevi:
    Codice PHP:
    $Codice = $_GET['Codice'];

  3. #3
    attenzion non è connesso Utente AlterBlog
    Data registrazione
    15-01-2017
    Messaggi
    25

    Predefinito

    Grazie, l'unica cosa mi cancella l'ultima riga ma non la riga corrispondente al valore selezionato.
    Dove sbaglio?

    Ancora grazie

  4. #4
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Difficile a dirsi, dovresti ispezionare il valore di $_GET['Codice'] nel secondo frammento di codice per controllare che corrisponda a quello selezionato.
    In caso positivo, il problema è nel secondo codice, altrimenti c'è qualcosa che non va nel primo (la pagina con il form).

    Ho notato che la SELECT viene effettuata dalla tabella Codice_ con l'underscore, mentre la DELETE su una tabella diversa (Codice senza underscore): questa cosa è voluta? Se sì, rivaluta i nomi da dare delle tabelle...

    PS: Non è collegato al problema, ma le funzioni mysql_* sono deprecate, dovresti passare a mysqli o PDO.

  5. #5
    attenzion non è connesso Utente AlterBlog
    Data registrazione
    15-01-2017
    Messaggi
    25

    Predefinito

    No non è quello è colpa della tastiera si è aggiunto mentre scrivevo è tutto senza underscore
    Niente provato varie soluzioni mi cancella sempre l'ultimo valore

  6. #6
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Niente provato varie soluzioni mi cancella sempre l'ultimo valore
    dovresti ispezionare il valore di $_GET['Codice'] nel secondo frammento di codice per controllare che corrisponda a quello selezionato.
    In caso positivo, il problema è nel secondo codice, altrimenti c'è qualcosa che non va nel primo (la pagina con il form).
    Hai verificato che il valore passato sia corretto?

  7. #7
    attenzion non è connesso Utente AlterBlog
    Data registrazione
    15-01-2017
    Messaggi
    25

    Predefinito

    Cosa intendi?

  8. #8
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Nel secondo brano di codice recuperi il valore Codice da $_GET (o almeno dovresti):
    Codice PHP:
    $Codice = $_GET['Codice'];
    Il valore recuperato in questo modo corrisponde a quello selezionato nella select della pagina precedente, quella con il form?
    Puoi controllare la corrispondenza semplicemente stampando il valore di $Codice dopo averlo letto:
    Codice PHP:
    $Codice = $_GET['Codice'];
    echo
    $Codice;
    Se il valore corrisponde a quello selezionato, i problemi riguardano il codice per la cancellazione (anche se sembra strano...).
    Altrimenti, se il valore non corrisponde, vuol dire che il form nella pagina precedente ha qualche errore, non lo ha passato correttamente, ad esempio il valore è stato sovrascritto da un altro campo omonimo.

  9. #9
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    $Codice secondo me è un array (nel database hai diversi codici).. Successivamente dovresti dare tanti valori della option, per quanti sono i codici estratti
    Ultima modifica di darbula : 26-01-2017 alle ore 16.43.36

  10. #10
    attenzion non è connesso Utente AlterBlog
    Data registrazione
    15-01-2017
    Messaggi
    25

    Predefinito

    Mi esce questo messaggio quando do invio

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

  11. #11
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Ti dice di usare gli apici...
    Codice PHP:
    $result = mysql_query("DELETE FROM Codice WHERE Codice='$Codice'")
    or die(
    mysql_error());
    per il primo pezzo di codice in linea teorica i codici (prodotti) dovrebbero essere unici... Per quale motivo usi distinct?
    Ultima modifica di darbula : 26-01-2017 alle ore 17.04.55

  12. #12
    attenzion non è connesso Utente AlterBlog
    Data registrazione
    15-01-2017
    Messaggi
    25

    Predefinito

    La funzione Distinct l'ho tolta mi serviva per un altro codice.

  13. #13
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Citazione Originalmente inviato da attenzion Visualizza messaggio
    La funzione Distinct l'ho tolta mi serviva per un altro codice.
    Bene... Allora dobbiamo modificare il primo codice... Quando vuoi estrarre tutti i valori dal campo codice della tabella codice... Sarà un array $riga['Codice'][0] eventuale $riga['Codice'][1] (insomma dovresti mettere questo dentro $Codice) mentre tu sovrascrivi $Codice ed ovviamente alla fine sarà l'ultima corrispondenza trovata.
    Ultima modifica di darbula : 26-01-2017 alle ore 17.27.49

  14. #14
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Personalmente inizio ad avere la sensazione di viaggiare alla cieca.
    Mostra i codici attuali con le modifiche effettuate, e chiarisci se $Codice è un vettore, un intero, una stringa o altro.

    In caso di dubbi usa var_dump($Codice) e riportane il risultato.
    Ultima modifica di mzanella : 26-01-2017 alle ore 17.27.21
    darbula likes this.

  15. #15
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Codice HTML:
    <select name="Codice" required id="Codice">
    Codice PHP:
    <?php
    $query
    = mysql_query("SELECT Codice FROM Codice");
    $i = 0;
    while (
    $riga=mysql_fetch_array($query, MYSQL_ASSOC)){
    echo
    "<option value=\"{$riga['Codice'][$i]}\">{$riga['Codice'][$i]}</option>";
    $i++;
    }
    unset(
    $riga);
    ?>
    Codice HTML:
    </select>
    Se la pagina è una sola (visualizzazione e cancellazione "codice") il codice dovrebbe essere questo... Anche se in verità non lo provato
    Ultima modifica di darbula : 26-01-2017 alle ore 20.45.29

  16. #16
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    ...ancora non capisco quando e perché la colonna Codice di una tabella sia diventata un vettore

  17. #17
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Citazione Originalmente inviato da mzanella Visualizza messaggio
    ...ancora non capisco quando e perché la colonna Codice di una tabella sia diventata un vettore
    La risposta può d'artela solo chi usa lo script, ma posso affermare che le option delle select assumono più di un valore ed anche dal precedente commento "Grazie, l'unica cosa mi cancella l'ultima riga ma non la riga corrispondente al valore selezionato.", immaginiamo che possediamo tre PC ognuno che sigleremo con un codice identificato univoco .. Detto questo si hanno tre "codice".. E creiamo un ipotetica tabella PC con il campo (colonna) codice..
    PC => Asus codice => 100
    PC => Archos codice => 101
    PC => Samsung codice => 102
    Ora il codice è un id che indica unica corrispondenza
    Ultima modifica di darbula : 26-01-2017 alle ore 20.02.37

  18. #18
    attenzion non è connesso Utente AlterBlog
    Data registrazione
    15-01-2017
    Messaggi
    25

    Predefinito

    Vi spiego, questo è il codice:


    Codice PHP:
    <select name="Promo" required id="Promo">
    <?php
    $query
    = mysql_query("SELECT * FROM Magazzino");
    while (
    $riga=mysql_fetch_array($query)){
    $Codice=$riga['Codice'];
    echo
    "<option value=\"$Codice\">$Codice</option>";
    }
    ?>
    </select>
    Magazzino = Nome tabella Mysql
    Codice = Colonna della tabella "Magazzino" in Mysql

    A me serve che quando seleziono un valore dal select sopra indicato, mi elimini quella riga corrispondente alla selezione.

    Es. Nella colonna Codice ci sono 3 righe con i valori AAAAA e BBBBB e CCCCC io seleziono AAAAA lui una volta che do invio dal form mi elimini solo la voce AAAAA .

    Codice PHP:
    <?php

    // connessione al database
    if ( $_GET['inviodati'] == "ok" )


    {

    include(
    'connect-db.php');
    // ottiene il valore id
    $Codice = $GET['Codice'];

    // elimina la voce
    $result = mysql_query("DELETE FROM Magazzino WHERE Codice='$Codice'")
    or die(
    mysql_error());

    }

    ?>
    Il problema che lui mi legge i valori nel select, quindi AAAAA e BBBBB e CCCCC ma quando seleziono uno di questi non mi elimina nulla


    Vi ringrazio a tutti anticipatamente

  19. #19
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Puoi usare questa riga di codice solo se hai un submit di nome inviodati con valore ok
    <input type=”submit” name="inviodati" value=”ok”> Modifica con questo il secondo script
    Codice PHP:
    <?php

    // connessione al database
    if ( $_GET['inviodati'] == "ok" )


    {

    include(
    'connect-db.php');
    // ottiene il valore id
    $Codice = $_GET['Promo'];

    // elimina la voce
    $result = mysql_query("DELETE FROM Magazzino WHERE Codice='$Codice'")
    or die(
    mysql_error());

    }

    ?>
    il primo script lo trovi sopra modifica il nome della select con quello che tu usi nel html... Unisci i pezzi e fammi sapere
    Ultima modifica di darbula : 26-01-2017 alle ore 20.53.08

  20. #20
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Se così fosse la <select> avrebbe l'attributo multiple (HTML <select> multiple Attribute) ed il suo nome sarebbe Codice[] (How do I get all the results from a select multiple HTML tag?), quindi non credo l'autore intendesse usare select multiple.

    Anche se fosse, questo sarebbe trasparente rispetto alla generazione della <select>: ciascuna <option> avrebbe il suo usuale valore (in questo caso $riga['Codice']) e, solo lato server, andrebbe gestita la possibilità che si tratti di un vettore.

    In ogni caso con questo codice c'è un problema
    Codice PHP:
    echo "<option value=\"{$riga['Codice'][$i]}\">{$riga['Codice'][$i]}</option>";
    legato al fatto che $riga['Codice'] non è un vettore (e non può esserlo in quanto valore di una colonna di una base di dati relazionale), quindi $riga['Codice'][$i] non va bene.


    Il problema che lui mi legge i valori nel select, quindi AAAAA e BBBBB e CCCCC ma quando seleziono uno di questi non mi elimina nulla
    Hai cambiato il nome della <select>, rinominandola in Promo. Di conseguenza, devi anche modificare
    Codice PHP:
    $Codice = $GET['Codice'];
    in
    Codice PHP:
    $Codice = $GET['Promo'];

  21. #21
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Mazanella mi riferisco alla visualizzazione multipla (cioè nel database ci sono più valori) e non all'invio di codici multipli ... Per quanto riguarda l html.. Non ho verificato la veridicità dell array multidimensionale può darsi che tu abbia ragione...
    Ultima modifica di darbula : 26-01-2017 alle ore 21.12.50

  22. #22
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    La funzione restituisce un vettore unidimensionale, non multidimensionale:
    Codice PHP:
    $row = mysql_fetch_array($result);

    echo
    $row['column']; // Ok
    echo $row['column'][0]; // No ok
    che è un vettore
    Perdona l'insistenza, ma non capisco: cosa è un vettore? La colonna codice è un vettore colonna, senza dubbio, scorrendone le righe con un ciclo while si accede a ciascuno dei sui elementi, che rappresenta un dato nella base di dati (quindi certamente non un vettore).


    In sintesi:
    pagina1.php
    Codice PHP:
    ...
    <select name="Promo" required id="Promo">
    <?php
    $result
    = mysql_query("SELECT * FROM Magazzino");
    while (
    $riga = mysql_fetch_array($result)){
    $Codice = $riga['Codice'];
    echo
    "<option value=\"$Codice\">$Codice</option>";
    }
    ?>
    </select>
    pagina2.php
    Codice PHP:
    <?php
    // Se sono stati inviati dei dati...
    if ($_GET['inviodati'] == "ok")
    {
    // Connessione al database
    include('connect-db.php');

    // Legge il codice
    $Codice = $GET['Promo'];

    // Elimina la voce
    $result = mysql_query("DELETE FROM Magazzino WHERE Codice='$Codice'") or die(mysql_error());
    }
    ?>
    darbula likes this.

  23. #23
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Citazione Originalmente inviato da mzanella Visualizza messaggio
    La funzione restituisce un vettore unidimensionale, non multidimensionale:
    Vero hai ragione, io mi aspettavo lo stesso comportamento di $_FILES che crea array multidimensionale
    Ultima modifica di darbula : 27-01-2017 alle ore 01.25.00

  24. #24
    attenzion non è connesso Utente AlterBlog
    Data registrazione
    15-01-2017
    Messaggi
    25

    Predefinito

    Non vi sto seguendo..........

  25. #25
    attenzion non è connesso Utente AlterBlog
    Data registrazione
    15-01-2017
    Messaggi
    25

    Predefinito

    Citazione Originalmente inviato da mzanella Visualizza messaggio
    Personalmente inizio ad avere la sensazione di viaggiare alla cieca.
    Mostra i codici attuali con le modifiche effettuate, e chiarisci se $Codice è un vettore, un intero, una stringa o altro.

    In caso di dubbi usa var_dump($Codice) e riportane il risultato.
    Il risultato è NULL

  26. #26
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    C'era un errore di sintassi, è $_GET, non $GET, manca l'underscore:
    Codice PHP:
    $Codice = $_GET['Codice'];
    Puoi vedere una pagina di esempio nel mio spazio, il codice è lo stesso riportato nel messaggio #22 (con la correzione a $_GET).

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •