לא מצליח לעשות את הדבר הכי פשוט בעולם שליפה ועדכון נתונים SQL עם JSCRIPT - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

לא מצליח לעשות את הדבר הכי פשוט בעולם שליפה ועדכון נתונים SQL עם JSCRIPT


furyanaor

Recommended Posts

לא והלך לי, אני רוצה להציג ערך מתוך NUM בטבלה cunter של הSQL שלי

(יש שם רק עמודה אחת בלבד ID=0, ככה שזה אמור להיות ממש פשוט)

את התצוגה דווקא הצלחתי לעשות

רק המקש לא עובד לי, אני רוצה שהכפתור שם יעשה לי +1 לערך המספרי של NUM.

אני צריך את זה בfuntion jscript ...

מה לא בסדר ?!

<html><script>  function update()  {  <?php   mysqli_query($conn, "UPDATE counter SET num=5 WHERE id=0");   mysqli_close($conn);?> }</script><body>
<?php$servername = "mysql.hostinger.co.uk";$username = "41232133_db";$password = "1231321356";$dbname = "12303123_db";
$conn = new mysqli($servername, $username, $password, $dbname);
$sql = "SELECT num FROM counter WHERE id=0";$result = $conn->query($sql);
while($row = $result->fetch_assoc()) { echo "Downloads: <input type='numbers' size=1 value=". $row["num"].">";echo "clickingtest <button onclick='update()'>update</button>"; }
$conn->close();?> </body></html>

קישור לתוכן
שתף באתרים אחרים

יש לך חוסר הבנה של מבנה המערכת

- פונקציית js רצה מקומית אצל המשתמש בדפדפן

- קוד php רץ אצלך בשרת

אתה לא יכול להריץ ישירות php בתוך פונקציית js, אתה צריך שפונקציית ה-js תתקשר עם השרת ותגיד לו להריץ את קוד ה-php

קישור לתוכן
שתף באתרים אחרים

זהו שאני לא באמת מבין בזה, אני מנסה ללמוד על ידי ניסוי וטעייה באמצעות גזרי קוד שאני מוצא ומחר אי שם ברשת.

פה הוא עשה בדיוק את זה:

http://stackoverflow.com/questions/23298974/update-sql-table-with-button-click

אבל לא הצלחתי לממש שם את הרעיון כמו שצריך.

לא משנה, אני אסביר את עצמי קצת יותר לעומק אולי אפשר להסתדר בקלות יתרה -

אני בסך הכל רוצה חלון שמציג את מספר ההורדות לקובץ.

הקישור שעשיתי הוא מאוד מרוכב עם כמה תמונות מתחלפות וסקריפט לניגון ועוד כמה שטויות

לכן חשבתי שאת הפעולה של +1 יהיה קל יותר להדביק להצמיד אליו באמצעות JS.

כרגע העפתי את כל עניין הJS מהקוד הקודם,

כעט הוא מציג את חלון מספר ההורדות הנוכחי שנמשך מהטבלה.

איך אני עושה מקש +1 בצורה הכי פשוטה בעולם??

הקוד שאני צריך זה בעצם (או משהו כזה?!):

"UPDATE counter SET num=$num+1 WHERE id=0"

וזה האתר:

<html>

<body>

<?php

$servername = "32131321";

$username = "3213321";

$password = "12132136";

$dbname = "321321313";

$conn = new mysqli($servername, $username, $password, $dbname);

$sql = "SELECT num FROM counter WHERE id=0";

$result = $conn->query($sql);

while($row = $result->fetch_assoc()) {

echo "Downloads: <input type='numbers' size=1 value=". $row["num"].">";

}

$conn->close();

?>

</body>

</html>

קישור לתוכן
שתף באתרים אחרים

פה הוא עשה בדיוק את זה:

http://stackoverflow.com/questions/23298974/update-sql-table-with-button-click

אבל לא הצלחתי לממש שם את הרעיון כמו שצריך.

נכון, בלינק שהבאת שואל השאלה ניסה בדיוק את מה שניסית, וזה באמת לא עבד לו. לכן הוא שאל את השאלה - וענו לו בדיוק מה שענו לך.

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

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

דוגמה גסה למדי, כדי להבהיר את הרעיון:


<?php
$servername = "32131321";
$username = "3213321";
$password = "12132136";
$dbname = "321321313";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($_GET['up'] == '1'){
mysqli_query($conn, "UPDATE counter SET num = num + 1 WHERE id = 0");
}

$sql = "SELECT num FROM counter WHERE id=0";
$result = $conn->query($sql);

while($row = $result->fetch_assoc()) {
echo "Downloads: <input type='numbers' size=1 value=". $row["num"].">";
}

$conn->close();
?>
<a href="?up=1">add 1</a>

קישור לתוכן
שתף באתרים אחרים

כן לקח לי קצת זמן אבל הסוף הבנתי למה הוא התכוון.

זה בדיוק מה שרציתי. שכללתי והוספתי עמוד נוסף update.php שאליו הפונקציה מתקשרת וזה עובד מצוין.

תודה על העזרה זה לא מובן מאילו!

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

$_POST['num']

הוא פשוט מציב לי 0 במקום את הערך מהטבלה ואז הוא ודפק לי 0+1=1 ודורס את מה שהיה בטלבה.

למה הוא למצליח לייבא את הנתון הנכון?

לא יודע מה נדפק עם הפורום הוא לא נותן לי להעלות את הקוד שלי לפה, הנה update.php בקישור חיצוני מתנצל על אי הנוחות עמכם הסליחה =]

https://drive.google.com/file/d/0Bwj2vfN_VGZMRXRfYWxCMXZ1Rlk/view

קישור לתוכן
שתף באתרים אחרים

למה אתה רוצה להעביר את הערך דרך הPOST? אם הבנתי נכון ואתה בסך הכל רוצה לקדם את הערך בטבלה ב1, אין שום צורך להעביר ערכים לשום מקום, אתה יכול לעשות את זה בתוך הSQL ישר, כמו בדוגמה שהבאתי:


mysqli_query($conn, "UPDATE counter SET num = num + 1 WHERE id = 0");

קישור לתוכן
שתף באתרים אחרים

חחח אתה שואל למה כאילו שאני יודע :D

תודה רבה זה עובד כמצופה ואפילו מצוין !

רק האם יש אפשרות כל שהיא לעדכן בעמוד הקודם את הנתון המוצג בחלונית input מבלי לעשות ריפרש?

(זה שמגיע לפני השיגור לupdate.php)

ודבר אחרון שהוא וודאי קצת מסובך יותר אבל זה רק לשם הלמידה

זה למעשה download counter ולא סתם click counter כמו שזה יצא.

חשבתי ליצור בטבלה עמודה של user ולמלא אותה בנתוני address (או אם זה לא אפשרי אז ip לחלופין).

כך שכשהמקש נלחץ, מתבצע חיפוש IP בטבלת USER ואם אין רשומה, תוסף אחת כזו והקאונטר שלנו יקבל +1.

במידה ויש רשומה אודות user כשזה, הקאונטר יישאר כמו שהוא.

קישור לתוכן
שתף באתרים אחרים

יש דרך לעדכן את העמוד בלי refresh אבל בשביל זה צריך להשתמש בקוד js בתוך הדף.

ה-js צריך לשלוח קריאה לשרת עם מנגנון שנקרא ajax ואז לעדכן את הערך בתוך ה-html, ההמלצה שלי היא להשתמש בספרייה כמו jQuery כדי לפשט את העניינים.

קישור לתוכן
שתף באתרים אחרים

הבנתי את העיקרון,

אני בדיוק הגעתי לאילוץ בשימוש jQuery אם אני אסתדר עם זה אני ארענן את השימוש הישן בJSCRIPT ואלמד איך עושים דבר שכזה :P

בינתיים אני מניח לזה. יותר מעניין הנושא של הIP, אני חושב שזו לא בעיה גדולה מידיי לקחת נתונים מהמשתמש ולהזין אותם בטבלה, לא ?

קישור לתוכן
שתף באתרים אחרים

כן השרת שלך יכול לקרוא את ה-IP ממנו הגיע הבקשה ולהכניס את זה לטבלה, את כתובת ה- אתה לא יכול לקבל. לזהות את המשתמשים בעזרת IP זה לא דרך מקובלת בעולם האמיתי אבל לצרכי לימוד זה יעבוד.

קישור לתוכן
שתף באתרים אחרים

מממ הייתי בטוח שMAC זה מה שעובד בעולם האמיתי אבל אתה אומר שלא ניתן לנטר אותו.

מה כן? אייפי נשמע לי קצת תמוהה.

ובנוגע לקוד, כיצד מושכים את הIP של הקליינט ומאחסנים בתור משתנה בטבלה ? יש לך שורה וחצי בשלוף או שזה סקריפטים עד להודעה חדשה ?<

והתנאי IF שאנחנו מדברים עליו יכול להיעשות כאן באמצעות שימוש פשוט ב JSCRIPT ?

קישור לתוכן
שתף באתרים אחרים

בדרך כלל משתמשים ב-cookies כדי לזהות משתמשים. ip לא משמש לזיהוי כי הוא לא קבוע (אני משתמש במחשב , ה-IP שלי בבית ובמשרד הוא שונה) והוא לא חד ערכי (לכל האנשים במשרד אותו ip חיצוני).

לקרוא ip ב-PHP

$ip = $_SERVER['REMOTE_ADDR'];

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...