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

    Identificare i bottoni di una form generati da un ciclo php

    Salve a tutti,
    ho un problema che mi sta distrugendo le giornate.
    Spero vivamente che ci sia qualche anima pia che mi riesca a dare una mano.

    Il mio problema è quello di identificare un bottone di una form generato da un ciclo while in php.

    Per capirci, ho una lista di oggetti (nel file lista.php)che possono essere acquistati; la lista degli oggetti, ovviamente, viene fuori da un database (mysql), e ad ogni oggetto corrisponde un bottone, a seconda del bottone premuto devo sapere quale oggetto è stato selezionato.

    il codice è:
    Codice PHP:
    <?php   
    session_start
    ();   
    include(
    JPATH_ROOT.'/components/com_php/files/funzioni.php');   
    $data = new MY_JConfig();  
    $data->connetti();   
    $lista_sql $data->query('SELECT * FROM lista');   
    if (
    mysql_num_rows($lista_sql) > 0){    
      echo 
    "<form action=\"".JRoute::_('index.php?option=com_php&Itemid=12')."\" method=\"post\" runat=\"server\">";
      echo 
    "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
      while (
    $lista_obj=$data->estrai($lista_sql)){       
        
    $img=$lista_obj->img;       
        
    $nome_prod=$lista_obj->nome_prod;         
        
    $prezzo=$lista_obj->costo;       
        
    $quota=$lista_obj->id_prod;       
        
    $prenota=$lista_obj->id_prod;       
        echo 
    "<tr>         
          <td><img src=\"../images/"
    .$img."\"></td>         
          <td>"
    .$nome_prod."</td>         
          <td><label>Prezzo: </label>"
    .$prezzo."€
    <label>Quote:</label></td>         
          <td><input type=\"text\" id=\"quota"
    .$quota."\" name=\"quota\" style=\"width:70px\"></td>         
          <td><input type=\"submit\" value=\"Prenota\" id=\"prenota"
    .$prenota."\"> importo massimo: €</td>       
        </tr>"
    ;     
      }   
      echo 
    "</table>";   echo "</form>";   
    }   
    ?>
    spero di essere stato chiaro e soprattutto spero che qualcuno mi riesca a dare una mano.
    Grazie a tutti anticipatamente.

  2. #2
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380
    Per capirci, ho una lista di oggetti (nel file lista.php)che possono essere acquistati; la lista degli oggetti, ovviamente, viene fuori da un database (mysql), e ad ogni oggetto corrisponde un bottone, a seconda del bottone premuto devo sapere quale oggetto è stato selezionato.
    vediamo se ho capito, hai bisogno di "$nome_prod" ?

  3. #3
    Innanzi tutto grazie per la risposta,
    comunque no, avrei bisogno di riconoscere quale bottone ho cliccato.

    Cerco di spiegarmi meglio.

    Come puoi vedere nella form del codice che già ho postato, c'è anche un campo "quota" dove devo inserire una cifra (non superiore al prezzo dell'oggetto), e una volta premuto il bottone "prenota" associato a quell'oggetto e quella quota mi porta in una pagina di conferma(conferma.php) dove c'è una form che invia una mail di ringraziamenti, se va a buon fine quella form, nella pagina di partenza(lista.php) mi deve portare la somma delle quote versate per quell'oggetto.

    ti posto anche il codice di conferma.php
    Codice PHP:
    <?php   
    session_start
    ();   
    include(
    JPATH_ROOT.'/components/com_php/files/funzioni.php');   
    $data = new MY_JConfig();   
    $data->connetti();      if(isset($_POST['nome'])&&isset($_POST['cognome'])&&isset($_POST['email'])){     if(!isset($_POST['auguri'])){       
    $t="donatore";       
    $v=array($_POST['nome'],$_POST['cognome'],$_POST['email']);       $r="nome,cognome,email";       
    $data->inserisci($t,$v,$r);     
    }else{       
    $t="donatore";       $v=array($_POST['nome'],$_POST['cognome'],$_POST['email'],$_POST['auguri']);       $r="nome,cognome,email,auguri";       
    $data->inserisci($t,$v,$r);           
    }     
    $header "To: <mail> \n";     
    $header .= "From:".$_POST['email']."\n";     
    $header .= "X-Mailer: Inviato del sito\n\n";     
    $oggetto "Lista di nozze";     
    $messaggio $_POST['auguri']."\n da ".$_POST['nome']." ".$_POST['cognome']."\n\n";     if(mail("g_stefano@hotmail.it",$oggetto,$messaggio,$header)){       
    echo 
    "email inviata con successo
     
    Le coordinate bancarie per il versamentosono le seguenti:
             
    - Intestatario: Taldetali
             
    - IBAN: xxx
             
    grazie per il regalo.
             
    P.s. la e-mail potrebbe essere finita nella posta indesiderata!


             
    <a href=\"index.php?option=com_php&Itemid=7\">torna all lista nozze</a>

    "
    ;     
    }else{       
    echo 
    "email non inviata";     
    }   

    ?>
    <form action="<?php $_SESSION['PHP_SELF'?>"method="post" runat="server"> 
    <label>Nome:</label><input type="text" name="nome" id="nome">
     
    <label>Cognome:</label><input type="text" name="cognome" id="cognome">
     <label>Email:</label><input type="text" name="email" id="email">
     
    <label>Auguri:</label><textarea name="auguri" id="auguri" style="width:300px; height:150px"></textarea>
     
    <input type="submit" name="conferma" id="conferma" value="Conferma">
     
    </form>
    ovviamente il codice non è completo, appunto perchè non so come completarlo.

  4. #4
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380
    se va a buon fine quella form, nella pagina di partenza(lista.php) mi deve portare la somma delle quote versate per quell'oggetto.
    potresti far così:
    nel file conferma.php leggi anche la variabile $quota inviata dal file lista.php
    poi se la mail è andata a buon fine puoi scegliere più strade :
    1. redirect con :
    <? header("location: http://lista.php?quota=".$quota.""); ?>

    2. con un button (quindi un form)
    3. un link di terminazione del tipo "clicca per completare"
    con <href="http://lista.php?quota=".$quota."">fine</a>

    nel file lista.php ovviamente avrai:
    $quotainviata=$_POST['quota']
    Attenzione perchè la variabile di nome $quota la utilizzi già nel form

    spero di averti dato uno spunto in più o meglio ancora una soluzione

  5. #5
    Il problema principale è che se ho 3 oggetti estrapolati dal database, l'algoritmo mi crea una tabella con tre righe contenenti 1 pulsante(prenota) per ognuna, ma quando vado a cliccare, per esempio, sul secondo pulsante non riconosce che ho cliccato il sencondo, ma sempre l'ultimo.

    Perciò il mio problema è quello di riconoscre quale pulsante premo.
    Inizialmente ho pensato di poterlo risolvere con php, ma mi sta venendo il dubbio di dover utilizzare javascript, il problema è che neanche in js riesco a recuperare il valore del pulsante premuto .

  6. #6
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380
    scusa ma ciascun pulsante non ha un id? o qualcosa di univoco?

  7. #7
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Creare un form intorno ad ogni campo quota e relativo submit andando ad unire in una sola cella i due elementi. Se hai ancora necessità di discriminare la riga della tabella, puoi utilizzare un campo nascosto in cui inserisci un progressivo.

    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  8. #8
    Grino scusa ma non ho capito come devo fare.
    Ad ogni riga della tabella creo una form con il relativo bottone submit??

  9. #9
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Codice PHP:
    <?php    
    session_start
    ();    
    include(
    JPATH_ROOT.'/components/com_php/files/funzioni.php');    
    $data = new MY_JConfig();   
    $data->connetti();    
    $lista_sql $data->query('SELECT * FROM lista');    
    if (
    mysql_num_rows($lista_sql) > 0){     
        echo 
    "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
        while (
    $lista_obj=$data->estrai($lista_sql)){        
            
    $img=$lista_obj->img;        
            
    $nome_prod=$lista_obj->nome_prod;          
            
    $prezzo=$lista_obj->costo;        
            
    $quota=$lista_obj->id_prod;        
            
    $prenota=$lista_obj->id_prod;        
            echo 
    "
                <tr>          
                    <td><img src=\"../images/"
    .$img."\"></td>          
                    <td>"
    .$nome_prod."</td>          
                    <td><label>Prezzo:</label>"
    .$prezzo."€
    <label>Quote:</label></td>         
                    <td>
                        <form action=\""
    .JRoute::_('index.php?option=com_php&Itemid=12')."\" method=\"post\" runat=\"server\">
                            <input type=\"text\" id=\"quota"
    .$quota."\" name=\"quota\" style=\"width:70px\">
                            <input type=\"submit\" value=\"Prenota\" id=\"prenota"
    .$prenota."\"> importo massimo: €
                        </form>
                   </td>       
         </tr>"
    ;      
      }    
      echo 
    "</table>";       
    }    
    ?>
    Orientativamente... non devi avere un form con n pulsanti submit, ma n form, ognuno con il suo submit. Se hai bisogno di una quanche discriminante sulla riga puoi inserire un campo nascosto in ogni form con un progressivo, un id o quel che ti pare per capire quale riga della tabella è stata inviata.

    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  10. #10
    Ti ringrazio sei stato chiarissimo.
    Ora prova e ti faccio sapere.

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.