Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SimpleXML] Sprawdzanie czy tag istnieje, Jak się do niego dostać z klucza nadrzędnego
starach
post 11.01.2009, 08:23:10
Post #1





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

Ostrzeżenie: (0%)
-----


Dajmy przykładowo schemat Propel'a.
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!--Autogenerated by PropelSchemaReverseTask class.-->
  3. <database name="orglee" defaultIdMethod="native">
  4. <table name="article_category" phpName="Category">
  5.    <column name="_al_id" type="INTEGER" size="11" primaryKey="true" required="true"/>
  6.    <column name="_acs_id" type="INTEGER" size="11" required="false"/>
  7.    <foreign-key foreignTable="article_list">
  8.                  <reference local="_al_id" foreign="al_id"/>
  9.            </foreign-key>
  10.            <foreign-key foreignTable="article_categories">
  11.                  <reference local="_acs_id" foreign="acs_id"/>
  12.            </foreign-key>
  13.  </table>
  14. </database>
Będąc na tagu <foreign-key który jest powiedzmy przypisany do zmiennej $column chcę sprawdzić czy istnieje pod-tag o nazwie reference.
  1. <?php
  2. $xml = new SimpleXMLElement(file_get_contents($file));
  3. foreach($xml as $table)
  4. {
  5.  foreach($table as $column)
  6.  {
  7.    if($column->getName() == 'foreign-key')
  8.    {
  9.       if() // Jak sprawdzić czy występuje tag o nazwie reference?
  10.    }
  11.  }
  12. }
  13. }
  14. ?>
Niestety po mimo sporej ilości kombinowania nie mogę tego w żaden prosty sposób sprawdzić. Z góry dzięki.

Ten post edytował orglee 11.01.2009, 08:24:13
Go to the top of the page
+Quote Post
scanner
post 11.01.2009, 20:06:17
Post #2





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




  1. <?php
  2. $Xml = simplexml_load_file( $file );
  3. foreach( $Xml->table->{'foreign-key'} as $FK ){
  4.    var_dump( isset( $FK->reference ) );
  5. }
  6. ?>


simplexml_load_file" title="Zobacz w manualu PHP" target="_manual jest IMHO lepsze niż Twój sposób ładowania danych.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
starach
post 12.01.2009, 20:24:19
Post #3





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

Ostrzeżenie: (0%)
-----


Cytat
simplexml_load_file" title="Zobacz w manualu PHP" target="_manual jest IMHO lepsze niż Twój sposób ładowania danych.
Hmm chyba rozumiem dlaczego. Chodzi o wydajność. ( ? ) Ta funkcji mi sama upakuje wszystko w obiekt tak zamiast robić to przez pośredników. tongue.gif

Cytat
  1. <?php
  2. $Xml = simplexml_load_file( $file );
  3. foreach( $Xml->table->{'foreign-key'} as $FK ){
  4.    var_dump( isset( $FK->reference ) );
  5. }
  6. ?>
Jak możesz to byłbym wdzięczny za podanie nazwy tego sposobu zapisu, bo go nie rozumiem.
Niestety nie mogę się tak odwołać do klucz foreign-key bo tagów table jest w schemacie wiele...

W trakcie pisania tego zdanie już zrozumiałem jak mam to zrobić.
  1. <?php
  2. var_dump($xml->table[1]->{'foreign-key'});
  3. ?>

Przy czym "1" może być kluczem tablicy otrzymywany poprzez działanie foreach.
  1. <?php
  2. foreach($xml as $klucz => $table)
  3. ?>


Dzięki za pomoc.

edit>
Ja pietrusze:
  1. <?php
  2. $current_foreign = $current_column - count($xml->table[$current_table]->{'column'});
  3. $reference = $xml->table[$current_table]->{'foreign-key'}[$current_foreign]->{'reference'};
  4.                    
  5. !isset($reference['local']) || !isset($reference['local']
  6. ?>


Ten post edytował orglee 12.01.2009, 21:12:20
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.04.2024 - 21:20