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

Discussione: Php che scrive XML

  1. #1

    Php che scrive XML

    Salve a tutti.
    Ho un problema che non riesco ad uscirne fuori.
    Ho la necessitą di scrivere un File XML tramite PHP.
    la struttura del XML č la seguente :
    codice:
    <?xml version="1.0" encoding="utf-8"?>
    <category>
    <type name ="Donna">
    <product>
    </product>
    </type>
    <type name ="Uomo">
    <product>
    </product>
    </type>
    </category>
    Con php prendo o dati da 2 Tabelle ( Cat e Prodotti ).


    In questo modo riesco a scrivere una struttura XML del Genere senza problemi prelevando
    i dati dalla tabella Cat Soltanto.
    codice:
    <?xml version="1.0" encoding="utf-8"?>
    <category>
    <type name ="Donna">
    </type>
    <type name ="Uomo">
    </type>
    </category>
    codice:
    <?php
    
    
    $hostname = "localhost"; 
    $database = "store"; 
    $username = "root"; 
    $password = "";
     $cnConnection = mysql_pconnect($hostname, $username, $password);
      mysql_select_db($database, $cnConnection);
       $query_rsRecordset ="SELECT * FROM cat ";
      $rsRecordset = mysql_query($query_rsRecordset, $cnConnection) or die(mysql_error()); 
      $row_rsRecordset = mysql_fetch_assoc($rsRecordset); 
      $totalRows_rsRecordset = mysql_num_rows($rsRecordset); 
    
    
    
    mysql_select_db($database, $cnConnection);
       $query_rsRecordset1 ="SELECT * FROM prodotti ";
      $rsRecordset1 = mysql_query($query_rsRecordset1, $cnConnection) or die(mysql_error()); 
      $row_rsRecordset1 = mysql_fetch_assoc($rsRecordset1); 
      $totalRows_rsRecordset1 = mysql_num_rows($rsRecordset1);
    
    // Scrivo XML
    
    $strXML = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n";
    $strXML = $strXML . "<category>\r\n"; 
    do { 
     
    $tagtype=$row_rsRecordset['type'];
    $strXML =  $strXML."<type name =\"$tagtype\">\r\n";
    
    $strXML = $strXML."</type>\r\n";
    
    } while ($row_rsRecordset = mysql_fetch_assoc($rsRecordset)); 
    
    $strXML = $strXML."</category>\r\n";
      
      // OPEN FILE, WRITE TO FILE, CLOSE FILE, CLOSE RECORDSET 
      $XMLFile = fopen("shop/gallery.xml", "w") or die("can't open file"); 
    
    fwrite($XMLFile, $strXML);
    fclose($XMLFile); 
    mysql_free_result($rsRecordset); 
    ?>
    Ora il problema č che devo avere una struttura XML del Genere attingendo ai dati anche
    dalla tabella Prodotti.
    codice:
    <?xml version="1.0" encoding="utf-8"?>
    <category>
    <type name ="Donna">
    <product>
    <itemNumber>9</itemNumber>
    </product>
    </type>
    <type name ="Uomo">
    <product>
    <itemNumber>10</itemNumber>
    </product>
    </type>
    </category>
    ho provato a fare on ciclo Do annidato ma niente da fare in quanto
    il codice
    codice:
      $XMLFile = fopen("shop/gallery.xml", "w") or die("can't open file"); 
    
    fwrite($XMLFile, $strXML);
    fclose($XMLFile);
    scrive soltanto la variabile $strXML del primo Ciclo Do.
    Per f avore Aiutatemi altrimenti impazzisco
    Spero in un vostro aiuto.
    Grazie in anticipo

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    ma qual č il problema?

  3. #3
    Ciao
    Il problema č scrivere dati XML prelevandoli da 2 Tabelle.
    Con un solo Ciclo Do scrivo i dati prelevati adalla tabella Cat
    ma devo scrivere nello stesso XML anche i dati della Tabella Prodotti.
    Ho provato con ciclo annidato ma mi scrive soltanto una Variabile nel Mio caso come dal codice
    $strxml

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    dipende dalle query... semplicemente DENTRO il ciclio principale, PRIMA di generare l'XML, fai la "sottoquery" che ti interessa

  5. #5
    codice:
    do { 
     
    $tagtype=$row_rsRecordset['type'];
    $strXML =  $strXML."<type name =\"$tagtype\">\r\n";
    do {
    $tagname=$row_rsRecordset1['name'];
    $strXML = $strXML."<product>\r\n"; 
    $strXML = $strXML."<name>$tagname</name>\r\n";
    
    $strXML = $strXML."</product>\r\n";
    
     } while ($row_rsRecordset1 = mysql_fetch_assoc($rsRecordset1));
    
    $strXML = $strXML."</type>\r\n";
    
     while ($row_rsRecordset = mysql_fetch_assoc($rsRecordset)); 
    $strXML = $strXML."</category>\r\n";
      
    // OPEN FILE, WRITE TO FILE, CLOSE FILE, CLOSE RECORDSET 
      $XMLFile = fopen("shop/gallery.xml", "w") or die("can't open file"); 
       
      fwrite($XMLFile, $strXML); 
      fclose($XMLFile); 
    
    mysql_free_result($rsRecordset);
    Con un DO -While Annidato cosi non funziona in quanto la variabile $strXML
    che scrive fopen va in palla.

    Potresti farmi un esempčio?

  6. #6
    Ti giro una parte di codice usato da me in cicli annidati, io qui ho usato sqlite ma il principio e' lo stesso, devi popolare un array con fetchall e su quello eseguire il foreach


    Codice PHP:
    $query sqlite_query($db'SELECT campo1, campo2  FROM tabella');
    $result sqlite_fetch_all($querySQLITE_ASSOC);

    foreach (
    $result as $entry) {
      echo  
    $entry['campo1'];
      
    // fai quello che vuoi con $entry['campo1']

    Nel mio caso inoltre avevo usato il codice da cui ho preso questo stralcio proprio per generare un xml ma anziche' scrivere una variabile di testo avevo usato un oggetto DOMDocument

  7. #7
    Ciao
    Il problema e che devo prendere i dati da 2 Tabelle ( Cat e Prodotti ) e mettendoli nella variabile
    $strXML del ciclo interno mi sovrascrive la variabile piu estena.

  8. #8
    servirebbero maggiori chiarimenti, ad esempio come sono composte le tabelle? in che modo i dati sono in relazione tra loro?
    Cosa sarebbe il file gallery.xml? come devi presentare i dati prelevati dalle due tabelle?
    Il problema della variabile che va in palla o del ciclo interno che sovrascrive quello esterno sicuramente si potra' risolvere ma parti mettendo bene in chiaro quello che devi fare.

  9. #9
    Due tabelle Cat e Prodotti

    La tabella Cat ( Id,Type )
    La tabella Prodotti ( Id, Item, Nome)

    Devo ottenere un file .xml del genere

    codice:
    <type name = "DONNA">  -------> DEVO PRENDERE QUESTO DATO DALLA TABELLA CAT
    <product>
    <itemNumber>1</itemNumber> -------> DEVO PRENDERE QUESTI DATI DALLA TABELLA PRODOTTI
    <name>Giacca Donna Cachemire</name>
    </product>
    </type>
    
    <type name = "UOMO">-------> DEVO PRENDERE QUESTO DATO DALLA TABELLA CAT
    
    <product>
    <itemNumber>2</itemNumber>-------> DEVO PRENDERE QUESTI DATI DALLA TABELLA PRODOTTI
    <name>Giacca Uomo</name>
    </product>
    </type>
    
    <type name = "BAMBINO">-------> DEVO PRENDERE QUESTO DATO DALLA TABELLA CAT
    
    <product>
    <itemNumber>3</itemNumber>-------> DEVO PRENDERE QUESTI DATI DALLA TABELLA PRODOTTI
    <name>Giacca BAmbino</name>
    </product>
    </type>
    GRAZIE

  10. #10
    le tabelle sembrano scollegate, non si capisce in che modo le vuoi collegare nella generazione dell' xml.

    Ci dovrebbe essere ina voce nella tabella prodotti che dica a quale categoria appartiene il prodotto, se non c' e' questo tipo di legame tra una cosa e l' altra l' xml che vai a generare e' praticamente casuale, dove sta scritto che la giacca di cachemire appartiene alla categoria donna?

    Il discorso sarebbe un altro se invece per ogni categoria dovessi generare tot prodotti, ad esempio, categorie: uomo donna bambino
    prodotti: giacca, scarpe, cappello
    avresti:

    <type name = "Uomo">
    <product>
    <itemNumber>1</itemNumber>
    <name>Giacca Uomo</name>
    </product>
    <product>
    <itemNumber>2</itemNumber>
    <name>Scarpe Uomo</name>
    </product>
    <itemNumber>3</itemNumber>
    <name>Cappello Uomo</name>
    </product>
    </type>
    <type name = "Donna">
    <product>
    <itemNumber>4</itemNumber>
    <name>Giacca Donna</name>
    </product>
    <product>
    <itemNumber>5</itemNumber>
    <name>Scarpe Donna</name>
    </product>
    <itemNumber>6</itemNumber>
    <name>Cappello Donna</name>
    </product>
    </type>
    <type name = "Bambino">
    <product>
    <itemNumber>7</itemNumber>
    <name>Giacca Bambino</name>
    </product>
    <product>
    <itemNumber>8</itemNumber>
    <name>Scarpe Bambino</name>
    </product>
    <itemNumber>9</itemNumber>
    <name>Cappello Bambino</name>
    </product>
    </type>


    il modo in cui lo stai spiegando fa pensare che tu voglia avere questo tipo di associazione

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.