Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
powtórne wysyłanie zmiennych po odświeżeniu [PHP+HTML]
#1
Witam serdecznie

Pisze dziennik w php i natrafiłem na problem z wysłaniem zmiennej z formularza do dwóch różnych plików w php, jeden z nich jest podany w formularzu <form action="coś.php" method=POST> i z tym plikiem nie ma problemu lecz gdy chcę wysłać zmienną do drugiego pliku powiedzmy coś2.php za pomocą

$_POST['nazwa_zmiennej_z_formularza']=$_SESSION['zmienna_do_coś2.php']

w pliku coś2.php nie udaje mi się jej odczytać.

Proszę o pomoc w wysłaniu tej zmiennej do innego pliku

Z góry dziękuje

ps oprócz wysłania za pomocą sesji próbowałem post i get z tym samym skutkiem
Odpowiedz
#2
POST i GET nie zadziała. Sesja zadziała tylko wtedy jak uruchomisz ją czyli polecenia session_start(); ob_start();

Zawsze możesz podejrzeć zawartość dowolnej zmiennej za pomocą print_r($zmienna); - bardzo ładnie przedstawi Ci zawartość dowolnej zmiennej.
Jak pomogłem daj '+'. To nie boli, a ja mam satysfakcję Smile

Any sufficiently advanced technology is indistinguishable from magic.
Odpowiedz
#3
Kod, kod, kod...
Odpowiedz
#4
Dziękuje za odpowiedź rzeczywiście zapomniałem o ob_start

Mam teraz jeszcze jeden problem otóż chodzi o to że gdy wysyłam formularz to ładnie pięknie dopisuje ocene do bazy danych lecz gdy ktoś zapragnie odświeżyć stronę to dopisuje jeszcze raz co z tym zrobić
Proszę o wytłumaczenie łopatologiczne bo szukałem i nic nie znalazłem

Oto kod

Kod:
<?php
session_start();
ob_start();
if ((isset($_SESSION['user_logged'])&&
$_SESSION['user_logged'] !="")||
(isset($_SESSION['user_password'])&&
$_SESSION['user_password'] !="")) {
$uczen=$_SESSION['pupil'];  
include "login_database.php";  
echo $uczen;

// sprawdzam czy zostały wysłane zmienne z formularza
if (isset($_POST['mark'])&&isset($_POST['subject'])){
$sub=$_POST['subject'];
$mark=$_POST['mark'];
//sprawdzam które pole w bazie jest wolne domyślnie wszystkie sa wypełnione zerami, a w bazie nagłówki to po prostu kolejne liczby od 1 do 30
for ($polnum=1; $polnum<31;){
$markcheck= "select `$polnum` FROM $uczen WHERE przedmiot = \"$sub\" ";
    $show= mysql_query($markcheck);
    while ($check= mysql_fetch_array($show )){
   //echo $check[0];

if ($check[0]!=0)
    {

$polnum++;  

}else{
//gdy jest równe zero czyli puste pole bez oceny wpisuje ocene  
    
    $update="UPDATE `$uczen` SET `$polnum` = $mark where przedmiot = \"$sub\" ";
    $insert= mysql_query($update);
break 2;


    

}}

}}

?>

<?php
$query="SELECT * FROM $uczen";
    $present = mysql_query("$query") or die(mysql_error());
echo "<table border=1>\n";
echo "<tr>\n";

$pola=" SHOW COLUMNS FROM $uczen ";
$list = mysql_query("$pola") or die(mysql_error());
while ($rowsub = mysql_fetch_assoc($list)){
echo "<th>";
echo "<font size=\"2\">";
echo $rowsub['Field'];
echo "</font>";
echo "</th>" ;  
    }

while ($row = mysql_fetch_assoc($present)){

echo "<tr>\n";
foreach($row as $value){
echo "<td>\n";
echo $value;
echo "</td>\n";
}
echo "</tr>\n";
}
echo "</table>\n";    

}

?>
<form action=edit_student.php method=POST >
Wybierz przedmiot:
<select name=subject>
<br >
<option value="" selected> wybierz przedmiot</option>
<br />
<?php
$query="SELECT przedmiot FROM $uczen";
    $present = mysql_query("$query") or die(mysql_error());
while ($row = mysql_fetch_array($present)) {
//echo "{}\n";
//$a="{$row[0]}\n";
echo '<option value="'.$row[0].'">'.$row[0].'</option>'."\r\n";
}
   ?>
</select>
<br />
<select name=mark >
<option value="" selected> wybierz ocene</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="2,5">2,5</option>
<option value="3">3</option>
<option value="3,5">3,5</option>
<option value="4">4</option>
<option value="4,5">4,5</option>
<option value="5">5</option>
<option value="5,5">5,5</option>
<option value="6">6</option>
</select>
<br>
<input type="submit" name="SUBMIT" value="Wybierz">
</form>

Dziękuje z góry za pomoc
Odpowiedz
#5
Google.pl => post/redirect/get
Odpowiedz
#6
Myślałem o tym tylko jak to zrobić bo chodzi o to aby użytkownik mógł dodać kolejną ocenę ale nie dodawała sie ostatnio wybrana opcja po odświeżeniu. O ile sie nie myle to metoda którą mi przesłałeś na to nie pozwala bo na końcu otrzymujemy tylko wynik. Chyba że ze strony wynikowej znowu sie przekierowac na pierwsza czyli ta z mozliwościa dodania danych, ale czy to ma sens?
Odpowiedz
#7
A przeczytałeś choć cokolwiek? Możesz sobie ustawić przekierowanie jak chcesz + ewentualną wiadomość.
Odpowiedz
#8
@Mummer: tak to ma sens. Robisz dwie strony:
1. formularz (action="strona2") $dodano=1;
2. if($dodano==0){dodanie_do_bazy(); $dodano=1;}else {echo "Dodano już do bazy"} i powrót do jeden.

Pisane pseudokodem na szybko ale mam nadzieję, że rozumiesz o co mi chodzi.
Jak pomogłem daj '+'. To nie boli, a ja mam satysfakcję Smile

Any sufficiently advanced technology is indistinguishable from magic.
Odpowiedz


Podobne wątki…
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Jak zrobć POP-UP w html/php i proste pytanko html? MrOMGWTF 7 5,567 01-05-2021, 10:56
Ostatni post: wozniak
  Strona HTML na zaliczenie - dodaj, usuń, edytuj Kurana 1 2,089 01-07-2019, 03:31
Ostatni post: mpire
  [HTML] Filmik zamiast obrazka wyróżniającego kuklaale 1 2,757 02-11-2016, 18:36
Ostatni post: martt4dg
  Problem zm osadzeniem skryptu lighbox w kodzie html gajowy873 2 3,709 24-09-2016, 02:22
Ostatni post: Anatol64
  [CSS][HTML] Ustawienie obrazka z boku strony Witek7777 8 8,476 22-09-2016, 01:05
Ostatni post: pocahontas

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości
Sponsorzy i przyjaciele
SeoHost.pl