Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Update di più righe

  1. #1

    Update di più righe

    Ciao a tutti,
    sto impazzendo per risolvere questo:

    Con uno script php vorrei modificare CONTEMPORANEAMENTE i campi di una tabella in un'unico processo.
    Passo n valori di un form con POST. Dico n perchè i campi del form gli aggiungo dinamicamente.
    Quindi avrò <select name="fermata1">, <select name="fermata2"> ecc…

    Questo è lo script:
    Le variabili $num, $id_linea e $id_corsa le passo con GET
    Codice PHP:
    for($i=1;$i<=$num;$i++) 
            {            
            
    $id_fermata=$_POST['fermata'.$i];    
            
    $query4 "UPDATE linea_corsa_fermata SET 
            id_fermata ='
    $id_fermata', 
            posizione = '
    $i'
            WHERE  id_corsa  = 
    {$id_corsa}";            
            if (
    mysql_query($query4$db))
            {
            echo 
    "

    Fermata modificata.</p>';
            }
            else
            {
            echo "

    Inserimento non riuscito.</p>";
            echo "

    " . mysql_error() . "
    </p>";
            }
            } 
    Il comando print_r($query4); per un esempio che ho fatto produce questo:
    UPDATE linea_corsa_fermata SET id_fermata ='20', orario = '01:02:00', posizione = '1' WHERE id_corsa = 63
    Fermata modificata.
    UPDATE linea_corsa_fermata SET id_fermata ='25', orario = '09:11:00', posizione = '2' WHERE id_corsa = 63
    Fermata modificata.
    UPDATE linea_corsa_fermata SET id_fermata ='19', orario = '10:07:00', posizione = '3' WHERE id_corsa = 63
    Fermata modificata.

    Sembra funzionare tutto a meraviglia, in realtà nel DB mi salva tre campi uguali. Prende l'ultima riga con id_fermata='19' e me la salva su tutti i tre campi da modificare.

    Come risolvo questo problema

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,448
    Scusa, ma secondo te che altro dovrebbe fare?
    Gli stai dicendo di modificare $num volte la stessa riga, quella con id_corsa=63, quindi ovvio che alla fine vedi solo l'ultima modifica, sulle altre ci riscrivi sopra.

    Oppure ho capito male io?

  3. #3
    Ma ci sono tre righe con id-corsa=63. Devo cambiare i campi delle righe con quell'id.

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,448
    Beh, se hai 3 righe con lo stesso id-corsa allora probabilmente hai progettato male la tabella, non dovrebbe essere un valore univoco?

    Se tu esegui quelle query, MySQL applica i cambiamenti a tutte le righe con id.corsa=63 ad ogni giro, non è che la lprima la fa sulla prima riga, la seconda sulla seconda e la terza sulla terza, modifica 3 volte tutte e 3 le righe.

    Ripeto, molto probabilmente hai progettato male la tabella, non è né colpa di MySQL né di PHP.

  5. #5
    Grazie mille Alhazred.
    Mi stavo impelagando un pò.

    Ho risolto, il problema era di progettazione…
    Grazie ancora

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 © 2024 vBulletin Solutions, Inc. All rights reserved.