Avatar billede Lieberkind72 Praktikant
13. januar 2016 - 12:32 Der er 9 kommentarer

webside

Hej,

Jeg er helt ny udi web programmering. Og jeg håber at få hjælp til det herinde.

Jeg skal lave et site hvor jeg kan uploade en XML fil ind i en mysql database på en hosted løsning(lige pt. er det en ASP løsning, men kan laves om til en PHP hvis det er bedre). XML filen skal kunne uploades hver dag og overskrive databasen, da den ændrer sig hver dag.

Derefter skal jeg kunne søge i denne database fra en side som kan hentes på en telefon.

Jeg tænker det nok er meget ligetil, men jeg er helt på bar bund. Som skrevet er jeg helt ny i dette, men vil alligevel gerne prøve at rode med det.

Jeg håber I kan hjælpe.
Avatar billede mjansen Seniormester
13. januar 2016 - 13:36 #1
1. Lav noget der kan oploade en fil.
Google:
- form upload php

2. Lav noget der kan læse filen.
Google:
- php fopen

3. Lav noget der kan snakke mellem php og mysql
Google:
- php mysql

Skal vi starte med det?
Avatar billede Lieberkind72 Praktikant
13. januar 2016 - 17:52 #2
Hej,

nu har jeg lavet  punkt 1, og jeg forstår ikke helt punkt 2, da jeg ikke kan få puttet det ind nogen steder.

Jeg har lavet en :
index.html med koden:

<html>
<head>
<title>File Upload Form</title>
</head>
<body>
This form allows you to upload a file to the server.<br>





<form action="getfile.php" method="post"><br>
Type (or select) Filename: <input type="file" name="uploadFile">
<input type="submit" value="Upload File">
</form>

</body>
</html>

og 1 getflie.php med koden:

<html>
<head>
<title>Process Uploaded File</title>
</head>
<body>
<?php

move_uploaded_file ($_FILES['uploadFile'] ['tmp_name'],
        "../uploads/{$_FILES['uploadFile'] ['name']}")

?>

</body>
</html>

og så er jeg kommet frem til at jeg skal åbne den evt. med en kode:

<?php
$myfile = fopen("web.xml", "r") or die("Unable to open file!");
echo fread($myfile,filesize("web.xml"));
fclose($myfile);
?>

men hvor skal jeg sætte det ind henne, eller skal det ligge i en fil for sig selv?
Avatar billede mjansen Seniormester
13. januar 2016 - 18:25 #3
1. bliver filen gemt på serveren?

2.
Google:
php read xml file

http://php.net/manual/en/function.simplexml-load-file.php


Hvis du er sikker på du for gemt filen på serveren så kan du ligge del 2 ind sammen med din php fra del 1. og begynde at lege med det.
Avatar billede Lieberkind72 Praktikant
13. januar 2016 - 20:56 #4
Den var værre...

Jeg har ændret lidt på upload, og nu gemmer den files i en mappe jeg har oprettet til formålet.(jeg kunne ikke finde filen før)

Jeg kan ikke få koden til at indsætte noget i tabellen i databasen.

Jeg har prøvet flere metoder uden held. Men det er nok fordi jeg gør noget galt. Jeg kan bare ikke gennemskue hvad det er.
Avatar billede mjansen Seniormester
13. januar 2016 - 21:50 #5
kan jeg heller ikke se når jeg ikke kan se koden.....
Avatar billede Lieberkind72 Praktikant
14. januar 2016 - 10:49 #6
Det er forståeligt. :-)

Her kommer den.

Først min index.html.(det er til jeg har styr på det):

<form enctype="multipart/form-data" action="uploader.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
Choose a file to upload: <input name="uploadedfile" type="file" /><br />
<input type="submit" value="Upload File" />
</form>

Derefter min uploader.php:

<?php
$target_path = "files/";

$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
    echo "The file ".  basename( $_FILES['uploadedfile']['name']).
    " has been uploaded";
} else{
    echo "There was an error uploading the file, please try again!";
}


Den gemmer filen fint i den mappe jeg har lavet til det.

Men nu er opgaven at jeg skal have smidt det ind i mysql, og det vil den ikke. Jeg har prøvet med flere koder uden held.

min XML fil ser sådan ud:

<?xml version="1.0" encoding="UTF-8"?>

-<dataroot generated="2016-01-12T16:31:20" xsi:noNamespaceSchemaLocation="Web.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:od="urn:schemas-microsoft-com:officedata">


-<Web>

<Id>1</Id>

<Sag>505</Sag>

<Lokation>111</Lokation>

</Web>


-<Web>

<Id>2</Id>

<Sag>80DP</Sag>

<Lokation>222</Lokation>

</Web>


-<Web>

<Id>3</Id>

<Sag>839</Sag>

<Lokation>8888</Lokation>

</Web>


-<Web>

<Id>4</Id>

<Sag>135778</Sag>

<Lokation>7777</Lokation>

</Web>


-<Web>

<Id>5</Id>

<Sag>50</Sag>

<Lokation>222</Lokation>

</Web>


-<Web>

<Id>6</Id>

<Sag>137143</Sag>

<Lokation>222</Lokation>

</Web>


-<Web>

<Id>7</Id>

<Sag>90</Sag>

<Lokation>111</Lokation>

</Web>


-<Web>

<Id>8</Id>

<Sag>90</Sag>

<Lokation>222</Lokation>

</Web>


-<Web>

<Id>9</Id>

<Sag>90</Sag>

<Lokation>333</Lokation>

</Web>


-<Web>

<Id>10</Id>

<Sag>50</Sag>

<Lokation>111</Lokation>

</Web>


-<Web>

<Id>11</Id>

<Sag>50</Sag>

<Lokation>222</Lokation>

</Web>


-<Web>

<Id>12</Id>

<Sag>50</Sag>

<Lokation>333</Lokation>

</Web>


-<Web>

<Id>13</Id>

<Sag>505</Sag>

<Lokation>111</Lokation>

</Web>


-<Web>

<Id>14</Id>

<Sag>80DP</Sag>

<Lokation>222</Lokation>

</Web>


-<Web>

<Id>15</Id>

<Sag>839</Sag>

<Lokation>8888</Lokation>

</Web>


-<Web>

<Id>16</Id>

<Sag>135778</Sag>

<Lokation>7777</Lokation>

</Web>


-<Web>

<Id>17</Id>

<Sag>50</Sag>

<Lokation>222</Lokation>

</Web>


-<Web>

<Id>18</Id>

<Sag>137143</Sag>

<Lokation>222</Lokation>

</Web>


-<Web>

<Id>19</Id>

<Sag>80</Sag>

<Lokation>111</Lokation>

</Web>


-<Web>

<Id>20</Id>

<Sag>80</Sag>

<Lokation>222</Lokation>

</Web>


-<Web>

<Id>21</Id>

<Sag>80</Sag>

<Lokation>333</Lokation>

</Web>


-<Web>

<Id>22</Id>

<Sag>90</Sag>

<Lokation>111</Lokation>

</Web>


-<Web>

<Id>23</Id>

<Sag>90</Sag>

<Lokation>222</Lokation>

</Web>


-<Web>

<Id>24</Id>

<Sag>90</Sag>

<Lokation>333</Lokation>

</Web>


-<Web>

<Id>25</Id>

<Sag>50</Sag>

<Lokation>111</Lokation>

</Web>


-<Web>

<Id>26</Id>

<Sag>50</Sag>

<Lokation>222</Lokation>

</Web>


-<Web>

<Id>27</Id>

<Sag>50</Sag>

<Lokation>333</Lokation>

</Web>


-<Web>

<Id>28</Id>

<Sag>505</Sag>

<Lokation>111</Lokation>

</Web>


-<Web>

<Id>29</Id>

<Sag>80DP</Sag>

<Lokation>222</Lokation>

</Web>


-<Web>

<Id>30</Id>

<Sag>839</Sag>

