943,574 Members | Top Members by Rank

Ad:
  • PHP Discussion Thread
  • Unsolved
  • Views: 47604
  • PHP RSS
Mar 23rd, 2004
0

Import/export tab delimited file

Expand Post »
Hello php gurus!

i need help with a little script, i have to import a tab delimited files into a mysql db

file.tab

PHP Syntax (Toggle Plain Text)
  1. "user1"TAB"pass1"TAB"miscdata1_1"TAB"miscdata1_2"TAB"miscdata1_3"TAB"miscdata1_4"TAB
  2. "user2"TAB"pass2"TAB"miscdata2_1"TAB"miscdata2_2"TAB"miscdata2_3"TAB"miscdata2_4"TAB


Here is what i have programmed with the help of google

PHP Syntax (Toggle Plain Text)
  1. <?
  2. include('config.php');
  3. $conn = mysql_connect($dbserver, $dbuser, $dbpass);
  4. if (!$conn) {
  5. echo "Impossible de se connecter à la base de données : " . mysql_error();
  6. exit;
  7. }
  8. if (!mysql_select_db($dbname)) {
  9. echo "Impossible d'accéder à la base de données : " . mysql_error();
  10. exit;
  11. }
  12.  
  13. $fcontents = file('./file.tab');
  14. for($i=0; $i<sizeof($fcontents); $i++) {
  15. $line = trim($fcontents[$i]);
  16. $arr = explode("\t", $line);
  17. #if your data is comma separated
  18. # instead of tab separated,
  19. # change the '\t' above to ';'
  20. $sql = "insert into accounts values ('". implode("','", $arr) ."')";
  21. mysql_query($sql);
  22. echo $sql ."<br>\n";
  23. if(mysql_error()) {
  24. echo mysql_error() ."<br>\n";
  25. }
  26. }
  27. ?>

This code will import the data in my database, something is annoying, all the db fields are filled with values with ""

This isnt a big problem, i can deal with it.

The second part of my script needs to be able to export the mysql database into a tab delimited file (same kind of file than file.tab) So i can add new entry in the database, export the content of the db to this file.

This is where i am jammed, i dont know how to do that, i dont know how to export the content of a db into a file to get the same result as the original file.tab

Any of the php masters here can help me? thanks in advance

fred

Sorry for the terrible english.
Similar Threads
Reputation Points: 10
Solved Threads: 0
Newbie Poster
fred999 is offline Offline
11 posts
since Feb 2004
Mar 24th, 2004
0

Re: Import/export tab delimited file

anyone?
Reputation Points: 10
Solved Threads: 0
Newbie Poster
fred999 is offline Offline
11 posts
since Feb 2004
Mar 25th, 2004
0

Re: Import/export tab delimited file

It might be more helpful just go get phpMyAdmin. It's completely free, and offers all the facillities you desire (and lots more).

http://sourceforge.net/projects/phpmyadmin/
Team Colleague
Reputation Points: 63
Solved Threads: 6
Supreme Evil Overlord
Roberdin is offline Offline
282 posts
since Feb 2003
Jun 4th, 2005
0

Re: Import/export tab delimited file

Well, when you get the query, and the results, could you not then run through each row with a fetch row and then run it into the tab file. I not an expert, but try getting the data first, without the explode() function, then on each row run the explode, and dump it into a file.
Reputation Points: 10
Solved Threads: 0
Light Poster
Gnome_101 is offline Offline
27 posts
since Apr 2004
Jun 9th, 2005
0

Re: Import/export tab delimited file

First, you said you had the import working, but you ended up with double quotes in your values. You can strip those using code like:
[php]
$val = str_replace('"', '', $val);
[/php]

Here is example code that shows you how to connect to a mysql server, select a specific database, execute a SQL statement, then work with the data.
[php]
<?php

$server = "localhost"; // Name or IP of database server.
$user = ""; // username
$pwd = ""; // password
$db = ""; // Name of database to connect to.

if (!$cnn = mysql_connect($server,$user,$pwd )) {
die("mysql_connect() failed");
}

if (!mysql_select_db($db,$cnn)) {
die("Could not select database named ".$db);
}

/* Build your SQL statement however you need. */
$sql = "select * from mytable";

/* Execute the query. */
if (!$res = @mysql_query($sql)) {
die(mysql_error());
return false;
}
/* Create an array of arrays out of the recordset. */
while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
$data[] = $row;
}

/* Now iterate through the recordset creating a simple table. */
echo "<style>table.dump { font-family:Arial; font-size:8pt; }</style>";
echo "<table class=\"dump\" border=\"1\" cellpadding=\"1\" cellspacing=\"0\">\n";
echo "<tr>";
echo "<th>#</th>";
foreach($data[0] as $key=>$val) {
echo "<th><b>";
echo $key;
echo "</b></th>";
}
echo "</tr>\n";
$row_cnt = 0;
foreach($data as $row) {
$row_cnt++;
echo "<tr align='center'>";
echo "<td>".$row_cnt."</td>";
foreach($row as $val) {
echo "<td>";
echo $val;
echo "</td>";
}
echo"</tr>\n";
}
echo "</table>\n";

?>
[/php]

Next, you need to know how to save the recordset back into a TAB delimited file. This example uses the $data value from the code example above.
[php]
<?php
$fp = fopen("path_to_file_here", "w");

foreach($data as $row) {

$line = "";

foreach($row as $val) {
$line .= "\t\"".$val."\"";
}

/* Strip off the first TAB and add a carriage return. */
$line = substr($line, 1)."\n";

$fwrite($line);
}

fclose($fp);

?>
[/php]

I hope that helps! Enjoy the journey!
Reputation Points: 36
Solved Threads: 6
Posting Whiz
Troy is offline Offline
354 posts
since Jun 2005

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in PHP Forum Timeline: How to parse fields
Next Thread in PHP Forum Timeline: phpBB to php-nuke integration help





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC