Avatar billede lefsa62 Seniormester
12. marts 2019 - 17:10 Der er 16 kommentarer

upload

Denne index.php som er et upload til mysql den fejler i linje 14 i localhost men ikke online. Men online uploader den og smider både navn og email i den samme tabel
item1 er navn på linje 13 og item2 er email på linje 14

leif Albert     postmaster@web.dk

de er i en csv fil

sådan ser localhost ud 
Notice: Undefined offset: 1 in /Applications/MAMP/htdocs/Update_csv/index.php on line 14


<?php 
$connect = mysqli_connect("localhost", "root", "root", "test_db");
if(isset($_POST["submit"]))
{
if($_FILES['file']['name'])
{
  $filename = explode(".", $_FILES['file']['name']);
  if($filename[1] == 'csv')
  {
  $handle = fopen($_FILES['file']['tmp_name'], "r");
  while($data = fgetcsv($handle))
  {
    $item1 = mysqli_real_escape_string($connect, $data[0]); 
    $item2 = mysqli_real_escape_string($connect, $data[1]);
                $query = "INSERT into excel(excel_name, excel_email) values('$item1','$item2')";
                mysqli_query($connect, $query);
  }
  fclose($handle);
  echo "<script>alert('Import done');</script>";
  }
}
}
?> 
<!DOCTYPE html> 
<html> 
<head> 
  <title>Webslesson Tutorial</title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> 
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
</head> 
<body> 
  <h3 align="center">How to Import Data from CSV File to Mysql using PHP</h3><br />
  <form method="post" enctype="multipart/form-data">
  <div align="center"> 
    <label>Select CSV File:</label>
    <input type="file" name="file" />
    <br />
    <input type="submit" name="submit" value="Import" class="btn btn-info" />
  </div>
  </form>
</body> 
</html>
Avatar billede arne_v Ekspert
12. marts 2019 - 17:53 #1
Jeg antager at:

leif Albert    postmaster@web.dk

er CSV filen.

Og jeg kan godt forstaa fejlen.

Der er ikke noget komma mellem de to vaerdier.
Avatar billede lefsa62 Seniormester
12. marts 2019 - 18:09 #2
de ligger i to tabeller med rammer i et exel som et scv fil
og hvad er problemet med linje 14 i localhost
Avatar billede lefsa62 Seniormester
12. marts 2019 - 18:23 #3
Det er der hvor der står item2 som giver problem
Avatar billede arne_v Ekspert
12. marts 2019 - 18:26 #4
Linie 14 er saa vidt jeg kan se:

$item2 = mysqli_real_escape_string($connect, $data[1]);

Og fejlen:

Undefined offset: 1

betyder vel at der ikke er noget element med index 1.

Og det er vel ogsaa korrekt.

Du laeser ind med:

$data = fgetcsv($handle)

Og med input:

leif Albert    postmaster@web.dk

vil den returnere 'leif Albert    postmaster@web.dk' i data[0] og ikke definere data[1].
Avatar billede lefsa62 Seniormester
12. marts 2019 - 18:33 #5
det er rigtigt. Den skal smide NAVN i en og i den anden EMAIL
når vi ser i INSERT er der to tabeller , men har du et foreslag hvordan det bliver rigtig
Avatar billede olsensweb.dk Ekspert
12. marts 2019 - 18:41 #6
det som arne_v siger er:

leif Albert    postmaster@web.dk
skal være
leif Albert , postmaster@web.dk


leif Albert vil så være index 0 ( $data[0] )  og
postmaster@web.dk vil være index 1 ( $data[1]) .
Avatar billede olsensweb.dk Ekspert
12. marts 2019 - 18:43 #7
læg mærke til komma mellem leif Albert , postmaster@web.dk
Avatar billede arne_v Ekspert
12. marts 2019 - 18:46 #8
C'et i CSV staar for Comma.

Der mangler et komma i den fil.

(eller en anden separator - fgetcsv tillader at man skifter fra komma til en anden separator)
Avatar billede lefsa62 Seniormester
12. marts 2019 - 18:56 #9
i har ret at det skal være et komma efter leif albert MEN så kommer der et " ; " sådan et tegn foran email adressen? hvordan undgår jeg den
Avatar billede lefsa62 Seniormester
12. marts 2019 - 19:10 #10
(eller en anden separator - fgetcsv tillader at man skifter fra komma til en anden separator) 
Hvad mener du med denne kommentar , vil det sige at uanset hvilket tegn jeg putter efter navnet så er det bedre en ingen ting
Avatar billede olsensweb.dk Ekspert
12. marts 2019 - 19:24 #11
ref http://php.net/manual/en/function.fgetcsv.php
fgetcsv ( resource $handle [, int $length = 0 [, string $delimiter = "," [, string $enclosure = '"' [, string $escape = "\\" ]]]] ) : array


en anden brugt seperator er semicollon (;)
Avatar billede arne_v Ekspert
12. marts 2019 - 19:26 #12
Hvis du ikke ønsker at bruge komma f.eks. fordi tekst faktisk indeholder komma saa kan du bruge et andet tegn.

Eksempel:

leif Albert#postmaster@web.dk

og:

$data = fgetcsv($handle, 0, '#')
Avatar billede lefsa62 Seniormester
12. marts 2019 - 19:43 #13
Nå det var ikke fordi jeg ikke ville indsætte “ , “ men en forklaring.  Jeg havde et spørsmål Når jeg så indputter et komma efter navn så kommer der et simicolon foran e-mail , ikke for jeg laver det men det kommer auto , hvordan undgår jeg det
Avatar billede lefsa62 Seniormester
12. marts 2019 - 22:07 #14
et tillægsspørgsmål. eks at jeg skal indsætte danske post nummer det er over 1000 stk.  i en csv fil. kan jeg gøre sådan i strengen at jeg ikke skal indsætte kolon for hver enest . kan det lade sig gøre at det bliver fortalt strengen at sådan skal den gøres en gang
Avatar billede olsensweb.dk Ekspert
12. marts 2019 - 22:26 #15
er det ikke nemmere at:
løsning 1: hent excel filen, og gem den som csv fra excel
løsning 2: hent excel filen, og gem den som open document Spreadsheet (ods).
bægge formater kan importeres direkte i phpmyadmin
Avatar billede lefsa62 Seniormester
13. marts 2019 - 07:18 #16
Desværre så er der kun csv utf-8 csv som duer for hvis jeg prøver med (ods.) så siger den at ingen fil er valgt  og den kommer med en semikolon som kommer med foran email adressen er der stadig
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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