הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

חזור   הוסטס - פורום אחסון האתרים הגדול בישראל > עיצוב גראפי, תכנות על כל שפותיו וקידום ושיווק אתרים > פורום תיכנות

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 11-07-15, 11:37   # 1
Tyler
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Jul 2013
הודעות: 417

Tyler לא מחובר  

Exclamation עזרה בmysql והעלאת מידע למסד מקובץ שלא על השרת

המטרה שלי:
ליצור "מערכת" העלאת שמות משתמשים.
ז"א, יש לי קובץ TXT עם XXXX שמות משתמשים שרושמים באתר שלי. השמות מופרדים בקובץ ע"י שורה, ז"א כל שורה = שם משתמש.
הייתי מעונין להעלות את כל אותם שמות משתמשים למסד לעמודת user_name, כך שהם יהיו במסד.

ממה שראיתי יש לי המון אפשרויות לעשות את זה, דרך CSV, TXT ודרך תיבת טקסט.
CSV הצלחתי לעשות, אבל אני לא אוהב את השיטה כי זה מסורבל ולא נוח לי להפוך כל פעם את הקובץ לCSV ולערוך אותו לפני זה וכו'.

הייתי מעוניין פשוט שיהיה כפתור "upload" ואני אבחר את הקובץ TXT שעל המחשב שלי, והשרת פשוט יטען את כל שמות המשתמשים שבו למסד,
או לחלופין שתהיה איזשהי תיבת טקסט באתר, אני אדביק בה את כל השמות משתמשים שמופרדים בשורה, ודרך התיבת טקסט הם יעלו למסד.

אחד הקודים שמצאתי בגוגל הוא:

PHP קוד:
mysql_connect('localhost''user''pass') or die(mysql_error());  
mysql_select_db('db_name') or die(mysql_error());  
 
$lines file('import.txt');  
$company_names "";  
$insert_string "INSERT INTO `ImportedWordList`(`Word`) VALUES"
$counter 0
$maxsize count($lines); 
foreach(
$lines as $line => $company) { 
$insert_string .= "('".$company."')"
$counter++; 
if(
$counter $maxsize){ 
$insert_string .= ","
}
//if 
}//foreach 
mysql_query($insert_string) or die(mysql_error()); 
החיסרון בקוד:
קובץ הTXT אמור להיות על השרת.
וזה מבזבז המון זמן להעלות קובץ TXT לשרת, ורק אז להתחיל להעלות אותו למסד.

קוד העלאת הCSV בעצם עובד בדרך הזאת של העלאת הקובץ:

PHP קוד:

<?php  

//connect to the database 
$connect mysql_connect("localhost","username","password"); 
mysql_select_db("mydatabase",$connect); //select the table 
// 

if ($_FILES[csv][size] > 0) { 

    
//get the csv file 
    
$file $_FILES[csv][tmp_name]; 
    
$handle fopen($file,"r"); 
     
    
//loop through the csv file and insert into database 
    
do { 
        if (
$data[0]) { 
            
mysql_query("INSERT INTO contacts (contact_first, contact_last, contact_email) VALUES 
                ( 
                    '"
.addslashes($data[0])."', 
                    '"
.addslashes($data[1])."', 
                    '"
.addslashes($data[2])."' 
                ) 
            "
); 
        } 
    } while (
$data fgetcsv($handle,1000,",","'")); 
    
// 

    //redirect 
    
header('Location: import.php?success=1'); die; 



?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>Import a CSV File with PHP & MySQL</title> 
</head> 

<body> 

<?php if (!empty($_GET[success])) { echo "<b>Your file has been imported.</b><br><br>"; } //generic success notice ?> 

<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1"> 
  Choose your file: <br /> 
  <input name="csv" type="file" id="csv" /> 
  <input type="submit" name="Submit" value="Submit" /> 
</form> 

</body> 
</html>
אשמח לעזרה, תודה.
__________________
facebook api, js, cpa, cpl, $$$
--------------------
שלח לי הודעה פרטית.

Last edited by Tyler; 11-07-15 at 11:40..
  Reply With Quote
ישן 11-07-15, 18:54   # 2
MasterNetwork
עסק רשום [?]
 
מיני פרופיל
תאריך הצטרפות: Jun 2007
הודעות: 653

MasterNetwork לא מחובר  

קוד:
$str=file_get_contents("users.txt");
$username=explode("\r\n", $str);
for ($i=0;$i<=count($username);$i++){
// insert $username[$i] to db;
}
וכמובן אתה יכול להוסיף אקספלוד בתוך האקספלוד אם אתה רוצה להפריד בין נתונים..
  Reply With Quote
ישן 11-07-15, 20:04   # 3
while1
חבר חדש
 
מיני פרופיל
תאריך הצטרפות: Jan 2015
הודעות: 34
Send a message via Skype™ to while1

while1 לא מחובר  

ציטוט:
נכתב במקור על ידי MasterNetwork צפה בהודעה
קוד:
$str=file_get_contents("users.txt");
$username=explode("\r\n", $str);
for ($i=0;$i<=count($username);$i++){
// insert $username[$i] to db;
}
וכמובן אתה יכול להוסיף אקספלוד בתוך האקספלוד אם אתה רוצה להפריד בין נתונים..
שים לב שבתנאי של הלולאה אתה צריך להוריד את ה'=' (שווה),
כי האינדקס מתחיל מ0 עד 1 פחות מסך הנתונים שקיימים במערך.

לחילופין, תשתמש בforeach :

קוד:
$str=file_get_contents("users.txt");
$usernames=explode("\r\n", $str);
foreach($usernames as $username){
   // insert $username to db;
}
בנוסף כדאי לבדוק מה באמת יש בסוף השורה, אם זה רק \n או גם \r
  Reply With Quote
ישן 12-07-15, 00:20   # 4
anon
חבר בקהילה
 
anon's Avatar
 
מיני פרופיל
תאריך הצטרפות: May 2015
הודעות: 54

anon לא מחובר  

PHP קוד:
<?php
    
if (isset($_POST['action']) && $_POST['action'] == 'post_users'){
        
mysql_connect('localhost''user''pass') or die(mysql_error());   
        
mysql_select_db('db_name') or die(mysql_error());

        
$all_users str_replace("\r","",$_POST['all_users']);
        
$usernames explode("\n"$all_users);
        foreach(
$usernames as $user){
          
mysql_query("INSERT INTO table_name (user_column) VALUES ('$user')");  
        }
        echo 
"Done.";
        exit;
    }
?><!DOCTYPE html>
<html lang="he">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <title>test</title>
</head>
<body>
    <form class="form" method="post">
        <textarea name="all_users" rows="30" cols="50" placeholder="Paste your users here..."></textarea>
        <input type="hidden" name="action" value="post_users" />
        <input type="submit" />
    </form>
</body>
</html>
זה על קצה המזלג וניתן לפתח את זה עוד הרבה אבל אני מעריך שהרעיונות שקיבלת פה מהחברים יעזרו לך לפתח את זה.. בהצלחה.
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


כל הזמנים הם GMT +2. הזמן כעת הוא 01:45.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