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

    Problema con array e query che scrive solo il primo record

    Gentile Team leggo da un file xml alcuni valori creando un array
    che serve poi per scriverli iuna tabella del db
    ma con lo script di cui sotto scrive solo il primo record

    ho provato anche a mettere interna al foreach la query ma in quel caso crea sempre gli stessi record all'infinito.

    Potreste dirmi dove o cosa sbaglio? forse la sintassi? o il foreach è sbagliato?


    Codice PHP:
    $xml simplexml_load_file$file['tmp_name'] );
    $xml->registerXPathNamespace('c''urn:CBI:xsd:PIPPO.00.01.00');
    $result $xml->xpath('//c:1 ');
    $result2 $xml->xpath('//c:2 ');
    $result3 $xml->xpath('//c:3 ');
    $result4 $xml->xpath('//c:4 ');
     foreach (
    $result as $) { 
    foreach (
    $result2 as $) { 
    foreach (
    $result3 as $) {        
    foreach (
    $result4 as $) {   
            
       }}}}    
    // Creo una query di inserimento         
    $sql "INSERT INTO tabella SET             
    1 = '$1',            
    2 = '$2',            
    3 = '$3',            
    4 = '$4'        "
    ;
    $rssql mysql_query$sql ) or die (mysql_error());echo $sql;?> 
    Grazie mille
    L'intuizione creativa più di ogni altra cosa è l'unico elemento per cui la vita vale la pena di essere vissuta (D.W)

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,448
    Ma dentro i foreach non ci metti alcuna istruzione, così non fanno niente.

  3. #3
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Ma dentro i foreach non ci metti alcuna istruzione, così non fanno niente.
    infatti l'ho scritto...se leggi bene
    l'ho messo anche dentro ma in quel caso me la ripete all'infinito!
    L'intuizione creativa più di ogni altra cosa è l'unico elemento per cui la vita vale la pena di essere vissuta (D.W)

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,448
    Si, ho letto, ma secondo te che senso hanno dei cicli senza istruzioni all'interno?
    Tra l'altro un foreach non sarà MAI eseguito all'infinito, perché quando finisce di scandire l'array che gli si passa si ferma, non ricomincia, e un array infinito non esiste, al limite farà molti cilci (sono 4 foreach annidati, metti 10 record ogni array sono 10.000 cicli), ma infiniti non credo proprio.

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Quote Originariamente inviata da Stanislao Visualizza il messaggio
    infatti l'ho scritto...se leggi bene
    l'ho messo anche dentro ma in quel caso me la ripete all'infinito!
    Hai guardato il contenuto degli vari array ? Facci un esempio a partire dal contenuto degli array dando anche quello che vuoi avere ?
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  6. #6
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Hai guardato il contenuto degli vari array ? Facci un esempio a partire dal contenuto degli array dando anche quello che vuoi avere ?
    in realtà funziona tutto
    solo che mi scrive 4 volte ogni record

    questa è l'ultima versione

    Codice PHP:
    $xml simplexml_load_file$file['tmp_name'] );
    $xml->registerXPathNamespace('c''urn:CBI:xsd:PIPPO.00.01.00');
    $result $xml->xpath('//c:1 ');
    $result2 $xml->xpath('//c:2 ');
    $result3 $xml->xpath('//c:3 ');
    $result4 $xml->xpath('//c:4 ');
     foreach (
    $result as $) { 
    foreach (
    $result2 as $) { 
    foreach (
    $result3 as $) {        
    foreach (
    $result4 as $) {   


    // Creo una query di inserimento         
    $sql "INSERT INTO tabella SET             
    1 = '$1',            
    2 = '$2',            
    3 = '$3',            
    4 = '$4'        "
    ;
    $rssql mysql_query$sql ) or die (mysql_error());echo $sql;?>
            
       }}}} 
    L'intuizione creativa più di ogni altra cosa è l'unico elemento per cui la vita vale la pena di essere vissuta (D.W)

  7. #7
    Si pero' rifletti un attimo invece di provare alla cieca. Tu fai 4 query XPath che ti restituiscono 4 array di oggetti SimpleXMLElement.
    Una volta ottenuti questi array, scorri tutti gli elementi del primo, per ogni elemento del primo scorri tutti gli elementi del secondo, per ogni elemento del secondo scorri tutti gli elementi del terzo e cosi' via... in pratica se ogni array ha 10 elementi alla fine esegui 10x10x10x10 = 10.000 cicli, capisci che c'e' qualcosa che non va nella logica.

  8. #8
    Ragazzi.. però vorrei chiarire una cosa... se scrivo quà è perchè ho bisogno di aiuti.. non di persone che mi dicono cosa non so fare...almeno aiuti nel capire dove sbaglio. e sopratutto se sbaglio sono pronto a rimediare...le ramanzine sono solo demotivanti e denigratorie!
    sono su questo forum dal 2002 e lo spirito è sempre stato quello dell'aiuto non del sentirsi dire "ecco cosa non sai fare"

    cmq grazie e mi scuso se in qualche modo vi ho rubato del tempo.
    L'intuizione creativa più di ogni altra cosa è l'unico elemento per cui la vita vale la pena di essere vissuta (D.W)

  9. #9
    Si ma e' un problema di logica, non di sintassi o altro, per quello e' importante cercare di analizzare il problema e capire il flusso logico che deve percorrere il tuo programma. Il programmatore non e' quello che scrive codice, e' quello che trova la soluzione logica al problema. Scrivere il codice e' la parte banale.

    Nel caso specifico non so cosa contiene il tuo XML, ne' cosa danno come risultato le 4 query XPath (ne' se siano corrette, non uso XPath da una vita e non ricordo la sintassi), pero' diamo per buono che ti diano 4 array composti ognuno dallo stesso numero di elementi. Quello che serve a te e' prendere UN elemento da ognuno di questi array, inserirli tutti e quattro in una query SQL, passare all'elemento successivo e cosi' via per un numero di volte pari al numero di elementi contenuti in ognuno di quegli array.

    Come puoi sapere quanti elementi contiene un array?
    Codice PHP:
    $num count($result); 

    Come faccio un ciclo ripetuto $num volte?
    Codice PHP:
    for ($n 0$n $num$n++) {
        
    //


    Come prendo un elemento da ogni array?
    Codice PHP:
    for ($n 0$n $num$n++) {
        
    $item_1 $result[$n];
        
    $item_2 $result2[$n];
        
    $item_3 $result3[$n];
        
    $item_4 $result4[$n];

        
    // fai quello che devi fare coi valori


  10. #10
    ecco quanto ho realizzato grazie ai tuoi consigli
    ma stavolta non recupera i valori a differenza di prima.. e comunque cicla 4 volte

    Codice PHP:
    $xml simplexml_load_file$file['tmp_name'] );
    $xml->registerXPathNamespace('c''urn:CBI:xsd:CBISDDStsRptLogMsg.00.01.00');
    $Cd $xml->xpath('//c:Cd ');
    $MndtId $xml->xpath('//c:MndtId ');
    $ReqdColltnDt $xml->xpath('//c:ReqdColltnDt ');
    $InstdAmt $xml->xpath('//c:InstdAmt ');
    $num count($Cd);  

    for (
    $n 0$n $num$n++) { 

                 
    // Recupero tutti i campi da ogni tag "banca"        
    $motivazione_op $Cd;        
    $tipo_op "RID-SDD";        
    $protocollo_op substr($MndtId, -4);        
    $data_op $ReqdColltnDt;        
    $Importo_op $InstdAmt;                           
    // Creo una query di inserimento e la eseguo                 
    $sql "            
    INSERT INTO report_esiti3 SET             
    protocollo_op = '
    $protocollo_op',            
    tipo_op = '
    $tipo_op',            
    data_op = '
    $data_op',           
    Importo_op = '
    $Importo_op',            
    motivazione_op = '
    $motivazione_op'        
    "
    ;                
    $rssql mysql_query$sql ) or die (mysql_error());        
    echo 
    $sql;            } 
    L'intuizione creativa più di ogni altra cosa è l'unico elemento per cui la vita vale la pena di essere vissuta (D.W)

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 © 2024 vBulletin Solutions, Inc. All rights reserved.