Visualizzazione dei risultati da 1 a 5 su 5

Discussione: function aggiorna

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929

    function aggiorna

    ciao a tutti,
    ho un problema con una funzione per aggiornare il campo quantita nel database
    allora attualmente uso questa funzione passandogli una location cosi
    codice:
    ordine.php?qt_1=8&q_2=20&action=aggiorna
    codice:
    // FUNZIONE PER AGGIORNARE LE QUANTITA
    function aggiorna_quantita($campo){
    	
    	$location = $_SERVER['QUERY_STRING'];
    	$location = explode("action=aggiorna", $location);
    	$location[0] = explode("&", $location[0]);
    	for ($i = 0; $i < count($location[0])-1; $i++){
    		$primo = explode("qt_", $location[0][$i]);
    		$dati = explode("=", $primo[1]);
    		if($dati[1] == 0){
    		$dati[1] = 1;
    		}
    		include('Connections/conn.php');
    		$query_aggiorna = "UPDATE `carrello` SET quantita = '$dati[1]' WHERE `id` = '$dati[0]'";
    		mysql_query($query_aggiorna, $connessione) or die(mysql_error());
    	}
    	header('Location: ordine.php?lng='.$campo);
    	exit;
    }
    e tutto funziona perfettamente, il problema si pone se oltre al campo quantita voglio inserire il campo note passandogli una location cosi
    codice:
    ordine.php?qt_1=8&n_1=testo&qt_2=16&n_2=testo_prova&action=aggiorna
    come devo implementare la funzione?

    grazie mille

  2. #2
    Innanzitutto questa location è sbagliata:

    ordine.php?qt_1=8&q_2=20&action=aggiorna

    infatti hai scritto q_2 anziché qt_2.

    Ma perché andarti ad impelegare in quella maniera? Non sarebbe più semplice sfruttare il fatto che le variabili passate tramite GET le puoi trovare nell'array $_GET?

    con un ciclo del genere

    foreach($_GET as $elem => $value)

    ti prendi il nome di tutte le var.li ed il loro rispettivo valore.

    Poi, non puoi costruirti una funzione super generica che ti faccia tutto se gli passi 5 o 20 o 30 parametri. Non è un modo giusto per programmare.

    Al limite puoi sfruttare ad esempio il fatto che le prime tot var.li riguardano un solo record. Ad esempio

    ordine.php?qt_1=8&n_1=testo&qt_2=16&n_2=testo_prov a&action=aggiorna

    Qui sai che le prime 2 var.li riguardano un record.

    quindi potresti fare una cosa del genere.

    $i = 0;

    foreach ($_GET as $elem => $value)
    {
    if ($i == 0)
    {
    $quantita = value;
    $id = intval(substr($elem, 3, 1));
    $ i = 1;
    }
    else
    {
    $query_aggiorna "UPDATE `carrello` SET (quantita='$quantita', note='$value')
    WHERE id =$id";
    $i = 0;
    }
    }

    Spero di esserti stato di aiuto

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929
    ciao scusa se rispondo solo adesso, ho fatto cosi come mi hai detto:
    Codice PHP:
    function aggiorna_quantita($campo){
        
    $i 0;
        foreach (
    $_GET as $elem => $value){
            if (
    $i == 0){
                
    $quantita $value;
                
    $id intval(substr($elem31));
                
    $i 1;
            }else{
                include(
    'Connections/conn.php');
                
    $query_aggiorna "UPDATE `carrello` SET quantita = '$quantita', note = '$value' WHERE id = '$id'";
                
    mysql_query($query_aggiorna$connessione) or die(mysql_error());
                
    $i 0;
            }
        }
        
    header('Location: ordine.php?lng='.$campo);
        exit;

    ma in questo modo se ho una location cosi:
    ?qt_9=5&n_9=testo&action=aggiorna
    funziona ma se ho una location cosi:
    ?qt_9=5&n_9=testo&qt_10=1&n_10=testo&action=aggior na
    aggiorna solo uno....


  4. #4
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929
    ho fatto cosi sembra andare
    Codice PHP:
    function aggiorna_quantita($campo){

        foreach (
    $_GET as $elem => $value){
            if(
    $elem != 'action'){
                
    $tr_id explode("_"$elem);
                
    $id $tr_id[1];
                if(
    $tr_id[0] == 'qt'){
                    include(
    'Connections/conn.php'); 
                    
    $query_aggiorna "UPDATE `carrello` SET quantita = '$value' WHERE id = '$id'"
                    
    mysql_query($query_aggiorna$connessione) or die(mysql_error()); 
                }elseif(
    $tr_id[0] == 'n'){
                    include(
    'Connections/conn.php'); 
                    
    $query_aggiorna "UPDATE `carrello` SET note = '$value' WHERE id = '$id'"
                    
    mysql_query($query_aggiorna$connessione) or die(mysql_error()); 
                }
            }
        }

        
    header('Location: ordine.php?lng='.$campo);
        exit;


  5. #5
    OK!

    Ciao.

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.