php skriptində səhv

salam.  xml fayllarını bazaya atmaq məqsədi ilə kiçik bir php skripti yazdım - amma atmadı -)) 
görünüş etibarilə bir səhv etməmişəm,  amma nəsə çatışmaqzlıq var deyəsən. 

örnək xml faylı. 

[code]<br />&lt;Valute Code="ZAR"&gt;<br />&lt;Nominal&gt;1&lt;/Nominal&gt;<br />&lt;Name&gt;Cənubi Afrika randı&lt;/Name&gt;<br />&lt;Value&gt;0.0848&lt;/Value&gt;<br />&lt;/Valute&gt;<br />&lt;Valute Code="LTL"&gt;<br />&lt;Nominal&gt;1&lt;/Nominal&gt;<br />&lt;Name&gt;Litva liti&lt;/Name&gt;<br />&lt;Value&gt;0.2924&lt;/Value&gt;<br />&lt;/Valute&gt;<br />&lt;Valute Code="PLN"&gt;<br />&lt;Nominal&gt;1&lt;/Nominal&gt;<br />&lt;Name&gt;Polşa zlotası&lt;/Name&gt;<br />&lt;Value&gt;0.2413&lt;/Value&gt;<br />&lt;/Valute&gt;<br />&lt;Valute Code="CNY"&gt;<br />&lt;Nominal&gt;1&lt;/Nominal&gt;<br />&lt;Name&gt;Çin yuanı&lt;/Name&gt;<br />&lt;Value&gt;0.1276&lt;/Value&gt;<br />&lt;/Valute&gt;<br />&lt;Valute Code="INR"&gt;<br />&lt;Nominal&gt;1&lt;/Nominal&gt;<br />&lt;Name&gt;Hindistan rupisi&lt;/Name&gt;<br />&lt;Value&gt;0.0143&lt;/Value&gt;<br />&lt;/Valute&gt;<br />[/code]

 

php skripti

[code]</p><p>&lt;?php</p><p>$link = mysql_connect('host', 'root', 'parol') or die ('xxxxxx');<br /> $dbselect = mysql_select_db('test', $link) or die ('xxxxxxx');</p><p>$doc = new DOMDocument(); <br />$doc-&gt;load( 'vlytkrs.xml' ); </p><p><br />$valyutalar = $doc-&gt;getElementsByTagName( "Valute"</p><p>foreach( $valyutalar as $valyuta ) <br />{ <br /> $nominal = $valyuta-&gt;getElementsByTagName( "Nominal" ); <br /> $nom = $nominal-&gt;item(0)-&gt;nodeValue; <br /> <br /> $name= $valyuta-&gt;getElementsByTagName( "Name" ); <br /> $ad= $name-&gt;item(0)-&gt;nodeValue; <br /> <br /> $value = $valyuta-&gt;getElementsByTagName( "Value" ); <br /> $val = $value-&gt;item(0)-&gt;nodeValue; <br /> <br /><br />}<br /> <br /> $sql = "INSERT INTO 'test'.'valyuta'(id, mebleg, pul_adi, deyer, tarix) VALUES(NULL, $nom, $ad, $val, CURDATE())";<br /> $res = mysql_query($sql);<br /><br /> if (!$res):<br /> echo "exoo";<br /> else:<br /> echo "asagidakilar daxil olundu";<br /> echo "&lt;b&gt;".$nom." ".$ad. " - " .$val. "AZN\n&lt;/b&gt;&lt;br&gt;";<br /> endif;<br /><br /> ?&gt;</p><p>[/code]


skriptini işə salanda, "exoo" yazılır. yəni, (!$res) şərti ödənilir - niyə? bilmirəm.
eyni alqoritmlə bu skripti pythonda yazdım - o işlədi. 

 

 

Verilmiş cavablar və yazılan şərhlər (8 cavab var)

VendeTTA (2013-05-17 18:06:56)
Düzü dəyişənlərdən birinin string olmasına indi fikir verdim:) String insert edərkən dırnaq vacibdir. Amma integer dirsə fərq etmir.

