• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Dwa formy - submit jeden resetuje drugi.

Object Storage Arubacloud
0 głosów
140 wizyt
pytanie zadane 14 września 2020 w PHP przez Lort533 Nowicjusz (160 p.)
zamknięte 15 września 2020 przez Lort533

Witam,
mam pewien problem.

Tworzę forum w PHP, i wszystko działa, ale chciałem dodać możliwość dodawania zdjęć - było to lekko uciążliwe ale się udało... prawie. Po wrzuczeniu zdjęcia wszystko jest jak należy poza formem z tematem i treścią który się resetuje.

Przeszukałem cały internet - żadne sposoby HTML, PHP, JS nie działają.

Ma ktoś jakiś pomysł co zrobić żeby form się nie resetował?

<html>
<?php
    session_start();
    if(!isset($_SESSION['zalogowany']))
    {
        header('Location: login.php');
        exit();
    }
?>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<title>Dodaj post</title>
<script>
function NieCzysc() {
  $('#DodajPost').preventDefault();
}
</script>
</head>
<body>
<form id="DodajZdjecie" enctype="multipart/form-data" action="<?=$_SERVER['PHP_SELF'];?>" method="post" onsubmit="NieCzysc()">
<input type="file" name="file" />
<input type="hidden" name="MAX_FILE_SIZE" value="25000000" />
<input type="submit" name="dodajzdj" value="Dodaj zdjęcie">
</form>
<form id="DodajPost" method="post" action="dodajpostskryptdodawania.php">
<p>Tytuł:<input type="text" name="tytul" id="tytul" value="<?php if($_POST["tresc"] != '') { echo $_POST["tytul"]; } ?>" size=20><br>
Treść:<textarea rows="2" name="tresc" id="tresc" cols="30">
<?php
if($_POST["tresc"] != '')
{
echo $_POST["tresc"];
}
if(isset($_POST["dodajzdj"])){
 if($_FILES['file']['error']!=0){
  echo 'Nastąpił błąd przy wysyłaniu pliku';
 } else {
  if(is_uploaded_file($_FILES['file']['tmp_name'])){
   move_uploaded_file($_FILES['file']['tmp_name'],'zdjecia/'.$_FILES['file']['name']);
   $dane=file_get_contents('zdjecia/'.$_FILES['file']['name']);
   $file=fopen('zdjecia/'.$_FILES['file']['name'],'w');
   fwrite($file,$dane);
   echo(' <img src="zdjecia/' . $_FILES['file']['name'] . '"> ');
  } else {
   echo 'Nastąpił nieznany błąd przy wysyłaniu pliku';
  }
 }
}
?>
</textarea></p>
<input type="submit" value="Dodaj">
<input type="reset" value="Wyczysc">
</form>
</body>
</html>

Z góry dziękuje za każdą pomoc.

komentarz zamknięcia: Udało mi się naprawić kod samemu, i z pomocą kolegi, jego odpowiedzi poniżej C:

1 odpowiedź

0 głosów
odpowiedź 15 września 2020 przez senpai desu Mądrala (5,720 p.)
Hej masz 2 formularze , jeśli robisz submit to strona się przeładowuje i formularz resetuje to normalne zachowanie, wysyłaj jeden formularz zamiast 2 , albo najpierw zapisz post a potem dodaj zdjęcie do posta.
komentarz 15 września 2020 przez Lort533 Nowicjusz (160 p.)
A można to jakoś zamienić w AJAX?
komentarz 15 września 2020 przez senpai desu Mądrala (5,720 p.)
jasne wszystko możesz zamienić na ajax,
przykład:

https://stackoverflow.com/questions/19447435/ajax-upload-image
komentarz 15 września 2020 przez Lort533 Nowicjusz (160 p.)

Oczywiście jak na moje szczęście - ajax restartuje stronę :)

Jest w tym coś nie tak?

<html>
<?php
    session_start();
    if(!isset($_SESSION['zalogowany']))
    {
        header('Location: login.php');
        exit();
    }
