Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [sql / php] query dinamica

    Buon giorno a tutti,

    ho un problemino/one da risolvere

    spero che il problema sia in quello ke credo, e quindi di ridurre la domanda all'osso....

    In caso contrario mi dilunghero nella spiegazione + aprofondita

    Morale :

    ho una parte di codice

    codice:
    $n=1;
    
    while ($result=mysql_fetch_array($query_m, MYSQL_NUM)) {
    $array_query1=$result;
    $D="Descrizione_".$array_query1[$n];
    if($_POST[$D]=="")$_POST[$D]="non disponibile";
    echo "".$D." : ".$_POST[$D]."
    <hr>\n";
    
    ##
    $tot_descr .= '\'" . $_POST["'.$D.'"] . "\'';
    ##
    
    }
    cosa succede ? Prende da un db ke kiameremo "lingue" i valori del campo "lingua" e lo accoda alla stringa "Descrizione_" , quindi ottengo "Descrizione_lingua".

    Perfetto, tutto funziona, ora siccome devo utilizzare questi valori in una query, ke non puo' ke essere dinamica, visto che il numero di campi "Descrizione_lingua" potrebbero essere 1 o 2 o 3 ecc,ecc accodo il tutto nella variabile "$tot_descr" per avere la stringa tipo '" . $_POST["Descrizione_Italiano"] . "' '" . $_POST["Descrizione_Inglese"] . "'......... da poter utilizzare appunto all'interno di una query.

    cosa credo mi dia errore ?

    il fatto ke non accodo la virgola che separa un valore dall'altro nella query, solo ke se io aggiungo la virgola nella composizione della stringa, ottengo ke anke all'ultimo campo ho la virgola, ke invece non devo avere, altrimenti ne ho 2

    per la prima parte della query, ovvero quella dove elenco i campi della tabella ho usato questa sintassi

    codice:
    $campi = mysql_list_fields("Sql51073_2", "Prodotti_Italiano", $conn);
    $colonne = mysql_num_fields($campi);
    
    for ($i = 1; $i < $colonne; $i++) {
    $colonne_n .= mysql_field_name($campi, $i)."\n";
    if($i!=($colonne-1)){$colonne_n.=", ";}
    }
    in questo modo la virgola la accodo a tutti i valori ma non all'ultimo

    probabilmente è un metodo stupido....ma funziona

    la prima domanda è :

    come posso accodare la virgola (nella speranza ke l'errore sia solo quello ) nel primo codice, omettendola nell'ultimo campo accodato ?

    Grazie infinite a tutti

    SK

  2. #2
    ok

    diciamo ke ho risolto il primo problema

    ora però ho un altro problema

    tutto al suo posto, ma....

    accodando le variabili ottengo

    codice:
    ' " . $_POST["Descrizione_Italiano"] . " '
    ma invece di avere il valore del POST, passo al db la stringa di cui sopra, nel senso ke non la vede come comando ????

    se lo scrivo a manina santa per provare funziona

    aiutatemi please

  3. #3
    Personalmente son : fagiano : ma ti posso garantire che non e' semplice seguire quanto hai esposto. Ci son troppe cose che sai solo tu....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    [B]
    accodando le variabili ottengo

    codice:
    ' " . $_POST["Descrizione_Italiano"] . " '
    è messo un pò tutto da cani però forse ho capito

    codice:
    $str = $_POST["Descrizione_Italiano"]; 
    eval("\$str = \"".addslashes($str)."\";");
    e poi ci metti
    codice:
    '".$str."'
    vedi un pò se ho capito.
    altrimenti spiegati meglio :-))

  5. #5
    Lo so ragazzi, lo so

    non brillo nel rendere un concetto

    adesso provo il consiglio datomi da massimo80

    se per mia sfortuna non funziona.....

    cerkerò di esprimermi meglio, a volte uno ha la kosa ben kiara in testa ke spiegandosi omette involontariamente cose importanti

    provo subito e vi faccio sapere

  6. #6
    niente

    ho messo

    codice:
    $str = "$tot_descr"; 
    eval("\$str = \"".addslashes($str)."\";");
    ma mi dice

    codice:
    Parse error: parse error, unexpected T_CHARACTER, expecting
    T_STRING or T_VARIABLE or T_NUM_STRING in 
    /web/htdocs/www.sito.it/home/cartella/inserisci.php(69) : 
    eval()'d code on line 1


    mentre ci sono cerco di spiegarmi meglio

    io ho una query ke deve essere dinamika, i campi e i valori possono cambiare di numero, di nome e di contenuto avviamente.

    per rendere, almeno spero...+ semplice la cosa ho fatto una cosa del tipo :

    codice:
    $campi_b = mysql_list_fields("Sql51073_2", "Prodotti_Italiano", $conn);
    $colonne_b = mysql_num_fields($campi_b);
    
    for ($i_b = 6; $i_b < $colonne_b; $i_b++) {
    //**
    $tot_descr .= '\'" . $_POST["';
    $tot_descr .= mysql_field_name($campi_b, $i_b);
    $tot_descr .= '"] . "\'';
    //**
    if($i_b!=($colonne_b-1)){$tot_descr.=", ";}
    }
    questa parte di codice prende i nomi dei campi della tabella incriminata e li infila in una variabile accodandoli.
    In questo caso (nella parte in grassetto), faccio estrarre i nomi dal sesto campo in avanti dove sono e saranno tutti campi denominati "Descrizione_nomelingua"

    se i campi ( dal sesto in avanti) sono : Descrizione_Italiano - Descrizione_Inglese - Descrizione_francese

    ottengo una variabile ke li contiene uno in fila all'altro

    tutto funziona, ovvero ottengo (accodando come si vede sopra) una variabile "$tot_descr" ke kontiene :

    '" . $_POST["Descrizione_Italiano"] . "', a seguire la medesima cosa ripetuta per tot volte quanti i campi dove cambia solo la parte dentro a ["....."], in modo da ottenere la medesima cosa per tutti i campi ke mi servono.

    lo fà, ma nella query ke faccio stampare anke a video come stringa

    mi dà :

    Prova New, rombo_database.jpg, 2940, image/jpeg,
    '" . $_POST["Descrizione_Italiano"] . "',
    '" . $_POST["Descrizione_Francese"] . "',
    '" . $_POST["Descrizione_Inglese"] . "'

    cioè...riamngono stringhe qualunque, mentre dovrebbero restituire i valori dei campi POSTATI POST[Descrizione_Italiano],ecc,ecc

    e nel db ovviamente viene inserito tutto, ma al posto delle descrizioni reali ke sono state postate, inserisce la stringa $_POST[......ecc,ecc

    son fagiano


    spero di essere riuscito a farvi capire qualkosa


  7. #7
    L'errore potrebbe essere che raccogli le tue stringhe che comprendono un array con l'apice semplice. In questo caso la variabile non viene risolta, ma scritta cosi' come e'. Invece tu la devi risolvere. es.:
    codice:
    $_POST["ciao"] = 'italiano';
    
    echo "
    ";
    $pippo = '$_POST["ciao"]';
    echo $pippo; //----> mi stampa come stringa $_POST["ciao"]
    
    echo "
    ";
    $pippo = $_POST['ciao'];
    echo $pippo;   //----> mi stampa italiano
    
    echo "
    ";
    $pippo = "$_POST[ciao]";
    echo $pippo;   //----> mi stampa italiano

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Originariamente inviato da piero.mac
    L'errore potrebbe essere che raccogli le tue stringhe che comprendono un array con l'apice semplice. In questo caso la variabile non viene risolta, ma scritta cosi' come e'. Invece tu la devi risolvere. es.:
    codice:
    $_POST["ciao"] = 'italiano';
    
    echo "
    ";
    $pippo = '$_POST["ciao"]';
    echo $pippo; //----> mi stampa come stringa $_POST["ciao"]
    
    echo "
    ";
    $pippo = $_POST['ciao'];
    echo $pippo;   //----> mi stampa italiano
    
    echo "
    ";
    $pippo = "$_POST[ciao]";
    echo $pippo;   //----> mi stampa italiano
    ma si ma si

    ma come faccio ad essere kosì deficente



    mi hai salvato da un week end di M

    Grazzie infinite


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.