Visualizzazione risultati 1 fino 6 di 6

Discussione: Php associare ad ogni riga di una select un'azione specifica

  1. #1
    Larof non è connesso Neofita
    Data registrazione
    06-04-2003
    Residenza
    Cosenza
    Messaggi
    18

    Exclamation Php associare ad ogni riga di una select un'azione specifica

    Salve a tutti preciso che sto imparando man mano che vado avanti, in base alle necessità, ad usare php e mysql e ho buona esperienza di altri linguaggi di programmazione (c++, java, perl..).

    ho qui su altervista un db con una sola tabella ordine molto semplice:

    ordine(ID*, Cliente, Prodotti, Stato,Totale).

    Lo stato può assumere questi valori: In Lavorazione, In Consegna, Chiuso.

    ora ho una pagina che stampa a video (ID - Cliente - Prodotti - Totale) degli ordini che hanno Stato == "In Lavorazione".

    vorrei fare in modo che affianco ad ogni riga ci fossero due pulsantini, due collegamenti quello che viene più facile in modo che cliccando sul primo si esegua una query che cambia lo stato da In Lavorazione a In Consegna dell'ordine che sta sulla riga corrispondente e il secondo invece da In lavorazione a Chiuso.

    ho provato a cercare un po in giro ma non ho trovato niente di significativo

    un'altra idea potrebbe essere quella di associare ad ogni id stampato a video come risultato della query un collegamento che esegua la query di cambiamento del campo stato da In Lavorazione a In Consegna, forse soluzione più facile, ma non riesco ad avere idee nemmeno su come procedere per fare questo

    altrimenti mi è venuta un 'altra idea... far stampare a video per ogni riga anche una casella combinata con i tre stati e selezionando uno diverso da quello attuale far partire la query di modifica del campo stato


    questo è il codice della pagina che stampa a video i risultati della query e su cui vorrei aggiungere la funzionalità sopra descritta.
    Codice:
    <? include("check.php"); ?>
    <? include("config.php"); ?>
    <html>
    <head>
    <title> Ordini In Lavorazione </title>
    </head>
    
    
    <body>
    <?php
    
    
    $conn = mysql_connect($server,$username,$password) or die ("Connessione fallita al db<br>");
    $db = mysql_select_db($database,$conn) or die ("Selezione db fallita<br>");
    $sql = 'SELECT * FROM `ordine` WHERE `Stato` = "In Lavorazione";'; 
    $query = mysql_query($sql,$conn) or die ("Query fallita");
    
    while($val = mysql_fetch_array($query))
    {
    	$id = $val["ID"];
    	$cliente = $val["Cliente"];
    	$prodotti = $val["Prodotti"];
    	$totale = $val["Totale"];
    	echo "$id &nbsp;&nbsp;";
    	echo "$cliente &nbsp;&nbsp;";
    	echo "$prodotti &nbsp;&nbsp;";
    	echo "$totale &nbsp;&nbsp;";
    	echo "<br>";
    }
    
    mysql_close($conn);
    ?>
    </body>
    </html>

    potreste indicarmi una strada da seguire? qualche suggerimento?


    grazie mille
    Ultima modifica di Larof : 17-11-2010 alle ore 03.46.20

  2. #2
    Guest

    Predefinito

    cambia la tua pagina cosi
    Codice PHP:
    <?
    // Dati connessione al database
    $db_host = ''; // Host - solitamente localhost
    $db_utente = ''; // Nome utente del Database
    $db_password = ''; // Password del Database
    $db_nomedb = ''; // Nome del Database

    // Effettua la connessione al database
    $dbh=mysql_connect ($db_host, $db_utente, $db_password) or die ('Errore nella stringa di connessione al database: '.mysql_error());
    mysql_select_db($db_nomedb);

    //mdf=modifica da fare
    $mdf = $_GET['mdf'];
    $id = $_GET['id'];

    if(
    $mdf=='In Lavorazione'){
    mysql_query("UPDATE ordine SET Stato = 'In Lavorazione' WHERE id = '$id';");
    }
    if(
    $mdf=='In Consegna'){
    mysql_query("UPDATE ordine SET Stato = 'In Consegna' WHERE id = '$id';");
    }
    if(
    $mdf=='Chiuso'){
    mysql_query("UPDATE ordine SET Stato = 'Chiuso' WHERE id = '$id';");
    }
    ?>
    <html>
    <head>
    </head>
    <body>
    <?php
    $richiesta
    = mysql_query('SELECT * FROM ordine ORDER BY id DESC');
    mysql_query($richiesta);
    if(
    $richiesta) {
    while (
    $stato = mysql_fetch_assoc($richiesta)){
    $id = $stato["ID"];
    $cliente = $stato["Cliente"];
    $prodotti = $stato["Prodotti"];
    $totale = $stato["Totale"];
    echo
    "$id &nbsp;&nbsp;";
    echo
    "$cliente &nbsp;&nbsp;";
    echo
    "$prodotti &nbsp;&nbsp;";
    echo
    "$totale &nbsp;&nbsp;";
    echo
    'Modifica stato in &nbsp';
    echo
    '<a href=questapagina.php?id='.$id.'&mdf=In Lavorazione>In lavorazione</a>';
    echo
    '<a href=questapagina.php?id='.$id.'&mdf=In Consegna>In consegna</a>';
    echo
    '<a href=questapagina.php?id='.$id.'&mdf=Chiuso>Chiuso</a>';
    }
    }
    ?>
    </body>
    </html>
    infondo alla pagina dova ce scritto questa pagina .php metti il nome di questa pagina fammi sapere se funziona

  3. #3
    Larof non è connesso Neofita
    Data registrazione
    06-04-2003
    Residenza
    Cosenza
    Messaggi
    18

    Predefinito

    sembra proprio funzionare per mettere gli ordini in Chiuso ma se clicco in lavorazione setta come stato solo In e stessa cosa per in consegna setta come stato solo In. devo mettere degli apici singoli tipo 'In Lavorazione'?

    ho risolto inserendo In%20Lavorazione :))

    e se non chiedo troppo puoi spiegarmi come funziona questo pezzo?
    echo '<a href=questapagina.php?id='.$id.'&mdf=In Lavorazione>In lavorazione</a>';
    echo '<a href=questapagina.php?id='.$id.'&mdf=In Consegna>In consegna</a>';
    echo '<a href=questapagina.php?id='.$id.'&mdf=Chiuso>Chiuso </a>';
    }
    Ultima modifica di Larof : 17-11-2010 alle ore 18.42.50

  4. #4
    Guest

    Predefinito

    io direi di metter dei _ cioe dove c'è scritto in lavorazione cambia con in_lavorazione stessa cosa per in consegna.
    fai attanzione a cambiare dappertutto.
    l'ultimo pezzo funziona che passa delle informazioni in get ; passa id e il cambiamento che devi fare; ti sei ricordato di cambiare questapagina.php con il nome della pagina???? mi posti il codice com'e adesso sul tuo sito per favore

  5. #5
    Larof non è connesso Neofita
    Data registrazione
    06-04-2003
    Residenza
    Cosenza
    Messaggi
    18

    Predefinito

    Citazione Originalmente inviato da ciberioegiro Visualizza messaggio
    io direi di metter dei _ cioe dove c'è scritto in lavorazione cambia con in_lavorazione stessa cosa per in consegna.
    fai attanzione a cambiare dappertutto.
    ho risolto passando In%20Lavorazione così la passa con lo spazio e non devo cambiare dappertutto

    Citazione Originalmente inviato da ciberioegiro Visualizza messaggio
    l'ultimo pezzo funziona che passa delle informazioni in get ; passa id e il cambiamento che devi fare; ti sei ricordato di cambiare questapagina.php con il nome della pagina???? mi posti il codice com'e adesso sul tuo sito per favore
    ah capito si si ho cambiato questa pagina.php in ordiniInLavorazione2.php e al moneto dell'update si ricarica la stessa pagina :)

    ecco il codice di ordiniInLavorazione2.php
    Codice:
    // linea che controlla che si è loggati e la session è aperta
    <? include("check.php"); ?>
    //  file dati di connessione
    <? include("config.php"); ?>
    
    <?php
    $conn = mysql_connect($server,$username,$password) or die ("Connessione fallita al db<br>");
    $db = mysql_select_db($database,$conn) or die ("Selezione db fallita<br>");
    
    $mdf = $_GET['mdf']; 
    $id = $_GET['id']; 
      
      if($mdf=='In Lavorazione'){ 
      mysql_query("UPDATE ordine SET Stato = 'In Lavorazione' WHERE id  = '$id';"); 
      } 
      if($mdf=='In Consegna'){ 
      mysql_query("UPDATE ordine SET Stato = 'In Consegna' WHERE id = '$id';"); 
      } 
      if($mdf=='Chiuso'){ 
      mysql_query("UPDATE ordine SET Stato = 'Chiuso' WHERE id  = '$id';"); 
      } 
    ?> 
    
    
    
    <html>
    <head>
    <title> Ordini In Lavorazione </title>
    </head>
    
    
    <body>
    
    <?php 
    $richiesta = mysql_query('SELECT * FROM ordine ORDER BY id ASC);         
        mysql_query($richiesta); 
        if($richiesta) { 
        while ($stato = mysql_fetch_assoc($richiesta)){ 
           $id = $stato["ID"]; 
             $cliente = $stato["Cliente"]; 
             $prodotti = $stato["Prodotti"]; 
             $totale = $stato["Totale"]; 
        echo "$id &nbsp;&nbsp;"; 
        echo "$cliente &nbsp;&nbsp;"; 
        echo "$prodotti &nbsp;&nbsp;"; 
        echo "$totale &nbsp;&nbsp;"; 
        echo ' &nbsp; &nbsp; Modifica stato in &nbsp'; 
      echo '<a href=ordiniInLavorazione2.php?id='.$id.'&mdf=In%20Lavorazione>In lavorazione</a> &nbsp; &nbsp;'; 
      echo '<a href=ordiniInLavorazione2.php?id='.$id.'&mdf=In%20Consegna>In consegna</a> &nbsp; &nbsp;'; 
      echo '<a href=ordiniInLavorazione2.php?id='.$id.'&mdf=Chiuso>Chiuso a>&nbsb; &nbsp;</';
      echo "<br>";
        } 
        } 
     mysql_close($conn);
    ?>
    
    </body>
    </html>


    vorrei fare anche in modo, per dare una visibilità immediata, che ogni campo delle diverse righe sia visualmente sulla stessa colonna hai idee su questo? (lo so che ti sto rompendo)

    se vuoi vedere la pagina è qusta http://larof.altervista.org/ordiniInLavorazione3.php
    Ultima modifica di Larof : 17-11-2010 alle ore 19.54.13

  6. #6
    Guest

    Predefinito

    nessun disturbo nn ti preoccupare te vuoi fare in modo che si veda in che stato è attualmente l'ordine giusto

Regole di scrittura

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