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

    Aggiornamento dati mysql con PHP

    Buonasera, vi chiedo un attimo del vostro tempo per darmi una mano, non sono esperto in PHP, ma riesco a creare database, inserire, modificare e cancellare dati tramite PHP, il problema è il seguente:

    ho la mia pagina php (index.php) che carica i date presenti nella tabella "nomi", li carica tutti in una tabella nel seguente modo:

    codice:
    <form method="post">
    <input name=id value=$xid><input name=nome value=$xnome> <input name=cognome value=$xcognome> <input name=eta value=$xeta>
    <input name=id value=$xid><input name=nome value=$xnome> <input name=cognome value=$xcognome> <input name=eta value=$xeta>
    <input name=id value=$xid><input name=nome value=$xnome> <input name=cognome value=$xcognome> <input name=eta value=$xeta>
    ...
    <input name=id value=$xid><input name=nome value=$xnome> <input name=cognome value=$xcognome> <input name=eta value=$xeta>
    <input type="submit" value="SALVA" name="submit">
    </form>
    e cosi via va caricando tutti i nomi, cognomi ed eta nelle caselle input, la mia domanda è:
    come faccio a salvarli se modifico piu di uno, se faccio la solita procedura mi salva soltanto l'ultimo record, immagino perche prende l'ultimo nome del campo e non tutti

    il codice per aggiornare i dati è:
    codice:
    if ($_POST['submit']) {
    database_connect();
    $xid= $_POST['id'];
    $xnome= $_POST['nome'];
    $xcognome= $_POST['cognome'];
    $xeta= $_POST['eta'];
    			
    $sql = "UPDATE nomi SET nome='$xnome', cognome='$xcognome', eta= '$xeta', 
    WHERE id='$id'"; 
    $query = mysql_query($sql)or die("ERRORE: ". mysql_error()); 	
    }
    Aiutatemi!
    grazie

    Solidus
    -----------------
    R.I.P. Kurt Cobain

  2. #2
    Devi creare dei nomi di variabile dinamici, magari con un numero progressivo.
    Questo perché, altrimenti, ogni singola riga di dati (quando passata per form) ti sovrascrive la precedente.
    Ora... visto che il lavoro da fare è questo, secondo me, devi un attimo rivedere la filosofia di base dello script, altrimenti dovresti fare tante query quante righe hai, visto che per ogni modifica dovresti andare a specificare per quale ID della tabella applicare le modifiche.

    Magari spiegaci quello cui ti serve la pagina, poi vediamo come aiutarti.
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  3. #3
    Potresti anche integrare Ajax..creare una funzione Update in cui viene effettuato l'update, leggendo i dati relativi.

    Es.

    Codice PHP:
    <form method="post">
    <
    input name=id value=$xid>
    <
    input id='name1' name=nome value=$xnome
    <
    input id='cognome1' name=cognome value=$xcognome
    <
    input id='eta1' name=eta value=$xeta>
    <
    input type='button' value='Salva' onclick="Update('$xid','1')" />
    </
    form
    Ovviamente è solo un semplice esempio, poi dovresti creare la funzione Update in javascript, che richiama il file PHP che effettua l'update sul DB

  4. #4
    Si ok, ma è la stessa soluzione, solo con uno script diverso e non in PHP: tanti update quanti righi sono presenti, e con le variabili dinamicamente rinominate per indicare quali sono i righi del DB da aggiornare.
    Torno a ripetere: il problema non è tanto il metodo, ma secondo me proprio l'approccio allo script.
    Se sicuro che convenga generare un'unica form con tutti i risultati della query esposi e pronti per la modifica?
    Non ti conviene fare in due step?
    Primo step: lista dei vari record con selezione dei dettagli di ogni singolo record.
    Secondo step: form con i dati di un singolo record del DB ed un unica form con uniche variabili.

    Pensaci su.
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  5. #5
    Bè si Alcio, il tuo è un discorso ragionevole e giusto..ma magari lo ha fatto così perchè ha necessità che sia così.

    O può anche essere che magari non aveva trovato altra soluzione.

  6. #6
    Grazie per le risposte, per essere il piu chiaro possibile vi do il collegamento della pagina dove sto facendo le mie prove:

    http://www.rosver.com/flessibili/php/prova2.php

    la pagina carica tutti i record usando input dello stesso nome (codice, descrizione, categoria, etc) per creare ed eliminare non ci sono problemi, ma in questa pagina è possibile modificare tutti i record, il problema è salvarli in un colpo solo, mi prende soltanto l'ultimo record, come dice alcio74 perche gli input hanno lo stesso nome... il codice usato è il seguente:

    codice:
    if ($_POST['submit'])
    	{
    		database_connect();
    		
    		$codice = $_POST['CODICE'];
    		$descrizione = $_POST['DESCRIZIONE'];
    		$prezzo = $_POST['TPREZZO'];
    		$categoria = $_POST['CATEGORIA'];
    		
    		foreach($codice as $xcodice)
    		{
    
    			print $xcodice.', ';
    		}
    			
    		if($codice=="") $foutbericht .= "INSERISCE IL CODICE.
    ";
    		
    
    		if($foutbericht) echo "
    " . $foutbericht . "
    <input name=\"back\" type=\"button\" value=\"&lt; Back\" onClick=\"history.go(-1)\">";
    		else {
    			//foreach($codice as $xcodice)
    			//{
    			$sql = "UPDATE articoli
    			SET CODICE='$codice', DESCRIZIONE='$descrizione', PREZZO= '$prezzo', CATEGORIA='$categoria'
    			WHERE CODICE='$codice'"; 
    			$query = mysql_query($sql)or die("ERRORE: ". mysql_error());
    			//}
    			}
    			 	
    			if($query)  
    		$i=0;
    		database_connect();		
    		$select = "SELECT * FROM articoli";
    		$result = mysql_query($select);
    		$error = mysql_error();
    		
    		while($nieuws = mysql_fetch_object($result)){	
    		$codice = 		$nieuws->CODICE;
    		$descrizione = 	$nieuws->DESCRIZIONE;
    		$prezzo = 		$nieuws->PREZZO;
    		$categoria = 	$nieuws->CATEGORIA;
    		
    		$i++;
    		print ("<tr><td><input name='CATEGORIA' value='$categoria'></td> <td><label style='display:none'>$codice</label><input name='CODICE' value='$codice' READONLY></td> <td><input name='DESCRIZIONE' value='$descrizione'></td><td width='150px'><input style='color: #FF0000' name='LPREZZO' id='LPP$i' value='$prezzo' DISABLED><input type='text' id='TPP$i' name='TPREZZO' value='$prezzo' style='display:none'></td>  <td align='center'><input type='checkbox' id='TCC$i' onClick='nascondi$i();' name='TC'>
    		<script type='text/javascript'>
    		function nascondi$i(){
    		if (document.articoli.TCC$i.checked){
    		document.getElementById('TPP$i').style.display = 'inline';
    		document.getElementById('LPP$i').style.display = 'none';
    		document.articoli.TPP$i.value=document.articoli.LPP$i.value;
    		}
    		else {
    		document.getElementById('TPP$i').style.display = 'none';
    		document.getElementById('LPP$i').style.display = 'inline';
    		document.articoli.LPP$i.value=document.articoli.TPP$i.value;
    		}
    		}
    		</script></td></tr>");}
    		include "fine.php";	
    			
    		
    			}
    qualche idea?
    -----------------
    R.I.P. Kurt Cobain

  7. #7
    Senti... onestamente non mi viene in mente alcun tipo di sintassi per fare un update di valori diversi su colonne altrettanto diverse in una sola query.
    Stavo pensando alla possibilità addirittura di usare i SELECT in SQL, ma poi ho pensato che sto fuori di testa.

    Non credo proprio si possa fare... però magari ci sono un paio di persone che potrebbero aiutarti.
    Sto pensando a PieroMac e Nicola: loro due sono mostruosi con i DB.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  8. #8
    STOP al tempo: vedi un po' se in questo ARTICOLO si fa qualcosa che può servire anche a te???

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  9. #9
    piu o meno ho capito l'articolo, ma non so come applicarlo al mio caso, sembra ce vada bene per pocchi record, il mio DB ha 1000 record, faccio ancore un po di ricerche, poi vediamo, non ho alternativa ma modificare singolarmente ogni record.
    La modifica in blocco mi interessa sopratutto per effeturare aumenti ai prezzi, essiste una funzione con MySql per farlo, cosi avrei risolto il mio problema, qualcosa di tipo:

    <input name=Y value="">
    <input name=X value="">

    (UPDATE articoli SET prezzo = prezzo * $X WHERE categoria = $Y )

    buona giornata
    Solidus
    -----------------
    R.I.P. Kurt Cobain

  10. #10
    Un UPDATE del genere ha un senso ed è fattibilissimo, però la risposta alla tua domanda è insita nella struttura stessa della query: se si vuole modificare per ogni record, differenti colonne, con differenti valori, allora si deve procedere singolarmente o per categorie.

    Per quello che riguarda l'articolo, ti consiglio di fare alcune prove in locale, su di un DB di sviluppo e vedere poi se possa effettivamente fare al caso tuo.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

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.