- Аватара не се рефрешва веднага след ъплоуд, нужен е рефреш
WT форуми -> PHP MySQL ASP.NET -> Аватара не се рефрешва веднага след ъплоуд, нужен е рефреш
Създайте нова тема Напишете отговор 
Автор Съобщение
taxi
Турист
Турист

Регистриран на: 28/08/2008 3:48 pm

Support: 4
Bonus: 8
Мнения: 522
Мнение 14/05/2018 6:41 pm     Аватара не се рефрешва веднага след ъплоуд, нужен е рефреш Отговорете с цитат


Има ли начин, след като кача снимката, да се покаже, без да се налага ръчно да рефрешвам страницата?

PHP code:
<?php
include("../config.php");
if(isset($_SESSION['username']) & ($_SESSION['userid']))
{
$id = $_SESSION["userid"];
$selectimage = "SELECT `image` FROM `users` WHERE `id`='$id' limit 1";
$imgresult = mysqli_query($con, $selectimage);
$findimage = mysqli_fetch_row($imgresult);
?>

<img height="100" width="100" src="<?php echo ($findimage[0]);?>?nocache=<?php echo time(); ?>">

<form enctype="multipart/form-data" action="upload.php" method="POST">
<p>Upload your file</p>
<input type="file" name="uploaded_file"></input><br /><br />
<input type="submit" value="Upload"></input>
</form>

<?PHP
if(!empty($_FILES['uploaded_file']))
{
$path = "images/snimki/";
$name = time() . "" . rand(1,99999) . '.' . basename($_FILES['uploaded_file']['type']);
$image= "images/snimki/$name";
$path = $path . $name;
if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $path)) {
//$query=("UPDATE users set image='".$image."' WHERE id=".$_SESSION['userid']);
$query=("UPDATE users set image='".$image."' WHERE id='".$id."' limit 1");
$result = mysqli_query($con, $query);
//header('Location:index.php#t1');
echo "The file ". basename( $_FILES['uploaded_file']['name']).
" has been uploaded";
} else {
echo "There was an error uploading the file, please try again!";
}
}
}
?>
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
pix3l
Нов
Нов

Регистриран на: 08/10/2016 4:31 pm

Support: 5
Bonus: 10
Мнения: 136
Мнение 14/05/2018 6:58 pm      Отговорете с цитат


Ако не използваш AJAX - не.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
anonimen
Активен
Активен

Регистриран на: 11/06/2012 8:07 pm

Support: 157
Bonus: 313
Мнения: 1443
Мнение 14/05/2018 10:02 pm      Отговорете с цитат


Цитат:
Има ли начин, след като кача снимката, да се покаже, без да се налага ръчно да рефрешвам страницата?


Точно така поставен въпросът, отговорът му е Да. Можеш да презаредиш страницата *автоматично*, а не *ръчно*. Едва ли имаш предвид това, но все пак е възможно решение.

На file input-а му закачаш onchange слушалка, с която submitваш formата:

HTML code:
    <input type="file" name="uploaded_file" onchange="submit_form"></input><br /><br />


Javascript code:
function submit_form(e) {
e.parentNode.submit();
// по-добре дай id на формата и я достъпвай така:
// document.getElementById('form_id') или
// document.forms.namedItem('form_id')
}

https://www.w3schools.com/jsref/coll_doc_forms.asp

По този начин при избор на файл от компютъра, формата автоматично ще се изпрати, т.е. ефектът при потребителя ще е какъвто очакваш.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
taxi
Турист
Турист

Регистриран на: 28/08/2008 3:48 pm

Support: 4
Bonus: 8
Мнения: 522
Мнение 15/05/2018 11:34 am      Отговорете с цитат


Измислих друго решение, тъй като мисълта ми беше, просто да не рефрешвам аз с мишката, а ако кода сам рефрешва страницата, не е проблем. Въпроса е да не го прави постоянно, а само веднъж след ъплоуд за да зареди новата снимка/данни. Беше късно и явно, не съм го обяснил, като хората, съжалявам. В края на крайщата се оправих.

Благодаря Ви за времето.

