PHP: ערך שדה בשדה עריכה מוצג באופן חלקי

leftclick

New member
PHP: ערך שדה בשדה עריכה מוצג באופן חלקי

שלום,
רצ"ב קוד ב PHP לשינוי ערך בטבלת MySQL.
הרצת הקוד מעלה הודעת הזהרה ולשונה:
"Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\magar\xxx.php on line 16"
נשגב מבינתי מה פסול במה שכתוב בשורה 16 בקוד ואודה למי שישפוך אור על התעלומה.
בעיה שניה, כל הרצה אמורה למחוק את הטבלה xxx ליצור אותה מחדש ולהוסיף לטבלה הריקה שורה אחת. הרצת הקוד מס. פעמים מוסיפה לטבלה מספר שורות כמס. הפעמים שהקוד הורץ. צא ולמד: הטבלה לא נמחקת ! מדוע ?!
בעיה 3: בשדה העריכה המציג ערך קיים, מוצג הערך הקיים באופן חלקי בלבד: מהתו הראשון עד המרווח הראשון. מדוע לא מוצגת המחרוזת במלואה?
תודה
קוד:
<?php 
	$errors = "";
	$name=''; 
	$db = mysqli_connect('localhost', 'root', 'root4qpines', 'magar');
	IF(!$db)
		DIE('' .MYSQLI_CONNECT_ERROR());
	
	mysqli_query($db, "DROP TABLE IF EXISTS 'xxx';");
	mysqli_query($db, "CREATE TABLE xxx(name VARCHAR(128))");
	mysqli_query($db, "INSERT INTO xxx(name) VALUES('aaa aaa aaa')");

	if (isset($_GET['edit_task']))
	{
		$name = $_GET['edit_task'];
		$edid=mysqli_query($db, "SELECT * FROM xxx WHERE name = $name");
		$row=mysqli_fetch_array($edid);
		$errors = $name;
		echo $errors;
	}
	$stations = mysqli_query($db, "SELECT * FROM xxx");
?>
<!DOCTYPE html>
<html>
<head>
	<link href="[URL]https://fonts.googleapis.com/css?family=Amatic+SC|Assistant|David+Libre|Heebo|Jua|Varela+Round[/URL]" rel="stylesheet">
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
	<style>
	.add_btn
{
	/*height: 39px;*/
	background: #FFF8DC;
	color: #6B8E23;
	border: 2px solid #6B8E23;
	border-radius: 5px;
	/*padding: 5px 20px;*/
}
.btn_td
{
	/*border-left: 1px solid #cbcbcb;	*/
	border-bottom: 1px solid #FFFFFF;
}
	</style>
	
</head>
<body>
	<table>
		<thead>
			<tr>
				
				<th class="name_th" maxlength="50">Name</th>
				<th class="add_th"></th>
				<th class="edit_th"></th>
			</tr>
			<tr>
				<form method="POST" action="xxx.php">
					<td><input type="text" name="name" class="name_input" value=<?php echo htmlspecialchars($name);?>></td>
					<td class="btn_td"><button type="submit" class="add_btn" name="submit">Edit</button></td>
				</form>
			</tr>
			
		</thead>
		<tbody>
			<?php
				while ($row = mysqli_fetch_array($stations))
				{
					echo "<tr>";
					echo "<td class='name_td'>".$row['name']."</td>";
					
					echo "<td class='edit'>
							<a href='xxx.php?edit_task=".$row['name']."'>
								<img src='edit.gif' alt='Smiley face' height='20px' width='20px'>
							</a>
							<span class='tooltiptext'>Edit</span>
						</td>
						</tr>";
				}
			?>								
		</tbody>
	</table>
</body>
</html>

<link/> <style>
.add_btn
{
/*height: 39px;*/
background: #FFF8DC;
color: #6B8E23;
border: 2px solid #6B8E23;
border-radius: 5px;
/*padding: 5px 20px;*/
}
.btn_td
{
/*border-left: 1px solid #cbcbcb; */
border-bottom: 1px solid #FFFFFF;
}
</style>
 

bnayal

New member
יש כמה בעיות בקוד שלך

השגיאה נובעת מזה שהשאילתת SQL פשוט לא נכונה. אם היית מדפיס את השאילתה אולי היית רואה מיד שאין מרכאות סביב הערך של $name.
הבעיות הנוספות:
1. אין הפרדה בין קוד PHP לבין התצוגה של העמוד.
2. כשאתה מקבל פרמטר ישירות מה POST\GET בלי לבדוק ומכניס ישר את התוכן המשתנה לתוך שאילתת SQL אתה פותח עצמך ל SQL Injection, קרא על Prepared Statements.
&nbsp
אני מניח שמה שעשית כאן הוא איזשהו ניסיון לימודי, אבל בכל מקרה ממליץ ללמוד כמו שצריך מההתחלה, על שימוש ב frameworks MVC כלשהם ועבודה נכונה עם מסד נתונים...

&nbsp
בניה
 
למעלה