VendeTTA (2013-05-17 17:54:46)
1. Sorğuda yanlışlıq yoxdur hazırda. Burda hansısa dəyişənin ($nom, $ad və ya $val) düzgün dəyər almaması səbəb ola bilər. Əvvəlcə bunu araşdırı. Sonra isə əgər sorğu bir və daha çoxdursa nəticəni daha düzgün yoxlamaq üçün dövrün içinə increment əlavə etmək olar. Məsələn, [code] $i = 0; foreach( $foo as $bar ) { //blablabla $res = mysql_query($sql); if ($res) ++$i; } if ($i == 0): echo "exoo"; else: echo $i . ' dəfə sorğu daxil olundu'; endif;[/code] 2. Require - qoşulmuş faylları skript işə düşərkən lap əvvəldə hazırlamağa başlayır, həmin çağrılmış skriptlərin hər hansı birində xəta varsa, hazırki skript fatal error verəcək və yarımçıq dayanacaq. Amma include warning verəcək, skript işinə davam edəcək. Məsələn, hər hansı bir şərt (məsələn if($foo) include 'something.php'; ) daxilində kənar skript çağrılırsa include məsləhətdir. Sürət baxımından isə require azca üstündür.

marmeladze (2013-05-17 17:45:20)
dəyişənləri dırnaqla daxil etdim düzəldi: [code]VALUES(NULL, '$nom', '$ad', '$val', CURDATE())";[/code] səhv də elə buna görə imiş.

E. Hacı (2013-05-17 16:35:32)
2. Bu durumda fərq etmir. Ümumən isə require və include arasında kiçik fərq var. (error handling) 1. Skriptdə echo $sql verin, nəticəni kopyalayıb phpmyadmin-də icra edin, səhvi dəqiq olaraq görmüş olun və ya buraya yazın səhvi.

marmeladze (2013-05-17 12:33:57)
[code]<?php $link = mysql_connect('localhost', 'root', ' ') or die ('xxxx'); $dbselect = mysql_select_db('test', $link) or die ('yyyy'); $date = date ("d.m.Y"); $url = "http://www.cbar.az/currencies/" .$date. ".xml"; // print $url ."<br />"; $doc = new DOMDocument(); $doc->load($url); $valyutalar = $doc->getElementsByTagName( "Valute" ); foreach( $valyutalar as $valyuta ) { $nominal = $valyuta->getElementsByTagName( "Nominal" ); $nom = $nominal->item(0)->nodeValue; $name= $valyuta->getElementsByTagName( "Name" ); $ad= $name->item(0)->nodeValue; $value = $valyuta->getElementsByTagName( "Value" ); $val = $value->item(0)->nodeValue; // echo "<b>".$nom." ".$ad. " - " .$val. "AZN\n</b><br>-----------------------<br>"; $sql = "INSERT INTO `test`.`valyuta`(id, mebleg, pul_adi, deyer, tarix) VALUES(NULL, $nom, $ad, $val, CURDATE())"; $res = mysql_query($sql); } if (!$res): echo "exoo"; else: echo "asagidakilar daxil olundu"; echo "<b>".$nom." ".$ad. " - " .$val. "AZN\n</b><br>"; endif; ?>[/code] xml parsinq aparılır, lakin sql sintaksisi işləmir. elə burdaca daha bir sual soruşum: bu skriptdəki $date dəyişənini başqa bir skriptdən çağırmaq istəyirəm - konkret olaraq bundan - [code] <?php date_default_timezone_set('UTC'); $start_date = "25.11.1993"; $end_date = date("d.m.Y"); $next_date = $start_date; while(strtotime($next_date) <= strtotime($end_date)) { // echo "$next_date<br>"; $next_date = date ("d.m.Y", strtotime("+1 day", strtotime($next_date))); } ?> [/code] bunun üçün require yoxsa include istifadə etmək daha məsləhətlidir?

E. Hacı (2013-05-17 11:27:30)
Salam. Kodları aydın şəkildə, CODE [] teqinin içərisində insert edin normal görünsün, kömək etməyə çalışaq

marmeladze (2013-05-17 10:30:50)
nəticə eyni qaldı.

VendeTTA (2013-05-16 23:58:01)
Sintaksis səhvidir. [code]INSERT INTO 'test'.'valyuta'[/code] --> [code]INSERT INTO `test`.`valyuta`[/code]

Mövzu üzrə bənzər suallara da baxa bilərsiniz.

htaccerss link haqqında sual

İstifadəçilərin online olub olmamasını yoxlamaq

Pdo mysql bağlanısı olmur

php-də nə zaman framework istifadə etməyə başlamaq lazımdır.

php kömək

JAVA proqramlaşdırmada comboBox silinmə