PHP code:
<?php
include("../config.php");
if(isset($_SESSION['username']) & ($_SESSION['userid']))
{
$id = $_SESSION["userid"];
$selectimage = ("SELECT `image` FROM `users` WHERE `id`='$id' limit 1");
$imgresult = mysqli_query($con, $selectimage);
$findimage = mysqli_fetch_row($imgresult);
?>

<img height="100" width="100" src="<?php echo ($findimage[0]);?>?nocache=<?php echo time(); ?>">

<form enctype="multipart/form-data" action="upload.php" method="POST">
<p>Upload your file</p>
<input type="file" name="uploaded_file"></input><br /><br />
<input type="submit" value="Upload"></input>
</form>

<?PHP
if(!empty($_FILES['uploaded_file']))
{
$path = "images/snimki/";
$name = time() . "" . rand(1,99999) . '.' . basename($_FILES['uploaded_file']['type']);
$image= "images/snimki/$name";
$path = $path . $name;
$refresh = "yes";
if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $path)) {
$query=("UPDATE users set image='".$image."', refresh='".$refresh."' WHERE id='".$id."' limit 1");
$result = mysqli_query($con, $query);
echo "The file ". basename( $_FILES['uploaded_file']['name']).
" has been uploaded";
} else {
echo "There was an error uploading the file, please try again!";
}
}
$refreshsql= ("SELECT `refresh` FROM `users` WHERE `id`='$id' limit 1");
$check_refresh = mysqli_query($con, $refreshsql);
$refreshpage = mysqli_fetch_object($check_refresh);
if($refreshpage->refresh === 'yes'){
$refresh2 = "no";
$query2=("UPDATE users set refresh='".$refresh2."' WHERE id='".$id."' limit 1");
$result2 = mysqli_query($con, $query2);
header("Refresh:0");
}
}
?>
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
anonimen
Активен
Активен

Регистриран на: 11/06/2012 8:07 pm

Support: 157
Bonus: 313
Мнения: 1443
Мнение 15/05/2018 9:58 pm      Отговорете с цитат


Принципно не би трябвало да можеш да пратиш header след като си print-нал нещо.

Само не разбирам защо не рефрешнеш директно след този ред:

if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $path)) {

вместо да правиш заявка до базата за запис на стойност yes, а после нова заявка за проверка на това поле и още една за обновяването му до "no".

Можеш да си спестиш двете излишни операции като извикаш refresh веднага след качването на файла и обновяването на базата, т.е. веднага след това:

PHP code:
$query=("UPDATE users set image='".$image."', refresh='".$refresh."' WHERE id='".$id."' limit 1");

$result = mysqli_query($con, $query);

/// Тук Refresh
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
taxi
Турист
Турист

Регистриран на: 28/08/2008 3:48 pm

Support: 4
Bonus: 8
Мнения: 522
Мнение 16/05/2018 7:18 am      Отговорете с цитат


anonimen написа:


За бога... Бях дал header към същата страницата и не искаше да презареди новата снимка...
Сега сложих рефреш и стана... Благодаря!
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
pix3l
Нов
Нов

Регистриран на: 08/10/2016 4:31 pm

Support: 5
Bonus: 10
Мнения: 136
Мнение 16/05/2018 11:28 am      Отговорете с цитат


Защо с бинарният оператор?

PHP code:

if(isset($_SESSION['username']) & ($_SESSION['userid']))


Това може да ти докара много главоболия...

PHP code:

echo true & 1; // Works
echo true & 2; // Doesn't work as expected


Проверката ти ще работи само ако userid е нечетно число.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
deam0n
Tourist Defender

Регистриран на: 01/10/2005 6:33 pm

Support: 199
Bonus: 951
Мнения: 2967
Мнение 16/05/2018 12:06 pm      Отговорете с цитат


pix3l написа:
Защо с бинарният оператор?

PHP code:

if(isset($_SESSION['username']) & ($_SESSION['userid']))


[/php]

Проверката ти ще работи само ако userid е нечетно число.


Той сигурно е искал да напише && Laughing Laughing
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
pix3l
Нов
Нов

Регистриран на: 08/10/2016 4:31 pm

Support: 5
Bonus: 10
Мнения: 136
Мнение 16/05/2018 12:14 pm      Отговорете с цитат


deam0n написа:

Той сигурно е искал да напише && Laughing Laughing


Предполагам... което ще му докара двойно повече главоболия. Smile
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Покажи мнения от преди:    
Създайте нова тема   Напишете отговор    web-tourist.net Форуми -> PHP MySQL ASP.NET Часовете са според зоната GMT + 2 Часа
Страница 1 от 1


 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети