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

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

A.M.F 25-10-05 22:38

הוספת ערך של 1 לשדה בטבלה באופן אוטומתי
 
הכנתי ספר אורחים פשוט נורא, ואני רוצה להוסיף לו פאנל ניהול ובשביל זה אני צריך ID שיזהה את התגובות, אז אני צריך כאילו להוסיף בכל פעם 1 לשדה ID בטבלה שבמסד הנתונים.

את השדה ID הגדרתי INT, עשיתי אותו ראשי (מפתח) ואחר עשיתי לו auto_incerment בPHPMYADMIN.

עכשיו זה הקוד שלי בטופס-
קוד:

<input type="hidden" name="id" value="1++" />
וזה מוסיף לו 1 בכל פעם ששולחים את הטופס.

עכשיו, התגובה הראשונה הולכת בסדר גמור, רואים את התוכן שלה והכל, וגם את האיי די שלה עשיתי שיראו, אבל אז שכמנסים לשלוח עוד תגובה זה פשוט לא נשלח. לוחצים עליה והיא לא מופיעה איפה שהיא אמורה להופיע, אז הלכתי לPHPMYADMIN וראיתי בכלל שבטבלה אין יותר מתגובה אחת. כאילו את התגובה השנייה זה בכלל לא הוסיף.
אני חושב שזה איזה בעיה באיך שהגדרתי את ID כי לפני כן זה הלך בסדר גמור.

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

meshuga 25-10-05 22:40

ציטוט:

נכתב במקור על ידי A.M.F
הכנתי ספר אורחים פשוט נורא, ואני רוצה להוסיף לו פאנל ניהול ובשביל זה אני צריך ID שיזהה את התגובות, אז אני צריך כאילו להוסיף בכל פעם 1 לשדה ID בטבלה שבמסד הנתונים.

את השדה ID הגדרתי INT, עשיתי אותו ראשי (מפתח) ואחר עשיתי לו auto_incerment בPHPMYADMIN.

עכשיו זה הקוד שלי בטופס-
קוד:

<input type="hidden" name="id" value="1++" />
וזה מוסיף לו 1 בכל פעם ששולחים את הטופס.

עכשיו, התגובה הראשונה הולכת בסדר גמור, רואים את התוכן שלה והכל, וגם את האיי די שלה עשיתי שיראו, אבל אז שכמנסים לשלוח עוד תגובה זה פשוט לא נשלח. לוחצים עליה והיא לא מופיעה איפה שהיא אמורה להופיע, אז הלכתי לPHPMYADMIN וראיתי בכלל שבטבלה אין יותר מתגובה אחת. כאילו את התגובה השנייה זה בכלל לא הוסיף.
אני חושב שזה איזה בעיה באיך שהגדרתי את ID כי לפני כן זה הלך בסדר גמור.

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

אתה לא צריך לשים ID...במיוחד בגלל שזה auto_incerment שזה אומר,שאם תכניס לטבלה הזאת ערכים כל עוד לא הכנסת ערך לID זה יצור אוטומטי....
השאילתא שלך אמורה להיות ככה:
PHP קוד:

mysql_query("INSERT INTO `commets` (`text`,`title`) VALUES ('$text','$title')"); 


בניה 25-10-05 22:42

בס"ד


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

A.M.F 25-10-05 22:42

הפלא ופלא אתה צודק ^_^
תודה על התגובה המהירה

ולמה אוטו אינסרמנט גרוע?

בניה 25-10-05 22:57

בס"ד

כי נגיד היו לך 5 שורות ומחקת אותם אז עדיין המספר הבא שזה יתן יהיה 6 ולא יתאפס.
רק ריקון טבלה יעזור.
וזה יוצר בעיה אם אתה רוצה למחוק שורה או יותר וזה יוצר חור בID יים

A.M.F 25-10-05 23:03

אז איך אני יכול לעשות את זה בדרך יעילה יותר?

meshuga 25-10-05 23:07

ציטוט:

נכתב במקור על ידי A.M.F
אז איך אני יכול לעשות את זה בדרך יעילה יותר?

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

A.M.F 25-10-05 23:09

אוקיי אם אתה אומר...

בניה 25-10-05 23:24

בס"ד



לא באתי פה להתווכח.
רק לדעתי עדיף לעשות את זה ידני.
פשוט לשלוף את הID הכי גבוה ולהוסיף לו אחד.

A.M.F 25-10-05 23:42

הממ.. יש לי בעיה כשאני מנסה למחוק משהו מהטבלה. יש לי את הקוד הזה-
קוד:

<?php

include "connect.php"; //including the connection

$news = mysql_query ("SELECT * FROM news");
while ($detailes = mysql_fetch_array($news)) {
        echo "כותרת: ".$detailes['title']."<br />";
        echo "איי די: ".$detailes['id']."<br />";
        echo '<a href="'.$_SEREVR['PHP_SELF'].'" id="'.$detailes['id'].'" name="delete_news" />מחיקה</a> <br /><br />';
}

$delete = delete_news;

if (isset($delete)) {
        mysql_query ("DELETE FROM news WHERE id='".$detailes['id']."'");
        echo "העדכון נמחק בהצלחה!";
} else {
        while ($detailes = mysql_fetch_array($news)) {
                echo "כותרת: ".$detailes['title'];
                echo "איי די: ".$detailes['id'];
                echo '<a href="'.$_SEREVR['PHP_SELF'].'" id="'.$detailes['id'].' name="delete_news" />מחיקה</a>';
        }
}

