Persze, csak mondjad el, hogy mi a hiba, és egy kicsit légy önálló is. Annyira gusztustalan a kódod, hogy ezt ember nem látja át. Nem árt néha behúzni, meg a függvényeket a végére rakni és nem össze-vissza, stb. Sokkal jobban átlátod magad is.
<?php
if (import_csv("proba.csv")) {
print("Sikerült a fájl megnyitása");
} else {
print("Hiba miatt nem futott le az import csv függvény");
};
if (update_product($fields[0], $fields[1], $fields[2])) {
print("Sikerült az adatbázistábla felülírása!");
} else {
print("Nem sikerült a felülírás");
};
function import_csv($filename) {
for($i = 0; $i < sizeof($file); $i++) {
if ($i != 0) {
$fields = explode(";", $file[$i]);
update_product($fields[0], $fields[1], $fields[2]);
}
}
}
function update_product($elso, $masodik, $harmadik) {
mysql_connect("127.0.0.1", "inicial", "kacsa");
mysql_select_db(inicial);
// Felülírjuk
mysql_query("UPDATE excel SET elso='$elso', masodik='$masodik', harmadik='$harmadik'");
}
?>
Például nem értem, hogy minek neked a második if? Aztán az import_csv-ben található fájlkezelés alapjaiban rossz. Az adatbázist megnyitod, de nem zárod le, illetve az se jó koncepció, hogy minden egyes beszúrásnál megnyitod.
Ezzel a kóddal próbáltam meg , de ismét hibaüzenetet kaptam :
<?php
function import_csv($filename) {
$file = file($filename);
for($i = 0; $i < sizeof($file); $i++) {
if ($i != 0) {
$fields = explode(";", $file[$i]);
$update = update_product($fields[0], $fields[1], $fields[2]);
}
}
};
function update_product($elso, $masodik, $harmadik)
{
$kapcsolat = mysql_connect("host", "db", "****");
if (!$kapcsolat) die("Nem sikerült kapcsolódni az adatbázishoz!");
mysql_select_db(db);
// Felülírjuk
mysql_query("UPDATE tabla SET elso='$elso', masodik='$masodik', harmadik='$harmadik'");
mysql_close($kapcsolat);
};
if (import_csv("proba.csv"))
{
print("Sikerült a fájl megnyitása");
}
else
{
print("Hiba miatt nem futott le az import csv függvény");
};
?>
És ismét megkaptam a hibaüzenetet :
Hiba miatt nem futott le az import csv függvény
Az lehet a baj , hogy mikor az if-ben meghívom az import_csv függvényt , csak annyit adok meg , hogy proba.csv , vagy pedig teljes elérési út kell ( pl. i:/valami/valami/proba.csv ) ?
Ha ez a baj , hogy tudom megszerezni a teljes elérési utat az atw szerveren ?
Sajnos nem tudok neked segíteni abban, hogy minden sort végignézek, hol lehet vajon a hiba vele? Természetesen, ha nem a php könyvtárába töltöd fel a CSV-t, akkor nem elég relatíve megadni. Írass ki echo-val infókat ezer helyen a programodban, és nézzed meg, hogy betölti-e a fájlt, ha igen, mennyi sora van, ha megvan minden sora, akkor sikerül-e darabolni, ha sikerül, akkor jók-e a változó értékek, s ha ez is igaz, akkor jó-e az adatbázis jelszó, eljut-e oda a program, stb.
Ha ez nem megy, és nem elég ennyi segítség, akkor javaslom, hogy egy kész programot használj a feladatra (lásd fentebb).
Csak egy apró kérdés a pálya széléről: az ATW ingyenes vagy fizetős szerver? Engedélyezik ott a fájlműveleteket???
A másik megjegyzésem, hogy (amint Boogie is írta), te egy 10.000 soros CSV esetén kereken tízezerszer kapcsolódsz a mysql kiszolgálóhoz, majd az update után bontod a kapcsolatot. Ha nem pár tíz soros a CSV fájlod, azért ezt ne nagyon csináld, itt is lehet hiba oka a timeout, stb. Azt a mysql_connect és mysql_close részt rakd már ki a függvényen kívülre, légyszi.
És mi a hibaüzenet? Amit a php visszaad, nem amit te íratsz ki az ifből.
Szerintem csinálj belőle cvs-fájlt, utána pl. phpmyadmin-nel grafikus felületen keresztül is be tudod olvasni... Ugyanezt az újabb phpmyadminok XML-en kereztül is tudják.
Nekem igazából így nem sikerült. Az oszlop végére berakott egy "\r" karaktert, amit nem lehetett látni, csak ha grafikusan nézted az adatbázis tartalmát. Viszont a program dolgozott vele, főleg ha össze kellett hasonlítani valamivel. Sose passzolt. Nekem a megoldás a következő volt: Access-be beimportáltam az excel táblát, majd a MySQL-Fronttal az access adatbázisból ODBC-n keresztül importáltam. Ez pár ezer sor volt, öt oszloppal. Ez viszont stabilan működött.
En is inkabb a CSV-t (Pal_ur: nem cvs, hanem csv! :D )-t ajanlom, a "\r"-nek nem igazan kellene belezavarnia, mar tobbszor sikerult a konvertalas gond nelkul.
Mea maxima culpa, a phpMyAdminban nem találok CSV-import funkciót. Pedig úgy emlékeztem, mintha azzal csináltam volna. A parocgab által már említett MySQL-Frontban viszont van ilyen: "Im-/Export" menü, "Import textfile" menüpont.
Letöltés: http://mysqlfront.venturemedia.de/index.php?act=ST&f=2&t=328
// Ciklus, hogy minden sort beolvassunk a file-ból
for($i = 0; $i < sizeof($file); $i++) {
// Az első sort kihagyjuk ...:)
if ($i != 0) {
// A sorok tartalmát szétszedi a ; alapján
$fields = explode(";", $file[$i]);
$update = update_product($fields[0], $fields[1], $fields[2], $fields[3], $fields[4], $fields[5], $fields[6]);
}
}
}
function update_product($id, $part_number, $name, $price, $akcio, $aktiv, $db) {
mysql_connect(dbhost,dbuser,dbpass);
mysql_select_db(dbname);
// Felülírjuk a termékeket
$sql_insert=mysql_query("UPDATE product_data SET part_number='$part_number', name='$name', activ='$aktiv', akcio='$akcio', darab='$db', price='$price' WHERE id='$id'");
}
Én egy általam készített webshop-hoz írtam ezt a kódot. A megrendelő kérése volt, hogy excelből lehessen frissíteni a termékeket.
Ha vmi nem világos, akkor dobj egy e-mail-t!
nem jött össze
Segítsetek légyszi , hogy mi a hiba !
Re:
segíts
bocs
ne harapjatok le a fejem, ha valami nagy hibat vetettem , mert még kezdő vagyok :( ..
<?php
function import_csv($filename) {
for($i = 0; $i < sizeof($file); $i++) {
if ($i != 0) {
$fields = explode(";", $file[$i]);
update_product($fields[0], $fields[1], $fields[2]);
}
}
}
if(import_csv("proba.csv"))
{
print("Sikerült a fájl megnyitása");
}
else
{
print("Hiba miatt nem futott le az import csv függvény");
};
function update_product($elso, $masodik, $harmadik) {
mysql_connect("127.0.0.1", "inicial", "kacsa");
mysql_select_db(inicial);
// Felülírjuk
mysql_query("UPDATE excel SET elso='$elso', masodik='$masodik', harmadik='$harmadik'");
}
if(update_product($fields[0], $fields[1], $fields[2]))
{
print("Sikerült az adatbázistábla felülírása!");
}
else
{
print("Nem sikerült a felülírás");
};
?>
es termeszetesen az alabbi uzenetet kapom :
Hiba miatt nem futott le az import csv függvényNem sikerült a felülírás
Segítséget kérnék!
help
re: help
if
? Aztán azimport_csv
-ben található fájlkezelés alapjaiban rossz. Az adatbázist megnyitod, de nem zárod le, illetve az se jó koncepció, hogy minden egyes beszúrásnál megnyitod.Nem fogom helyetted megírni, de például ez segíthet: http://hu.php.net/file
Ennek alapján így kell megírni az
import_csv
részt (vagyis egy igen fontos sor bizony kimaradt...):-boogie-
így próbáltam :
<?php
function import_csv($filename) {
$file = file($filename);
for($i = 0; $i < sizeof($file); $i++) {
if ($i != 0) {
$fields = explode(";", $file[$i]);
$update = update_product($fields[0], $fields[1], $fields[2]);
}
}
};
function update_product($elso, $masodik, $harmadik)
{
$kapcsolat = mysql_connect("host", "db", "****");
if (!$kapcsolat) die("Nem sikerült kapcsolódni az adatbázishoz!");
mysql_select_db(db);
// Felülírjuk
mysql_query("UPDATE tabla SET elso='$elso', masodik='$masodik', harmadik='$harmadik'");
mysql_close($kapcsolat);
};
if (import_csv("proba.csv"))
{
print("Sikerült a fájl megnyitása");
}
else
{
print("Hiba miatt nem futott le az import csv függvény");
};
?>
És ismét megkaptam a hibaüzenetet :
Hiba miatt nem futott le az import csv függvény
Az lehet a baj , hogy mikor az if-ben meghívom az import_csv függvényt , csak annyit adok meg , hogy proba.csv , vagy pedig teljes elérési út kell ( pl. i:/valami/valami/proba.csv ) ?
Ha ez a baj , hogy tudom megszerezni a teljes elérési utat az atw szerveren ?
Előre is kösz a segítséget !
Sajnos nem tudok neked segít
Ha ez nem megy, és nem elég ennyi segítség, akkor javaslom, hogy egy kész programot használj a feladatra (lásd fentebb).
-boogie-
ATW az ingyenes szerver?
Csak egy apró kérdés a pálya széléről: az ATW ingyenes vagy fizetős szerver? Engedélyezik ott a fájlműveleteket???
A másik megjegyzésem, hogy (amint Boogie is írta), te egy 10.000 soros CSV esetén kereken tízezerszer kapcsolódsz a mysql kiszolgálóhoz, majd az update után bontod a kapcsolatot. Ha nem pár tíz soros a CSV fájlod, azért ezt ne nagyon csináld, itt is lehet hiba oka a timeout, stb. Azt a mysql_connect és mysql_close részt rakd már ki a függvényen kívülre, légyszi.
És mi a hibaüzenet? Amit a php visszaad, nem amit te íratsz ki az ifből.
Robi
amit én iratok ki ifből .
Re: excel es mysql
Re: excel es mysql
Gábor
Re: excel es mysql
R.
Re: excel es mysql
addig eljutottam, hogy csv-be mentettem az excell fajlt, de a phpmyadminnal elakadtam.
elore is koszi
Re: excel es mysql
Letöltés: http://mysqlfront.venturemedia.de/index.php?act=ST&f=2&t=328
Robi
Re: excel es mysql
Nem teljesen vagyok beszámítható, bocsi.
Természetesen csv.
A kellően új phpmyadmin-okban (2.5-től) már van ilyen funkció. A 'Struktúra' menüpontban, alul, szövegfájl beszúrása...
Re: excel es mysql
Egy kis segítség, hátha nem késő még.... :)
function import_csv($filename) {
// Ciklus, hogy minden sort beolvassunk a file-ból
for($i = 0; $i < sizeof($file); $i++) {
// Az első sort kihagyjuk ...:)
if ($i != 0) {
// A sorok tartalmát szétszedi a ; alapján
$fields = explode(";", $file[$i]);
$update = update_product($fields[0], $fields[1], $fields[2], $fields[3], $fields[4], $fields[5], $fields[6]);
}
}
}
function update_product($id, $part_number, $name, $price, $akcio, $aktiv, $db) {
mysql_connect(dbhost,dbuser,dbpass);
mysql_select_db(dbname);
// Felülírjuk a termékeket
$sql_insert=mysql_query("UPDATE product_data SET part_number='$part_number', name='$name', activ='$aktiv', akcio='$akcio', darab='$db', price='$price' WHERE id='$id'");
}
Én egy általam készített webshop-hoz írtam ezt a kódot. A megrendelő kérése volt, hogy excelből lehessen frissíteni a termékeket.
Ha vmi nem világos, akkor dobj egy e-mail-t!
paja