?>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<title>Dodaj post</title>
</head>
<body>
<form id="DodajZdjecie" enctype="multipart/form-data" method="post">
<input type="file" name="file" id="DodawanieZdjecia" />
<input type="hidden" name="MAX_FILE_SIZE" value="25000000" />
<input type="submit" name="dodajzdj" value="Dodaj zdjęcie">
</form>
<form id="DodajPost" method="post" action="dodajpostskryptdodawania.php">
<p>Tytuł:<input type="text" name="tytul" id="tytul" value="" size=20><br>
Treść:<textarea rows="2" name="tresc" id="tresc" cols="30">
</textarea></p>
<input type="submit" value="Dodaj">
<input type="reset" value="Wyczysc">
</form>
<script>
$(document).ready(function (e) {
    $('#DodajZdjecie').on('submit',(function(e) {
        var form = $('form')[0];
        var formData = new FormData(form);
        $.ajax({
            type:'POST',
            url: 'dodajzdjecie.php',
            data: formData,
            contentType: false,
            processData: false,
            success:function(data){
                console.log("Pomyślnie dodano plik na serwer!");
                console.log(data);
            },
            error: function(data){
                console.log("Coś poszło nie tak!");
            }
            return false;
        });
    }));
});
</script>
</body>
</html>

dodajzdjecie.php

<?php
 if($_FILES['file']['error']!=0){
  echo 'Nastąpił błąd przy wysyłaniu pliku <a href="dodajpost.php">Powrót</a>';
 } else {
  if(is_uploaded_file($_FILES['file']['tmp_name'])){
   move_uploaded_file($_FILES['file']['tmp_name'],'zdjecia/'.$_FILES['file']['name']);
   $dane=file_get_contents('zdjecia/'.$_FILES['file']['name']);
   $file=fopen('zdjecia/'.$_FILES['file']['name'],'w');
   fwrite($file,$dane);
   echo(' <img src="zdjecia/' . $_FILES['file']['name'] . '"> ');
  } else {
   echo 'Nastąpił nieznany błąd przy wysyłaniu pliku <a href="dodajpost.php">Powrót</a>';
  }
 }
?>

Ja mam wyjątkowego pecha nie wspominając nawet że potrzebuje rozwiązania do jutra, kiedy jestem zmuszony wprowadzić tą zmianę.

komentarz 15 września 2020 przez Lort533 Nowicjusz (160 p.)

SZALEJE NA MAXA!!!11111111111111

Udało się nareszcie, w złym miejscu dałem return false;

Jak komuś potrzebny kod, proszę bardzo:

<html>
<?php
    session_start();
    if(!isset($_SESSION['zalogowany']))
    {
        header('Location: login.php');
        exit();
    }
?>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<title>Dodaj post</title>
</head>
<body>
<form id="DodajZdjecie" enctype="multipart/form-data" method="post">
<input type="file" name="file" id="DodawanieZdjecia" />
<input type="hidden" name="MAX_FILE_SIZE" value="25000000" />
<input type="submit" name="dodajzdj" value="Dodaj zdjęcie">
</form>
<form id="DodajPost" method="post" action="dodajpostskryptdodawania.php">
<p>Tytuł:<input type="text" name="tytul" id="tytul" value="" size=20><br>
Treść:<textarea rows="2" name="tresc" id="tresc" cols="30">
</textarea></p>
<input type="submit" value="Dodaj">
<input type="reset" value="Wyczysc">
</form>
<script>
$(document).ready(function (e) {
    $('#DodajZdjecie').on('submit',(function(e) {
        var form = $('form')[0];
        var formData = new FormData(form);
        $.ajax({
            type:'POST',
            url: 'dodajzdjecie.php',
            data: formData,
            contentType: false,
            processData: false,
            success:function(data){
                console.log("Pomyślnie dodano plik na serwer!");
                console.log(data);
            },
            error: function(data){
                console.log("Coś poszło nie tak!");
            }
        });
        return false;
    }));
});
</script>
</body>
</html>
<?php
 if($_FILES['file']['error']!=0){
  echo 'Nastąpił błąd przy wysyłaniu pliku <a href="dodajpost.php">Powrót</a>';
 } else {
  if(is_uploaded_file($_FILES['file']['tmp_name'])){
   move_uploaded_file($_FILES['file']['tmp_name'],'zdjecia/'.$_FILES['file']['name']);
   $dane=file_get_contents('zdjecia/'.$_FILES['file']['name']);
   $file=fopen('zdjecia/'.$_FILES['file']['name'],'w');
   fwrite($file,$dane);
   echo(' <img src="zdjecia/' . $_FILES['file']['name'] . '"> ');
  } else {
   echo 'Nastąpił nieznany błąd przy wysyłaniu pliku <a href="dodajpost.php">Powrót</a>';
  }
 }
?>

 

Podobne pytania

0 głosów
1 odpowiedź 400 wizyt
0 głosów
1 odpowiedź 180 wizyt
pytanie zadane 14 lutego 2016 w PHP przez TMMT Użytkownik (870 p.)
0 głosów
1 odpowiedź 217 wizyt

92,568 zapytań

141,420 odpowiedzi

319,622 komentarzy

61,954 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...