הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   [PHP] עזרה בMYSQL (https://hosts.co.il/forums/showthread.php?t=66664)

Penetration 23-08-08 13:54

[PHP] עזרה בMYSQL
 
PHP קוד:

<form action="mysql.php" name="post" method="post">
name:<input type="text" name="name" />
age:<input type="text" name="age" />
<input type="submit" name="submit" value="שלח!" />
<?php
$name
=$_POST['name'];
$age=$_POST['age'];
$submit=$_POST['submit'];
if (
$submit!="") {
$link mysql_connect("localhost","db_username","pass") or die(mysql_error());
mysql_select_db("db_name"$link) or die(mysql_error());
$query "INSERT INTO info (name , age) VALUES  ($name , $age)";
$result mysql_query($query $link);
mysql_close();
}
?>


לא יודע למה זה לא מצליח לי... (אני חדש בPHP אז זאת בטח טעות גדולה חחח...)
זה אמור בעיקרון להוסיף לתוך הטבלא את השם והגיל שהוזנו...

mayden 23-08-08 14:29

כמה דברים:
- תשתמש בפונ' isset
http://www.php.net/isset

- אתה צריך לעשות את החלק הבא:
PHP קוד:

$name=$_POST['name']; 
$age=$_POST['age']; 

רק אחרי שהטופס נשלח. כלומר, רק אחרי:
PHP קוד:

if(isset($_POST['submit'])) { 

(מן הסתם לא? ;))

- לפני שאתה מכניס משהו ולא משנה מה למסד, אתה צריך לבדוק שזה תואם את מה שאתה מחפש. כלומר, אם אתה רוצה שיהיה גיל (ערך מספרי) אתה צריך לבדוק שזה ערך מספרי ולא טקסט. תקרא על הפונקציות הבאות:
http://www.php.net/intval
http://www.php.net/manual/en/function.is-numeric.php
http://www.php.net/function.mysql-real-escape-string (וזה לSQL במיוחד)

ומשהו אחרון, בפקודות SQL להבא על מנת שלא תקבל סתם שגיאות ובסוף לא תידע למה, תעשה `, דוגמא:
PHP קוד:

$query "INSERT INTO info (`name` , `age`) VALUES  ($name , $age)"

בהצלחה!

Penetration 23-08-08 14:40

ציטוט:

נכתב במקור על ידי mayden (פרסם 661897)
כמה דברים:
- תשתמש בפונ' isset
http://www.php.net/isset

- אתה צריך לעשות את החלק הבא:
PHP קוד:

$name=$_POST['name']; 
$age=$_POST['age']; 

רק אחרי שהטופס נשלח. כלומר, רק אחרי:
PHP קוד:

if(isset($_POST['submit'])) { 

(מן הסתם לא? ;))

- לפני שאתה מכניס משהו ולא משנה מה למסד, אתה צריך לבדוק שזה תואם את מה שאתה מחפש. כלומר, אם אתה רוצה שיהיה גיל (ערך מספרי) אתה צריך לבדוק שזה ערך מספרי ולא טקסט. תקרא על הפונקציות הבאות:
http://www.php.net/intval
http://www.php.net/manual/en/function.is-numeric.php
http://www.php.net/function.mysql-real-escape-string (וזה לSQL במיוחד)

ומשהו אחרון, בפקודות SQL להבא על מנת שלא תקבל סתם שגיאות ובסוף לא תידע למה, תעשה `, דוגמא:
PHP קוד:

$query "INSERT INTO info (`name` , `age`) VALUES  ($name , $age)"

בהצלחה!

אחלה תודה רבה! :-)

Daniel 23-08-08 16:49

ציטוט:

נכתב במקור על ידי mayden (פרסם 661897)
כמה דברים:
- תשתמש בפונ' isset
http://www.php.net/isset

- אתה צריך לעשות את החלק הבא:
PHP קוד:

$name=$_POST['name']; 
$age=$_POST['age']; 

רק אחרי שהטופס נשלח. כלומר, רק אחרי:
PHP קוד:

if(isset($_POST['submit'])) { 

(מן הסתם לא? ;))

- לפני שאתה מכניס משהו ולא משנה מה למסד, אתה צריך לבדוק שזה תואם את מה שאתה מחפש. כלומר, אם אתה רוצה שיהיה גיל (ערך מספרי) אתה צריך לבדוק שזה ערך מספרי ולא טקסט. תקרא על הפונקציות הבאות:
http://www.php.net/intval
http://www.php.net/manual/en/function.is-numeric.php
http://www.php.net/function.mysql-real-escape-string (וזה לSQL במיוחד)

ומשהו אחרון, בפקודות SQL להבא על מנת שלא תקבל סתם שגיאות ובסוף לא תידע למה, תעשה `, דוגמא:
PHP קוד:

$query "INSERT INTO info (`name` , `age`) VALUES  ($name , $age)"

בהצלחה!

אני ממש לא תומך בשיטה שלך של "ערך מספרי צריך להכיל רק מספרים"(חוץ מזה שגם השאילתה שנתת לא נכונה, אבל זה סתם היה להדגמה), ב-INSERT זה נכון, אבל צריך לציין - שלדוגמא, ב-SELECT - זה לא תמיד נחוץ. למה אתה עושה את הסינון הזה בדבר שהוא לא INSERT? בשביל העניין, כדי למנוע פריצות. אז מה? אם אפשר להחדיר שם משהו, אפשר להחדיר את זה גם ב-name. משתמשים בזה בדוגמה שציינת - של insert - אבל במקרה של SELECT, אני לא רואה שום סיבה, וחשוב לציין זאת.

יניב, אני רואה שרק התחלת לתכנת - לכן אשמח להצביע לך לכמה דברים.
לא צריכים להשתמש ב-mysql_close() - חוץ במקרים שתעבוד עם יותר ממסד אחד - וזה כבר סיפור אחר. השתמש ב-$link - המשתנה לא נחוץ, אתה יכול גם לוותר עליו

Penetration 24-08-08 11:53

טוב מסתבר שכל מה שהייתי צריך לעשות זה להוסיף גרש:
PHP קוד:

$query "INSERT INTO info (name , age) VALUES  ($name , $age)"

להפוך ל:
PHP קוד:

$query "INSERT INTO info (name , age) VALUES  ('$name' , '$age')"

זה ממש מבאס ישבתי על החרא הזה 5 שעות...
אין איזה תוכנה או משהו שאומרת לך ברגע כתיבת הקוד שמשהו בו לא תקין?..
ודניאל תתחבר כבר למסן אני חייב עזרה שלך בקידוד |כועס| חחחח...


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

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