الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة فى رفع الصورة مع الخبر ........ ارجو الحل وفقكم الله

مغلقمُجاب
بدأه fatmaali في 24 فبراير 2013 · 10 رد · 1,168 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم اخواني الافاضل والله هناك مشكلة لدي وان شاء الله الاقى جلها بين ايديكم باذن الله

 

 

 

عندى سكربت اخباري بسيط جدا مجرد اضافة خبر وتعديل الخبر وصفحة لعرض الاخبار المضافة

 

حقول الخبر

 

اسم الخبر = titel

 

صورة الخبر = pic

 

تفاصيل الخبر =note

 

 

 

اول شي ارفق لكم قاعدة البيانات

 

 

-- 
-- بنية الجدول `news`
-- 

CREATE TABLE `news` (
  `news_id` int(11) NOT NULL auto_increment,
  `titel` varchar(255) default NULL,
  `pic` varchar(255) default 'noimage.jpg',
  `note` longtext,
  PRIMARY KEY  (`news_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1256 AUTO_INCREMENT=47 ;

-- 
-- إرجاع أو إستيراد بيانات الجدول `news`
--

 

صفحة الاتصال الخاصة بالاسكربت config

 

<?
$dbserver="localhost";
$dbuser="root";
$dbpass="root";
$dbname="news";
$connect=mysql_connect($dbserver,$dbuser,$dbpass);
$select=mysql_select_db($dbname,$connect) or die ("åäÇß ÎØÇÁ Ýì ÇáÇÊÕÇá ÈÇáÞÇÚÏÉ ");
mysql_query("set character_set_server='cp1256'");
mysql_query("set names cp1256");
extract($_REQUEST);
?>
 <meta http-equiv=content-type content=text/html;charset=windows-1256>

 

 

 

 

ناتي لصفحة ادخال الخبر بقاعدة البيانات

 

 

<form name=form1 method="POST" action="insert_news.php"  enctype="multipart/form-data">
	<div align="center">
				<input name="titel" size="34" dir="rtl" value="عنوان الخبر" ><p>
      			<input type="file" name="icon" size="13" dir="ltr" ></p>
		<p>
<textarea name=note id=sup rows=8 cols=36>

تفاصيل الخبر

</textarea></div>
									<p align="center">
									<input class="btn" value="اضافــة " type="submit" ></p>
	</p>
</form>

وهذه صفحة  ادخال الحقول بالقاعدة باسم ...

insert_news.php

 

<?
include("config.php");
					$upload_dir = "pic/";
					$upload_url = $url_dir."pic/";
					$temp_name = $_FILES['icon']['tmp_name'];
					$file_name = $_FILES['icon']['name']; 
					$file_name = str_replace("\\","",$file_name);
					$file_name = str_replace("'","",$file_name);
					$ext=strstr($file_name,'.');
					$picu="ideacoder_".$picat.$ext;
					$file_path = $upload_dir.$picu;
					$ext = str_replace(".","",$ext);
					if($ext=='jpg' || $ext=='JPG' || $ext=='gif' || $ext=='GIF' || $ext=='png' || $ext=='PNG' || $ext=='bmp' || $ext=='BMP' )					{
					move_uploaded_file($temp_name, $file_path);
					$picu=$picu;
					$fsize=filesize("$file_path");
					}
$insert="insert into news (titel,picat,note) values ('$titel','$picu','$note')";
$Result=mysql_query($insert);
if($Result)
{
echo"تم الاضافة بنجاح";
}
?>

 

فى هذة الصفحتين ليست هناك اى مشكلة فيقوم برفع الصورة مع الخبر بشكل طبيعي جدا

 

المشكلة تاتى عندما اريد تعديل الخبر فمثلا فى بعض الاحيان تريد تعديل العنوان فقط او التفاصيل فقط او الكل او الصورة فقط

 

عندما اقوم مثلا بتعديل العنوان يعدل بشكل طبيعي لكنه يحذف الصورة التى كنت قد قمت برفعها سابقا

 

ونفس الشيئ لو التفاصيل

 

والحل انى اقوم برفع نفس الصورة مرة اخرى من اجى ان تبقى كما هي

 

ما اريدة هوا الاتى انه اذا قمت بالتعديل ولم اقم بتعديل الصورة  لا يلغى الصورة السابقة تبقى كما هي بدون تغير واذا اردت تعديل عنوان فقط او تفاصيل فقط يعدلهم بدون ما يشيل الصورة القديم

واذا اردت تعديل الصورة فقط يعدلها ايضا بشكل طبيعي وليس كما هوا الحال الان

 

لقد حاولت ان اضع ادارة شرطية تتحق من ان كان الحقل الخاص بالصور فارغ واذا فارغ تحط الصورة القديمه واذا مش فارغ تحط الصورة الجديدة لكن الحقيقه لم اعرف كيف يكون وكيف اكتبة مع هذا الكود ولا يكون هناك مشكلة بالنسبة له ارجو الحل اخواني الافاضل

 

وهذا ملف تعديل الخبر

 

 

editn.php

 

<form name=form1 method="POST" action="update_news.php" enctype="multipart/form-data">
				<input name=news_id value="<?=$news_id;?>">
				<input type="text" name="prod_name2" size="34" dir="rtl"  value="<?=$prod_name2;?>"><p>
      			<input type="file" name="icon" size="20" dir="ltr "></p>
		<p>
<textarea name=note id=sup rows=4 cols=30><?=$note;?></textarea></div>
<input class="btn" value="تعديــــل" type="submit"></p>
</form>

 

وهذه صفحة الابديت الخاصة بتعديل المدخلات داخل القاعدة

 

 

 

<?
include("config.php");
					$upload_dir = "pic/";
					$upload_url = $url_dir."pic/";
					$temp_name = $_FILES['icon']['tmp_name'];
					$file_name = $_FILES['icon']['name']; 
					$file_name = str_replace("\\","",$file_name);
					$file_name = str_replace("'","",$file_name);
					$ext=strstr($file_name,'.');
					$picu="ideacoder_".$picat.$ext;
					$file_path = $upload_dir.$picu;
					$ext = str_replace(".","",$ext);
					if($ext=='jpg' || $ext=='JPG' || $ext=='gif' || $ext=='GIF' || $ext=='png' || $ext=='PNG' || $ext=='bmp' || $ext=='BMP' )					{
					move_uploaded_file($temp_name, $file_path);
					$picu=$picu;
					$fsize=filesize("$file_path");
					}
$update_cat=mysql_query("update news set titel='$titel',note='$note',pic='$picu' where news_id ='$news_id'");
if($update_cat)
{
?>
تم التعديل بنجاح

<?
}
?>

 

طبعا المفروض ارفق لكم صفحة عرض الاخبار والى منها تختار تعديل عشان الصفحة تاخد رقم ايدي الخبر

 

<table border="1" cellpadding="0" cellspacing="3" style="border-collapse: collapse" width="500" bordercolorlight="#FFFFFF" bordercolordark="#FFFFFF" height="65">
		<tr>
			<td align="center" bgcolor="#606060" background="blockbg.png" width="150" height="30">
			<font color="#FFFFFF" face="Tahoma" size="2"><b>تعديل</b></font></td>
			<td align="center" bgcolor="#606060" background="blockbg.png" height="30">
			<b>
			<font color="#FFFFFF" face="Tahoma" size="2"><span lang="ar-sa">
			اسم المشرف</span></font></b></td>
		</tr>
		<tr>
		<?
		include("config.php");
		$select="select * from news where news_id>=1";
		$Result=mysql_query($select);
		while($Row=mysql_fetch_array($Result))
		{
		extract($Row);
		?>
		
		
		
		
		
			<td align="center" bgcolor="#F7F7F7" width="150"><b><a href="editn.php?news_id=<?=$news_id;?>">
		تعديل</a></b></td>
			<td align="center" bgcolor="#F7F7F7" width="228">
			<font color="#606060"><?=$titel;?></font></td>
			</tr>
			<?
			}
			?>

 

انتظر الحل ارجوكم

#2

18 مشاهدة ولا رد :( :(

#3

وعليكم السلام

اكبر مشكلة في السكربت بشكل عام هي اسماء المتغيرات و الاخطاء الاملائية , كمثال كلمة title التي تقومين بكتابتها titel و الحقل pic في بعض الصفحات اضافة الى العدد الكبير من المتغيرات التي لا فائدة منها فمثلا ً

$upload_dir = "pic/";
					$upload_url = $url_dir."pic/";
					$temp_name = $_FILES['icon']['tmp_name'];
					$file_name = $_FILES['icon']['name']; 
					$file_name = str_replace("\\","",$file_name);
					$file_name = str_replace("'","",$file_name);
					$ext=strstr($file_name,'.');
					$picu="ideacoder_".$picat.$ext;
					$file_path = $upload_dir.$picu;
					$ext = str_replace(".","",$ext);

ويمكن اختصارها بسطر وحيد اما بالنسبة الى الحاجة الى رفع الصورة عند كل تعديل يمكنكي ازالة pic من السطر التالي وتكون قد حُلت المشكلة باذن الله

 

$update_cat=mysql_query("update news set titel='$titel',note='$note',pic='$picu' where news_id ='$news_id'");

بشكل عام يمكن تعديل السكربت لكي يصبح كالتالي :

قاعدة البيانات :

-- 
-- بنية الجدول `news`
-- 

CREATE TABLE `news` (
  `news_id` int(11) NOT NULL auto_increment,
  `title` varchar(255) default NULL,
  `pic` varchar(255) default 'noimage.jpg',
  `note` longtext,
  PRIMARY KEY  (`news_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1256 AUTO_INCREMENT=47 ;

-- 
-- إرجاع أو إستيراد بيانات الجدول `news`
--

صفحة ادخال الخبر :

<form  method="POST" action="insert_news.php" enctype="multipart/form-data">
    <div align="center">
        <input name="title" size="34" dir="rtl" value="عنوان الخبر" >
        <input type="file" name="icon" dir="ltr">
        <p>
            <textarea name="note" id=sup rows=8 cols=36>
تفاصيل الخبر
            </textarea>
    </div>
    <p align="center">
    <input value="اضافــة " type="submit"></p>
</form>

و كود صفحة insert_news.php

<?php
header('Content-Type: text/html; charset=utf-8');
include("config.php");
echo $_POST['note'];
$upload_dir = "pic/";
$ext = strtolower(str_replace(".", "", $ext));
if ($ext == 'jpg' ||  $ext == 'gif'  || $ext == 'png' ||$ext == 'bmp' )
{
    move_uploaded_file($_FILES['icon']['tmp_name'], $upload_dir ."ideacoder_".$_FILES['icon']['name']);
}
$result = mysql_query("insert into news (title,pic,note) values ('{$_POST['title']}','ideacoder_{$_FILES['icon']['name']}','{$_POST['note']}')");
if ($result)
{
    echo "تم الاضافة بنجاح";
}
?>

editn.php

<form name=form1 method="POST" action="update_news.php" enctype="multipart/form-data">
				<input name=news_id value="<?=$news_id;?>">
				<input type="text" name="prod_name2" size="34" dir="rtl"  value="<?=$prod_name2;?>"><p>
      			<input type="file" name="icon" size="20" dir="ltr "></p>
		<p>
<textarea name=note id=sup rows=4 cols=30><?=$note;?></textarea></div>
<input class="btn" value="تعديــــل" type="submit"></p>
</form>

صفحة الابديت الخاصة بتعديل المدخلات داخل القاعدة

<?php

header('Content-Type: text/html; charset=utf-8');
include("config.php");
$update_cat = mysql_query("update news set title='{$_POST['title']}',note='{$_POST['note']}' where news_id ='{$_POST['news_id']}'");
if ($update_cat) {

    echo 'تم التعديل بنجاح';
}
?>

عرض الاخبار

<?phpheader('Content-Type: text/html; charset=utf-8');?><table border="1" cellpadding="0" cellspacing="3" style="border-collapse: collapse" width="500" bordercolorlight="#FFFFFF" bordercolordark="#FFFFFF" height="65">    <tr>        <td align="center" bgcolor="#606060" background="blockbg.png" width="150" height="30">            <font color="#FFFFFF" face="Tahoma" size="2"><b>تعديل</b></font></td>        <td align="center" bgcolor="#606060" background="blockbg.png" height="30">            <b>                <font color="#FFFFFF" face="Tahoma" size="2"><span lang="ar-sa">                    اسم المشرف</span></font></b></td>    </tr>    <tr>        <?php        include("config.php");        $select = "select * from news where news_id>=1";        $Result = mysql_query($select);        while ($Row = mysql_fetch_array($Result)) {            extract($Row);            ?>            <td align="center" bgcolor="#F7F7F7" width="150"><b><a href="editn.php?news_id=<?= $news_id; ?>&title=<?= $title; ?>&note=<?= $note; ?>">                        تعديل</a></b></td>            <td align="center" bgcolor="#F7F7F7" width="228">                <font color="#606060"><?= $title; ?></font></td>        </tr>        <?php    }    ?>

اتمنى ان تكون قد حُلت المشاكل التي تواجهينها

تم تعديل هذه المشاركة بواسطة Abd Allatif في 25 فبراير 2013 في 11:30

#4

ولا تسلم يدك اخي الفاضل على المجهود فى الرد لكن يمكن لم تفهم قصدي بشكل عام

 

 

المشكلة انني اريد عندما اقوم بالتعديل ..... لو مثلا ما اضفت صورة جديدة تفضل الصورة الى انضافت كما هي

 

وانا ان اضفت صورة جديدة تنضاف عادي

 

يعني لو قمت بالتعديل على اى من الحقول بدون ما ادخل صورة تفضل الصورة القديمة الى رفعتها موجودة

 

اما اذا عدلت الحقول ومن ضمنهم الصورة تتعدل عادي

#5

السلام عليكم

 

على ما أذكر أنك طرحتي نفس المشكلة وتم طرح طرق للحل يمكنكي مراجعت مشاركاتك .

 

عموماً للتحقق من وجود قيمة -أي تم إختيار صورة أم لا- من خلال التحقق من وجود قيمة لاسم حقل الصورة وأنه لا يحمل القيمة الفارغة null كالتالي :

if(isset($_POST['icon']) and $_POST['icon'] != null)
    echo 'يوجد صورة للرفع';
else
    echo 'لا توجد صورة للرفع';

- وأيضاً يمكن التحقق من خلال لغة javaScript قبل أن تتم عملية الإرسال لملف المعالجة .

لاتحسبن العلم ينفع وحده مالم يتوج ربه بخلاق

لا إله إلا أنت سبحانك إني كنت من الظالمين

#6

اخي الفاضل لم تفهم قصدي علاوة على انى فى المشاركات بنفس السؤال لم اجد الاجابه ايضا

فانا اعرف الامر المتعلق بالجافا سكربت بخصوص الزامية ادخال الصورة

 

 

ساشرح الامر كتابتاً وان شاء الله تفهمون قصدي

 

 

الامر كالتالى انى بعد ادخال الخبر

 

عنوان الخبر وصورته وتفاصيلة

 

ارغب الان ان اقوم بالتعديل على الخبر فقمت بتعديل العنوان والتفاصيل ولكني لم ارغب فى تغير الصورة القديمه فركتها كما هي ثم دوست على زر التعديل

 

يكون هناك بالكود علامه شرطية لترى هل هناك صورة جديدة تم رفعها وتقارنها بالموجودة بالقاعدة ان كانت مثلها يقوم بالتعديل ان لم يكن هناك صورة مرفقة جديدة يبقى على الصورة القديمة كما هي

 

 

لقد بحثت عن الامر كثيرا فهوا مهم لانه من غير المعقول ان اضع داله شرطية كل ما اعدل خبر لازم اعدل الصورة وياه ولابد من وجود حقل رفع صورة عند التعديل

 

لكن ما ارغب فيه داله يتم ارفاقها مع كود التعديل تتاكد من ان هناك الصورة ويتم مقارنتها بالتى بالقاعة ان نفسها يتركها كما هي وان تم تغيرها يقوم بتغيرها فقط هوا الامر ليس صعب بالنسبة لكم وموجود فى كل الاسكربتات

#7

السلام عليكم

 

هل جربتي إستخدام الشرط في المشاركة السابقة ووجدتي أنه لا يصلح لعملية التحقق ؟

لاتحسبن العلم ينفع وحده مالم يتوج ربه بخلاق

لا إله إلا أنت سبحانك إني كنت من الظالمين

#8

نعم اخي الفاضل لم يفي بالغرض لكن وجدت كود بعد عناء البحث يمكن ان يفي بالغرض لكنه لم يعمل بكل حال من الاحوال لااعرف لماذا

 

 

هذا ها الكود ارجو  تصحيحة او اعلامي اين خطاءة

 

 

<?
include("config.php");
if($icon<>"")
{
		$picat=time();
					$upload_dir = "../pic/";
					$upload_url = $url_dir."../pic/";
					$temp_name = $_FILES['icon']['tmp_name'];
					$file_name = $_FILES['icon']['name']; 
					$file_name = str_replace("\\","",$file_name);
					$file_name = str_replace("'","",$file_name);
					$ext=strstr($file_name,'.');
					$picu="ideacoder_".$picat.$ext;
					$file_path = $upload_dir.$picu;
					$ext = str_replace(".","",$ext);
					if($ext=='jpg' || $ext=='JPG' || $ext=='gif' || $ext=='GIF' || $ext=='png' || $ext=='PNG' || $ext=='bmp' || $ext=='BMP' )					{
					move_uploaded_file($temp_name, $file_path);
					$picu=$picu;
					$fsize=filesize("$file_path");
					}

$update="update news set  prod_name2='$prod_name2',catid='$catid',id_block='$id_block',note='$note',picat='$picu' where prod_id ='$prod_id'";

$Result=mysql_query($update);
if($Result)
{
echo"<center><b>تم بنجاح";
}
}
else
{
$update="update news set  prod_name2='$prod_name2',catid='$catid',id_block='$id_block',note='$note' where prod_id ='$prod_id'";

$Result=mysql_query($update);
if($Result)
{
echo"<center><b>تم بنجاح";
}


}
?>
#9 أفضل إجابة

السلام عليكم

 

فعلاً قمت بإعادة تجربة الكود وظهر أنه لا يعمل مع النموذج في حالة تشفير البيانات

enctype="multipart/form-data"

الكود التالي يقوم بالتحقق من وجود صورة أم لا في حالة التشفير لرفع الملفات  :

if($_FILES['icon']['name'] != null)
    echo 'يوجد صورة للرفع';
else
    echo 'لا توجد صورة للرفع';

لاتحسبن العلم ينفع وحده مالم يتوج ربه بخلاق

لا إله إلا أنت سبحانك إني كنت من الظالمين

#10

نعم فعلا اخي الفاضل تم حل المشكل وهذا هوا كود التعديل لكي يستفاد منه من يبحث ايضا عن نفس المشكلة وشاكرة لك سعه صدرك للمشكلة

 

 

 

 

 

<?
include("include/config.php");
if($_FILES['pic']['name'] != null)
{
		$picat=time();
					$upload_dir = "pic/";
					$upload_url = $url_dir."pic/";
					$temp_name = $_FILES['pic']['tmp_name'];
					$file_name = $_FILES['pic']['name']; 
					$file_name = str_replace("\\","",$file_name);
					$file_name = str_replace("'","",$file_name);
					$ext=strstr($file_name,'.');
					$picu="ideacoder_".$picat.$ext;
					$file_path = $upload_dir.$picu;
					$ext = str_replace(".","",$ext);
					if($ext=='jpg' || $ext=='JPG' || $ext=='gif' || $ext=='GIF' || $ext=='png' || $ext=='PNG' || $ext=='bmp' || $ext=='BMP' )					{
					move_uploaded_file($temp_name, $file_path);
					$picu=$picu;
					$fsize=filesize("$file_path");
					}

$update="update news set  titel='$titel',picat='$picu' where news_id='$news_id'";

$Result=mysql_query($update);
if($Result)
{
echo"<center><b>تم بنجاح";
}
}
else
{
$update="update news set titel='$titel' where news_id='$news_id'";

$Result=mysql_query($update);
if($Result)
{
echo"<center><b>تم بنجاح";
}


}
?>
#11

و طريقة اُخرى افضل هي استخدام الدالة is_uploaded_file للتحقق من رفع الملف :

if(is_uploaded_file === true){}else{}

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…