<Lokation>8888</Lokation>

</Web>


-<Web>

<Id>31</Id>

<Sag>135778</Sag>

<Lokation>7777</Lokation>

</Web>


-<Web>

<Id>32</Id>

<Sag>50</Sag>

<Lokation>222</Lokation>

</Web>


-<Web>

<Id>33</Id>

<Sag>137143</Sag>

<Lokation>222</Lokation>

</Web>


-<Web>

<Id>34</Id>

<Sag>80</Sag>

<Lokation>111</Lokation>

</Web>


-<Web>

<Id>35</Id>

<Sag>80</Sag>

<Lokation>222</Lokation>

</Web>


-<Web>

<Id>36</Id>

<Sag>80</Sag>

<Lokation>333</Lokation>

</Web>

</dataroot>
Avatar billede Lieberkind72 Praktikant
14. januar 2016 - 12:49 #7
Og koden der skal indsætte i mysql:

<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("web.xml");
$mysql_hostname = "mysql34.unoeuro.com"; // Example : localhost
$mysql_user = "lieberkind_one";
$mysql_password = "Frede5375";
$mysql_database = "lieberkind_one_db";

$dbh = new PDO("mysql:dbname={$mysql_database};host={$mysql_hostname};port=3306", $mysql_user, $mysql_password);

$xmlObject = $xmlDoc->getElementsByTagName('item');
$itemCount = $xmlObject->length;

for ($i=0; $i < $itemCount; $i++){
  $title = $xmlObject->item($i)->getElementsByTagName('title')->item(0)->childNodes->item(0)->nodeValue;
  $link = $xmlObject->item($i)->getElementsByTagName('url')->item(0)->childNodes->item(0)->nodeValue;
  $sql = $dbh->prepare("INSERT INTO `my_table_name` (`title`, `url`) VALUES (?, ?)");
  $sql->execute(array(
    $title,
    $link
  ));
  print "Finished Item $title n<br/>";
}
?>
Avatar billede olsensweb.dk Ekspert
17. januar 2016 - 20:42 #8
lav lige dit username/password om til din database hos unoeuro



vedr din xml fil!!
er du sikker på at
-<Web>
ikke skulle være
<Web>

det siger standarten

skulle denne

$xmlDoc->load("web.xml");



$xmlObject = $xmlDoc->getElementsByTagName('item');
$itemCount = $xmlObject->length;

for ($i=0; $i < $itemCount; $i++){
  $title = $xmlObject->item($i)->getElementsByTagName('title')->item(0)->childNodes->item(0)->nodeValue;
  $link = $xmlObject->item($i)->getElementsByTagName('url')->item(0)->childNodes->item(0)->nodeValue;
  $sql = $dbh->prepare("INSERT INTO `my_table_name` (`title`, `url`) VALUES (?, ?)");
  $sql->execute(array(
    $title,
    $link
  ));
  print "Finished Item $title n<br/>";
}


ikke være

$xmlDoc->load("files/web.xml");



$xmlObject = $xmlDoc->getElementsByTagName('Web');
$itemCount = $xmlObject->length;

$sql = $dbh->prepare("INSERT INTO `my_table_name` (`Sag`, `Lokation`) VALUES (?, ?)");
for ($i = 0; $i < $itemCount; $i++) {
    $Sag = $xmlObject->item($i)->getElementsByTagName('Sag')->item(0)->childNodes->item(0)->nodeValue;
    $Lokation = $xmlObject->item($i)->getElementsByTagName('Lokation')->item(0)->childNodes->item(0)->nodeValue;
    $sql->execute(array(
        $Sag,
        $Lokation
    ));
    print "Finished Item $Sag n<br/>";
}


det passer ihvertfald med din XML fil

en nem måde at "overskrive" er at lave en ny tabel hver gang ved at lave en drop tabel, og så en create tabel, så har du aldrig noget gammel snavs liggende
Avatar billede Lieberkind72 Praktikant
19. maj 2016 - 15:08 #9
Takker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester