Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Update multiplo

  1. #1

    Update multiplo

    Buon giorno, ho delle news sulla prima pagina ordinate in base ad un mio criterio, in pratica decido quale deve comparire per prima, seconda, terza etc etc....
    Però vorrei capire quale struttura adottare per far in modo di poter cambiare l'ordine di visualizzazione.
    L'attuale struttura è la seguente:

    codice:
    $sqlIdNews = "select distinct nIdNews, cTitolo, dDataIns, PosizioneNews from TBNEWS where PosizioneNews <> 0 order by dDataIns DESC limit 10";
    $rsIdNews= cExeQuery($sqlIdNews, $Connessione) or die("Impossibile connettersi!");
    
    echo "
    <form method='post' action='UpdateNews.php' enctype='multipart/form-data'>
    <?php
    	if (nNumRows($rsIdNews) > 0) {
    		while ($cRiga = cFetchAssoc($rsIdNews)) {
    			$nIdNews		 = $cRiga['nIdNews'];
    			$cTitolo	 	 = htmlentities($cRiga['cTitolo']);
    			$dDataIns		 = $cRiga['dDataIns'];
    			$PosizioneNews	 = $cRiga['PosizioneNews'];
    							
    			echo "<hr/><p class='max'>Data Inserimento: ". cGiraData($dDataIns,DBHTML)."</p>";
    			echo "<p class='max'>Titolonews: <input type='text' id='cTitolo' name='Ctitolo' value='$cTitolo' style='width:500px !important'/></p>";
    			echo "<p class='max'>Posizione attuale in Primo Piano: <select name='PosizioneNews'>";
    			echo "	<option value='$PosizioneNews'>$PosizioneNews</option>";
    			echo "</select>";
    							
    			$arr = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
    			reset ($arr);
    			echo "Nuova posizione: <select name='NuovaPosizioneNews'>";
    			foreach ($arr as $value) {
    				   echo "	<option value='$value'>$value</option>";
    			}		
    			echo "</select>
    			</p>";
    		}
    	}
    	vFreeResult($rsIdNews);
    ?>
    </form>
    ";
    <input type="button" name="cmdConferma" value="  Conferma" style="width:80px" onClick="subControlla()">
    </form>
    In pratica, per ogni news scelgo la nuova posizione di visualizzazione attraverso la select NuovaPosizioneNews, dopodichè, cliccando su Conferma dovrebbe aggiornarmi in un sol colpo tutte le news interessate...
    Il problema è che non so come si fà un update multiplo.

    Grazie mille e buona giornata....

  2. #2
    rispondo al titolo e non allo script....

    un update multiplo con valori differenti da immettere per ogni record lo fai scorrendo l'array $_POST che lo contiene. devi pero' passare l'id del record interessato altrimenti come faresti a sapere quale record modificare?

    codice:
    foreach($_POST['nome']['id'] as $key => $value) {
    
    mysql_query("update tabella set campo = $value
                     where id = '$key' ");
    }
    tanto per dire come dovrebbe essere il giro del fumo.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    facendo in questo modo mi restituisce solo un record:
    codice:
    $arrayPost = $_POST;
    foreach($arrayPost as $key => $value) {
    	echo $key." => ".$value."
    ";
    }
    Per capire, invio dalla formNews.php alla UpdateNews.php i vari post in questo modo:
    codice:
    $arrayPost = $_POST;
    però poi per leggerli tutti devo scorrerli tramite il foreach giusto?
    grazie

  4. #4
    stampa il POST con

    print_r($_POST)

    devi usare un array multidimensionale per fare quello che vuoi tu. Per questo ti ho detto che non guardavo il tuo script. Non va bene il select perche' ti prende un solo valore ma devi usare una checkbox con lo stesso nome e con l'id come chiave. In pratica ti ho suggerito come fare poi lo dovrai realizzare tu.

    echo "<input type='checkbox' name='ciccio[$id]' value=.....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    sèèè e te pareva che era semplice :|
    forse non mi sono spiegato.
    Ho 10 news e per ognuna ho la possibilità di cambiare tramite select la posizione nella prima pagina...
    Quindi, quando invio nella UpdateNews.php, dovrei avere un array contenente le 10 news modificate nella posizione, per poi inserire questi 10 dati 'modificati' nella Update.

    Però facendo in questo modo ho due risultati:
    codice:
    $arrayPost = $_POST['cTitolo']['nIdNews'];
    print_r($_POST);
    foreach($arrayPost as $key => $value) {
    	echo $key." => ".$value."
    ";
    }
    1) La print_r mi stampa solo la prima news
    2) invece nel foreach mi restituisce questo errore:
    Warning: Invalid argument supplied for foreach() in /var/www/html/Servizi/UpdateNews.php on line 37

    Illuminami
    Grazie millle....
    Cmq continuo a provare

  6. #6
    aspetta aspetta...forse ci sono arrivato!!!
    Domani ti faccio vedere....
    grazie per il momento....
    Buona serata

  7. #7
    ciao, sto facendo in questo modo però nella pagina dell'Update, non mi invia tutti i valori che ho scelto:

    //pagina estrapolo dati
    codice:
    <form action="save.php" method="POST">
    	<input type="submit" value="Invia">
    	
    
    <div class="container">
    	<div class="colonna">
    		<ul class="sortabledemo" id="firstlist">
    			<?php
    			for($elementi=0;$elementi<count($array_colonna1);$elementi++){
    			?>
    				<li class="item" id="firstlist_key<?=$array_colonna1[$elementi];?>">
    					<div class="handle"><?=$elemento[$array_colonna1[$elementi]]['titolo'];?></div>
    					<?=($elementi+1) . " - " . $elemento[$array_colonna1[$elementi]]['contenuto'];?>
    					<input type="text" name="ciccio[<?=$idNews;?>]" value="<?=($elementi+1);?>">
    				
    			<?php
    			}
    			?>
    		[/list]
    	</div>
    	<div class="colonna">
    		<ul class="sortabledemo" id="secondlist">
    			<?php
    			for($elementi=0;$elementi<count($array_colonna2);$elementi++){
    			?>
    				<li class="item" id="secondlist_key<?=$array_colonna2[$elementi];?>">
    					<div class="handle"><?=$elemento[$array_colonna2[$elementi]]['titolo'];?></div>
    					<?=(($elementi+1) + count($array_colonna1)) . " - " . $elemento[$array_colonna2[$elementi]]['contenuto'];?>
    					<input type="text" name="ciccio[<?=$idNews;?>]" value="<?=(($elementi+1) + count($array_colonna1));?>">
    				
    			<?php
    			}
    			?>
    		[/list]
    	</div>
    </div>
    </form>
    //pagina update
    codice:
    $arrayPost = $_POST;
    print_r($arrayPost);
    
    foreach($arrayPost as $key => $value) {
    	echo $key." => ".$value."
    ";
    }
    il print_r mi restituyisce solo questo:
    ciccio => Array

    Come faccio ad inviare tramite POST tutti i valori delle input?

    grazie mille...

  8. #8
    ripartendo dal codice del post precendente, non capisco come fà a riconoscere il post come array bidimensionale..
    nella pagina dove invio i dati per l'update:
    codice:
    $arrayPost = $_POST['ciccio'];
    facendo in questo modomi restituisce solo un valore....

  9. #9
    Originariamente inviato da ANTAGONIA
    ripartendo dal codice del post precendente, non capisco come fà a riconoscere il post come array bidimensionale..
    nella pagina dove invio i dati per l'update:
    codice:
    $arrayPost = $_POST['ciccio'];
    facendo in questo modomi restituisce solo un valore....
    ad una veloce occhiata del tuo form devo dire che non ci ho capito nulla di quello che fai.

    se tu metti value = 'ciccio[]' lasciando vuoto l'indice ci pensa da se a numerarlo.

    Devi inoltre adeguare lo script eliminando una volta per tutte lo short tag php. Quindi tutti quei:

    <?=$elemento ....

    devono diventare:

    <?php echo $elemento ....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    ok...Piero fatto!!!
    Grazie mille...sei come sempre un GLANDE

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.