Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: Form e Cicli

  1. #1
    Utente di HTML.it L'avatar di gorn
    Registrato dal
    Jun 2010
    Messaggi
    91

    Form e Cicli

    Salve a tutti,
    Ho un problema che proprio non riesco a spiegarmi.
    La situazione è la seguente: in una pagina .php vado a costruire dinamicamente una lista di utenti prelevati con una select. Il ciclo che si occupa di farlo è un while. Potendo dare la possibilità di cancellare/inserire degli utenti di questa lista i dati vengono racchiusi in un form.
    Tutto funziona correttamente esclusa la prima riga. Mi spiego meglio: sia in inserimento che in eliminazione per il primo dato (visualizzato) il form non compare mentre per gli altri si (non lo avrei mai notato senza l'ispeziona elemento di chrome ). Ho provato a creare il form fuori da ciclo while ma così facendo il form non compare per nessun dato.
    Spero di essermi spiegato anche se la problematica è davvero particolare e rimango a disposizione delle anime pie che mi vorranno aiutare per ulteriori spiegazioni.
    Ciao a tutti.
    Il problema non è la caduta, ma l'atterraggio (Cit.)

  2. #2

    Re: Form e Cicli

    Originariamente inviato da gorn
    Spero di essermi spiegato...
    Per spiegare ti sei spiegato, ma senza codice si dovrebbe spolverare la sfera di cristallo
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it L'avatar di gorn
    Registrato dal
    Jun 2010
    Messaggi
    91
    Allego la parte di creazione della lista (quindi il ciclo while).
    Codice PHP:
    $Ag mysql_query("SELECT IDUtenteMaster, IDUtenteDetail, cognome, nome FROM agenti, utenti WHERE IDUtenteDetail = id AND IDUtenteMaster = $id");
    $tabella "agenti";
    //creo dinamicamente la tabella con i dati trovati
    while ($row mysql_fetch_assoc($Ag)) {
       
    $ret .= "<tr class=\"$td_class\">";
       
    $ret .= "<td width=\"16px\" class=buttons>";
       
    $ret .= "<form action=\"?q=sistema/utenti/eliminaAgenti\" method=post>";
       
    $ret .= html_par("IDUtenteMaster"$id);
       
    $ret .= html_par("tabella"$tabella);
       
    $ret .= html_par("IDUtenteDetail"$row["IDUtenteDetail"]);
       
    $ret .= "<input alt=\"elimina agente\" type=\"image\" onclick=\"return askConfirm();\"    src=\"images/icons/delete.gif\">";
       
    $ret .= "</form>";
       
    $ret .= "</td>";
       
    $ret .= "<td nowrap width=\"86px\">"."&nbsp".$row["cognome"]."&nbsp".$row["nome"]."</td>";
       
    $ret .= "</tr>";
       
    $td_class = ($td_class == "light" "dark" "light");
    }
       
    $ret .= "</table>"
    Questa porzione di codice viene usata per cancellare degli elementi dalla lista. Funziona correttamente per tutti gli elementi tranne il primo (della lista)
    Il form richiama una funzione presente nella stessa pagina attraverso un case ( case EliminaAgenti -> funzione di eliminazione)

    Codice PHP:
    function eliminaAgente_utente()
    {
      global 
    $utente;
      if (!
    check_login() || $utente->ruolo R_ADMIN)
      {
        return 
    ACCESS_DENIED;
      }

      
    $master $_POST['IDUtenteMaster'];
      
    $detail $_POST['IDUtenteDetail'];
      if (
    $id == "-1")
      {
       
    append_msg("Eliminzione record non riuscita.");
      }
      else
      {
      
    $strSql "DELETE FROM agenti WHERE IDUtenteMaster= $master AND     IDUtenteDetail= $detail";
      if (
    ExecuteQuery($strSql))
      {
       
    append_msg("Eliminzione record riuscita.");
      }
      else
     {
      
    $msg "Eliminzione utente non riuscita.";
      
    append_msg($msg);
     }
     }
     return 
    OK;

    Spero che cosi possa essere tutto più chiaro.
    Il problema non è la caduta, ma l'atterraggio (Cit.)

  4. #4
    Prova a visualizzare da browser l'html della pagina contenente l'elenco e controlla che i valori presenti nel primo elemento della lista siano corretti.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Utente di HTML.it L'avatar di gorn
    Registrato dal
    Jun 2010
    Messaggi
    91
    I dati della prima riga sono corretti e facendo un po di debug anche i valori che andrebbero poi passati alla funzione sono corretti.
    Il problema è che manca la riga
    Codice PHP:
    <form action=\"?q=sistema/utenti/eliminaAgenti\" method=post> 
    (scoperto sfruttando l'ispeziona elemento di chrome... su tutti gli altri elementi compare ma sul primo non c'è verso di farglielo inserire)
    e quindi non andrò mai a chiamare la funzione di eliminazione.
    Magari ho commesso uno stupidissimo errore ma sinceramente non riesco a trovarlo.

    Comunque vi ringrazio per l'aiuto che gia mi state dando.
    Il problema non è la caduta, ma l'atterraggio (Cit.)

  6. #6
    Alla prima iterazione $td_class non è valorizzato, magari il problema nasce da lì. Prova a valorizzare $td_class prima del while:

    Codice PHP:
    ...
    $td_class "light";

    while (
    $row mysql_fetch_assoc($Ag)) { 
    ... 
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    Utente di HTML.it L'avatar di gorn
    Registrato dal
    Jun 2010
    Messaggi
    91
    Scusa... non mi ero accorto che non avevo inserito queste due righe nel codice di prima
    Codice PHP:
    $ret .= "<table><td></td><td nowrap class=\"label\">Agenti associati</td><tr>";
    $td_class "light"
    Sono a corto di idee...
    La cosa strana è che l'html generato presenta tutti i campi all'interno del form correttamente valorizzati ma mancano le righe del form stesso (<form ecc...> e </form>)
    Il problema non è la caduta, ma l'atterraggio (Cit.)

  8. #8
    Originariamente inviato da gorn
    Scusa... non mi ero accorto che non avevo inserito queste due righe nel codice di prima
    Codice PHP:
    $ret .= "<table><td></td><td nowrap class=\"label\">Agenti associati</td><tr>";
    $td_class "light"
    Sono a corto di idee...
    La cosa strana è che l'html generato presenta tutti i campi all'interno del form correttamente valorizzati ma mancano le righe del form stesso (<form ecc...> e </form>)
    Apri 2 tag <tr>:

    Codice PHP:
    ...
    $ret .= "<table><td></td><td nowrap class=\"label\">Agenti associati</td><tr>"
    ... 
    il <tr> alla fine della riga precedente e poi nel while ne apri un altro anche se non credo sia questo il problema.
    Se come dici c'è tutto il codice html tranne il tag form aperto e chiuso è strano.
    Prova a postare TUTTO lo script, anche la parte prima del while e magari anche l'html generato (da browser "visualizza sorgente pagina")
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  9. #9
    Utente di HTML.it L'avatar di gorn
    Registrato dal
    Jun 2010
    Messaggi
    91
    Ho aggiunto il </tr> che mi ero completamente scordato ma non è cambiato nulla (come immaginavo)
    Visualizzando il sorgente pagina ho notato che li la form compare anche per il primo elemento mentre se uso l'ispeziona elemento non la rileva e comunque poi in esecuzione il primo elemento non risponde ai comandi mentre gli altri si.
    Di seguito posto il pezzo di sorgente pagina incriminato
    codice:
    <div id="InsAgenti"><table>
    <td></td><td nowrap class="label">Agenti associati</td><tr></tr>
    <tr class="light"><td width="16px" class=buttons>
    <form action="?q=sistema/utenti/eliminaAgenti" method=post>
    <input type=hidden name="IDUtenteMaster" value="42">
    <input type=hidden name="tabella" value="nc_utenti_agenti">
    <input type=hidden name="IDUtenteDetail" value="9">
    <input alt="elimina agente" type="image" onclick="return askConfirm();" src="images/icons/delete.gif">
    </form></td>
    <td nowrap width="86px">blablalba</td>
    </tr>
    <tr class="dark"><td width="16px" class=buttons>
    <form action="?q=sistema/utenti/eliminaAgenti" method=post>
    <input type=hidden name="IDUtenteMaster" value="42">
    <input type=hidden name="tabella" value="nc_utenti_agenti">
    <input type=hidden name="IDUtenteDetail" value="15">
    <input alt="elimina agente" type="image" onclick="return askConfirm();" src="images/icons/delete.gif">
    </form></td>
    <td nowrap width="86px">blablalbu</td>
    </tr>
    <tr class="light"><td width="16px" class=buttons>
    <form action="?q=sistema/utenti/eliminaAgenti" method=post>
    <input type=hidden name="IDUtenteMaster" value="42">
    <input type=hidden name="tabella" value="nc_utenti_agenti">
    <input type=hidden name="IDUtenteDetail" value="28">
    <input alt="elimina agente" type="image" onclick="return askConfirm();" src="images/icons/delete.gif">
    </form></td><td nowrap width="86px">blalbalble</td>
    </tr>
    </table></div>
    Per quanto riguarda il codice l'unica cosa che manca è la seguente
    Codice PHP:
    if ($utente->ruolo >= R_CS)
    {
     
    $ret .= "<div id=\"InsAgenti\">";
    }else{
     
    $ret .= "<div id=\"InsAgentiNo\">";

    che controlla se visualizzare o meno la div contenente la lista a seconda dei diritti dell'utente.
    Spero in un vostro aiuto dato che io non riesco a vedere dove si nasconde la stupidata che ho fatto.
    Il problema non è la caduta, ma l'atterraggio (Cit.)

  10. #10
    Prova a stampare immediatamente prima di eseguirla, anche con un semplice echo, la query di cancellazione e vedi se è corretta, magari eseguendola a mano.
    Inoltre aggiungi un mysql_error() nel punto in cui esegui la query così vedi se c'è qualche errore. Qualcosa del tipo:

    Codice PHP:
    ...
    echo 
    $query;
    $result mysql_query($query) or die ("Error: ".mysql_error());
    ... 
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

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.