Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074

    problema alquanto articolato caricamento variabile

    Ho un problema alquanto articolato, che non so come risolvere...
    Dunque, ho una pagina in cui, tra l'altro, è presente un campo di input il cui valore è richiamato dal db. Il campo si trova all'interno di una riga in cui vi sono altri campi (vedi img).

    Nella pagina, ci può essere un numero variabile di queste righe (da 1 - dafault - a 30). L'utente sceglie la quantità da una select, che invia una request AJAX ad una pagina php, la quale - a sua volta - carica nella pagina principale l'equivalente numero di righe.
    Per ciascuna riga, viene richiamato uno specifico file (vedi codice sotto):
    Codice PHP:
    if ($tag == "uno") {
                echo 
    "<table width=\"730\" align=\"center\">\n" $toprow;
        include (
    "calc1.php");
                echo 
    "</table>";
            } else if (
    $tag == "due") {
                echo 
    "<table width=\"730\" align=\"center\">\n" $toprow;
        include (
    "calc1.php");
        include (
    "calc2.php");
                echo 
    "</table>";
            } else if ... 
    Questa soluzione (un file diverso per ciascuna riga) è resa necessaria da due diversi e concomitanti problemi:
    - i campi di ciascuna riga devono avere un nome univoco, composto da una radice comune + un valore numerico incrementale (questo sarebbe comunque risolvibile in unico file php, lo so...)
    - e, soprattutto (ragione determinante) questo è l'unico modo in cui una funzione JS, per il calcolo tra i valori dei campi input, funziona...
    Il mio problema è che non riesco a caricare nel campo input di ogni riga quel valore preso dal db (nell'immagine allegata, vedi ultimo campo sulla destra).
    In ciascun file php corrispondente ad una riga, scrivo così:
    Codice PHP:
    <input name="commpercent1" type="text" id="commpercent1" onchange="calculate()" value="<?PHP echo $comm?>" />
    La variabile $comm la definisco nella pagina principale, e ovviamente me la carica nella prima riga, quella di default, perchè è definita nella pagina stessa. Ma quando vado a caricare, via request AJAX, un diverso numero di righe, non riesco più a caricare la variabile.
    Ho provato a definirla anche nel file php richiamato dalla request AJAX, ma non serve; ho provato a definirlo in ciascun file php relativo alle righe, ma nemmeno così funziona.
    Come posso mai risolvere???
    metatad
    graphic & web design

  2. #2
    non ho capito benissimo il tuo problema..
    ma così giusto per iniziare partire da qui giusto per dare una radanatina ^^

    Codice PHP:
    echo "<table width=\"730\" align=\"center\">\n" $toprow;
    switch(
    $tag) {
      case 
    'uno':
        include (
    "calc1.php");
        break;
      case 
    'due':
        include (
    "calc1.php");
        include (
    "calc2.php");
        break;
      case 
    'quindici':
        include (
    "calc15.php");
        break;
      default:
        echo 
    "...";
    }
    echo 
    "</table>"
    ti chiedo scusa ma sono abbastanza maniaco sul codice
    va beh.. questo solo un 'hint' tecnico.. sullo scorcio di codice che hai postato..

    in ogni caso sul fatto del righe in ajax io farei in due modi..

    il primo riempire tramite un ciclo in php.. (penso come hai fatto)

    il secondo utilizzando JSON che lo riempi tramite javascript che ti eviti un sacco di problemi con rescan del dom da parte di javascript e cose simili

    ma forse non ho capito bene il problema..

  3. #3
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    ora non mi è chiaro il perchè del casino del richiamare sempre lo stesso file, e non indago. ma il concetto è abbastanza semplice

    se nello script iniziale hai

    $miavar = 1
    allora ti basta inserire nello script che richiami

    $miavar++;

    in questo modo la variabile globale si incrementa ad ogni chiamata di file(e quindi di riga)


    leggo ora che usi ajax

    quando fai la chiamta passagli il valore attuale della variabile in modo che la puoi calcolare
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    @ Paper.bat...
    Grazie per l'hint tecnico, ma per il resto non ho ben capito cosa mi stai suggerendo, come soluzione al mio problema (che forse non è esposto in modo chiaro?)
    @ Ciro78
    Intanto, se guardi, non richiamo sempre lo stesso file... o meglio: poichè, come dicevo, le righe possono essere fino a 30, e quindi devo fare 30 diversi file, piuttosto che partire da uno con una sola riga, per arrivare ad uno con 30 righe, mi è sembrato + semplice e chiaro includere ogni volta i file relativi alle righe richieste... Insomma, piuttosto che avere - ad es. - un file calc3.php, con dentro le tre righe, ho un file calc1.php con dentro solo la sua riga, e così con il file calc2.php, il file calc3.php, etc. etc.
    Personalmente, trovo sia la soluzione migliore, ma questo comunque non incide sul problema in questione.
    Quanto al problema stesso, evidentemente non mi sono spiegato chiaramente, perchè anche la tua soluzione riguarda un'altro tipo di problema, che io non ho...
    Il mio, di problema, è che in uno specifico campo di ciascuna riga, devo caricare un valore richiamato dal database (è sempre lo stesso, per ogni riga).
    Con la prima riga, quella caricata di default nella pagina, non ho alcun problema. Che invece sorge quando carico più righe. A quel punto, il campo appare sempre vuoto.
    Ho provato a mettere la query, e quindi definendo la variabile, in ciascun file richiamato via AJAX, ma non funziona.
    Ho provato a mettere la query, e quindi definendo la variabile, all'interno del file php richiamato via AJAX, ma anche così non va.
    É questo il punto che non riesco a risolvere - e francamente non capisco nemmeno perchè, con la prima soluzione (query nel file/riga richiamato), non funzioni...
    metatad
    graphic & web design

  5. #5
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    aspetta se il campo è il valore è sempre lo stesso dovresti riuscire

    se ajax restituisce

    <input type="text" value="pippo">

    generato da php

    quando effettui la chiamata ajax puoi passare una variabile

    pagina.php?variabile=valore

    da qui generi pippo

    altrimenti aramti di pazienza e scrivi ogni dettaglio portando esempi concreti e non astratti in modo che ti si possa aiutare (ma solo perchè sei compaesano
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    Allora... posto un pò + di codice, così spero di spiegarmi meglio...
    Nella pagina madre faccio una query al db, ed attribuisco un valore alla variabile $comm.
    Questa variabile diventa il valore di un campo input, presente già al primo caricamento della pagina ,con questo codice:
    Codice PHP:
    <input name="commpercent1" type="text" id="commpercent1" onchange="calculate()" value="<?PHP echo $comm?>" />
    Di default, la pagina presenta una sola riga di campi input (vedi immagine allegata 1° post).
    Fin qui, tutto ok.
    L'utente però può scegliere, tramite una select, che di righe ne servono - ad es. - 3.
    La select invia una request AJAX ad un file php che fa un'operazione del genere:
    Codice PHP:
    <?PHP
    ....
    switch(
    $_REQUEST['action']) {
        case 
    '1'
        include (
    "calc1.php");
        break;
            case 
    '2'
        include (
    "calc1.php");
        include (
    "calc2.php");
        break;
        case 
    '3'
        include (
    "calc1.php");
        include (
    "calc2.php");
        include (
    "calc3.php");
        break;
    ...
    ?>
    e così via. Ho spiegato nel primo post perchè adotto questa soluzione (includere un file diverso per ciascuna riga, quindi non ne ripeto le ragioni).
    Ciascun file calcX.php contiene il codice html per quella riga di tabella, e - come per la pagina di default - attribuisce il valore al campo di input dovuto con la stringa:
    Codice PHP:
    <?PHP echo $comm?>
    Il problema è: come faccio a passare, per ciascuna pagina/riga, il valore di questa variabile?
    Tieni presente che:
    - la query ha bisogno di due variabili come parametri
    - queste variabili vengono passate alla pagina madre dalla pagina di provenienza
    - posso passare queste variabili via request AJAX alla pagina php che gestisce il caricamento delle pagine/riga, ma non vedo come - da questa - possa passarle alle varie pagine calcX.php da caricare...
    Mi vengono in mente adesso due sole soluzioni possibili:
    + spezzare in due ciascun file calcX.php, mettendo nella prima parte (ad es. calcX_a.php) tutto il codice precedente la variabile, e nella seconda parte (ad es. calcX_b.php) tutto il codice seguente, per poi far fare lo switch in questo modo:
    Codice PHP:
    <?PHP
    ....
    switch(
    $_REQUEST['action']) {
        case 
    '1'
        include (
    "calc1_a.php");
            echo 
    $comm;
        include (
    "calc1_b.php");
        break;
    ...
    ?>
    che però mi sembra una soluzione allucinante...
    + oppure ( ci sto pensando solo adesso...) costruirmi tutto nella pagina php che gestisce l'AJAX, sperando che poi funzioni il JS di cui dicevo nel primo post...
    metatad
    graphic & web design

  7. #7
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    ma quando tu usi

    ajax.open("get",nomefile)

    non puoi scrivere

    nomefile?var=valore


    ?
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    Mi sto contorcendo in un viluppo di problemi...
    É chiaro che posso passare la variabile alla request AJAX, ed infatti ho provato a fare tutto direttamente nella pagina php che la gestisce:
    - ricevo via GET la variabile relativa al campo input da popolare
    - definisco un'altra variabile con il codice html che costruisce la riga di campi input
    - definisco una variabile da incrementare (per definire l'id dei campi su ciascuna riga)
    - quindi faccio lo switch
    Codice PHP:
    switch($_REQUEST['action']) {
        case 
    '1':
        
    $varnum "1"
        echo 
    $block;
        break;
            case 
    '2':
        
    $varnum "1"
        echo 
    $block
        
    $varnum "2";
        echo 
    $block;
        break; 
    dove $varnum è l'incrementale di cui sopra... all'interno della variabile $block richiamo la variabile $comm, nel punto in cui occorre.
    Così, risolvo il problema di partenza, ovvero popolare quel campo input di ogni riga con la variabile $comm.
    Però ne sorge uno nuovo! Ovvero, poichè la variabile $block (il codice html per l'intera riga di campi input) viene definita all'inizio ed una sola volta, ne consegue che al suo interno la variabile $varnum mantiene sempre il valore iniziale, ed anche ridefinendola nei vari switch case non cambia...
    Risultato: la funzione di calcolo JavaScript non funziona, ed i valori dei campi input non vengono trasmessi alla pagina di destinazione!
    Ho fatto delle prove con tre righe, e non funziona né il JS né la trasmissione dati...

    Possibile che non ci sia altra soluzione che ripetere, per ogni switch case, tutto il codice html relativo alla riga - per cui, al case 30, mi tocca ripetere 30 volte il blocco di codice?
    metatad
    graphic & web design

  9. #9
    guarda non riesco a capire.. probabilmente sono tocco :S

    non riesco capire cosa servono le variabili $comm e $block

    e perchè ti scervelli tanto a fare 30 file diversi quando devono ripetere +o- la stessa cosa, basta vedere qual'è l'algoritmo che li fa differenziare e sei a posto fai un bel ciclo su quante ne vuoi

    ad esempio anche io avevo il tuo stesso problema avevo una lista di 300 record ed ognuno doveva avere un id diverso ho semplicemente fatto così per chiamarli

    Codice PHP:
    <input type="checkbox" name="lista_<?php echo $id_record_in_tabella?>" id="lista_<?php echo $id_record_in_tabella?>" value="on" />
    dove $id_record_in_tabella può essere un'id univoco tuo che puoi tranquillamente ricavare semplicemente passando tutte le variabili che ti vengono passate tramite l'array con un explode.

    ad esempio:
    Codice PHP:
    foreach($_POST as $key => $value) {
      
    $temp explode("_"$key);
      if (
    $temp[0] == "lista") {
        
    // so che qui c'è un id e lo parso come mi pare
        
    echo $temp[1] ."
    "
    ;
      } 
    // Altrimenti non mi serve e lo uso come variabile normale

    è un esempio e può essere usato come preferisci

  10. #10
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    mi stai incuriosendo non poco con questa cosa hai modo di potermi mandare i file e farmeli studiare?
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


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.