Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno PHP a zápis do MySQL

Lidičky, potřeboval bych radu... Jde mi o PHP a zápis do MySQL a také update.

<?php 
  
function zapis_do_MySQL($zeme)
{
  $xml = simplexml_load_file("www.unicreditbank.cz/kurzy-xml.php");
$EU = $xml->exchange_rate[0]->currency[$zeme];
$quota = $EU["quota"];
$name = $EU["name"];
$rate = $EU["rate"];
$date = date('Y-m-d');
echo $quota; echo "<br>";
echo $name; echo "<br>";
echo $rate; echo "<br>";
echo $date; echo "<br>";
require('pripoj.php');
$d = mysql_result(mysql_query("SELECT COUNT( * ) FROM `mena` WHERE `name` LIKE '".$name."' AND `date` = '".$date."'  ", $link), 0);

  if ($d >= 1)
  {
    mysql_query ("UPDATE `mena` SET `date` = '".$date."', `name` = '".$name."', `rate` = '".$rate."', `quota` = '".$quota."' WHERE `date` = '".$date."';", $link);
    echo "update";
    
  }
    else
  {
    mysql_query ("INSERT INTO `mena` ( `date` , `name` , `rate` , `quota` ) VALUES ('$date', '$name', '$rate', '$quota');", $link);
    echo "insert";
    
  }
    mysql_close(); //uzavře MySQL spojení

echo "<hr>";
}



 
  zapis_do_MySQL(0);
  zapis_do_MySQL(2);
  zapis_do_MySQL(4);
  zapis_do_MySQL(5);
  zapis_do_MySQL(12);
?>

Chyba je v tom, že když je prádná DB tak to vše zapíše (což je v pořádku), ale když je plná, tak to furt ukladá další a další řádky, ale já je chci updatovat...

Ukázka jak to funguje je na xml.php

Předmět Autor Datum
V tom update máš vo where klauzule len porovnanie s $date a chýba tam porovnanie s $name. Takže pri… poslední
los 08.10.2009 20:46
los

V tom update máš vo where klauzule len porovnanie s $date a chýba tam porovnanie s $name. Takže pri prvom update nastavíš kurz a názov meny pre daný deň na rovnaký a ostatné meny v danom dni sa už tým pádom v tabuľke nenájdu, preto sa vykoná insert.

Edit: Ak máš vhodne nastavený primárny kľúč (zložený z dátumu a názvu meny) a neprekáža ti použitie neštandardného príkazu, tak pre MySQL sa môžeš pozrieť na INSERT ... ON DUPLICATE KEY UPDATE.

Zpět do poradny Odpovědět na původní otázku Nahoru