?>

וכשאני נכנס לעמוד ולוחץ על מחיקה, ההודעה של הecho אכן מגיעה, אבל התגובה לא נמחקת.
למה ומדוע?

meshuga 25-10-05 23:44

ציטוט:

נכתב במקור על ידי 2Web בניה
בס"ד



לא באתי פה להתווכח.
רק לדעתי עדיף לעשות את זה ידני.
פשוט לשלוף את הID הכי גבוה ולהוסיף לו אחד.

ואז אתה עושה את זה יותר מסובך זה דבר ראשון,דבר שני זה עוד תווים=עוד ביטים=עוד טעינה לדף עוד מעמס על השרת וכו' וכו'...בסוף יצא לך "משתלם"...לעשות את זה לא ידני

A.M.F 25-10-05 23:48

תחזרו לנושא בבקשה.. יש שאלה חדשה P=

בניה 26-10-05 06:05

בס"ד


לא באתי להתווכח, הצעתי הצעה.
תוסיף אחרי השאילתא שמוחקת
PHP קוד:

or die(mysql_error()) 

ונראה מה הבעיה.

A.M.F 26-10-05 08:07

אז זהו שזה לא אומר שיש בעיה.
אני הבעיה כאן אני חושב היא בחלק הזה-
$delete = delete_news;

וגם בזה-
if (isset($delete))

בניה 26-10-05 08:14

בס"ד


תנסה את השאילתה הזו:
PHP קוד:

DELETE FROM news WHERE id='{$detailes['id']}' 


A.M.F 26-10-05 08:20

זה עדיין לא יעזור כי יש לי שם משתנה לא חוקי...
בכל אופן הוצאתי אותו ועשיתי את הקוד הזה-

PHP קוד:


<html dir="rtl">
<?php

include "connect.php"//including the connection

$news mysql_query ("SELECT * FROM news");
while (
$detailes mysql_fetch_array($news)) {
 echo 
"כותרת: ".$detailes['title']."<br />";
 echo 
"איי די: ".$detailes['id']."<br />";
 echo 
'<a href="'.$_SEREVR['PHP_SELF'].'?id='.$detailes['id'].'" />מחיקה</a> <br /><br />';
}

$delete $_GET['id'];

if (isset(
$delete)) {
 
mysql_query ("DELETE FROM news WHERE id='".$detailes['id']."'") or die(mysql_error());
 echo 
"העדכון נמחק בהצלחה!";
} else {
 while (
$detailes mysql_fetch_array($news)) {
  echo 
"כותרת: ".$detailes['title'];
  echo 
"איי די: ".$detailes['id'];
  echo 
'<a href="'.$_SEREVR['PHP_SELF'].'" id="'.$detailes['id'].' name="delete_news" />מחיקה</a>';
 }
}

?>

אבל זה עדיין לא עובד..

Butbul 26-10-05 08:25

אבל למה לעשות הכל בקובץ אחד? זה ממש לא נוח וזה אחד הבעיות, יותר מדי דברים בקובץ אחד יותר בעיות והתנגשויות בקוד, אני כבר אעבור על הקוד שלך ואבדוק את הבעיה

אוקי תיקנתי לך את הקוד

תשתמש בזה

PHP קוד:

<html dir="rtl"> 
<?php 

include "connect.php"

$news mysql_query ("SELECT * FROM news"); 
while (
$detailes mysql_fetch_array($news)) { 
echo 
"כותרת: ".$detailes['title']."<br />"
echo 
"איי די: ".$detailes['id']."<br />"
echo 
'<a href="'.$_SEREVR['PHP_SELF'].'?id='.$detailes['id'].'" />מחיקה</a> <br /><br />'


$delete $_GET['id']; 

if (isset(
$delete)) { 
mysql_query("DELETE FROM news WHERE id='".$_GET['id']."'");
echo 
"העדכון נמחק בהצלחה!"
} else { 
while (
$detailes mysql_fetch_array($news)) { 
  echo 
"כותרת: ".$detailes['title']; 
  echo 
"איי די: ".$detailes['id']; 
  echo 
'<a href="'.$_SEREVR['PHP_SELF'].'" id="'.$detailes['id'].' name="delete_news" />מחיקה</a>'



?>


בניה 26-10-05 08:29

בס"ד

רק עכשיו הסתכלתי על כל הקוד.
ולא נראה לי שיש סיבה שהוא יעבוד.
תשנה את הקישור של המחיקה שהוא יוביל אל משו כזה page.php?act=delete&id=1
ואז תעשה שאם $_GET['act'] =delete זה ימחק לפי הID

Butbul 26-10-05 08:43

ציטוט:

נכתב במקור על ידי 2Web בניה
בס"ד

רק עכשיו הסתכלתי על כל הקוד.
ולא נראה לי שיש סיבה שהוא יעבוד.
תשנה את הקישור של המחיקה שהוא יוביל אל משו כזה page.php?act=delete&id=1
ואז תעשה שאם $_GET['act'] =delete זה ימחק לפי הID

כפי שציינתי, לא נוח לעבוד עם דף אחד, בכל זאת, סידרתי לו בכל זאת,

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

בהצלחה.

בניה 26-10-05 08:48

בס"ד


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

A.M.F 26-10-05 08:53

בוטבול תודה רבה זה עבד.

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


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

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