Skocz do zawartości
  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

Vast

Przerzucenie zmiennej

Promowane odpowiedzi

Witam, mam zrobiony formularz, zrobiłem pod niego kod php

<?php
try {
  $servername = "localhost";
  $username = "root";
  $password = "test";
  $dbname = "test";

$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);


$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);


$stmt = $conn->prepare("INSERT INTO form (wynajemmiasto, adreswynajmu, zwrotmiasto, adreszwrotu, dataodbioru, czasodbioru, datazwrotu, czaszwrotu)
VALUES (:wynajemmiasto, :adreswynajmu, :zwrotmiasto, :adreszwrotu, :dataodbioru, :czasodbioru, :datazwrotu, :czaszwrotu)");
$stmt->bindParam(':wynajemmiasto', $wynajemmiasto);
$stmt->bindParam(':adreswynajmu', $adreswynajmu);
$stmt->bindParam(':zwrotmiasto', $zwrotmiasto);
$stmt->bindParam(':adreszwrotu', $adreszwrotu);
$stmt->bindParam(':dataodbioru', $dataodbioru);
$stmt->bindParam(':czasodbioru', $czasodbioru);
$stmt->bindParam(':datazwrotu', $datazwrotu);
$stmt->bindParam(':czaszwrotu', $czaszwrotu);



$wynajemmiasto = $_POST['wynajemmiasto'];
$adreswynajmu = $_POST['adreswynajmu'];
$zwrotmiasto = $_POST['zwrotmiasto'];
$adreszwrotu = $_POST['adreszwrotu'];
$dataodbioru = $_POST['dataodbioru'];
$czasodbioru = $_POST['czasodbioru'];
$datazwrotu = $_POST['datazwrotu'];
$czaszwrotu = $_POST['czaszwrotu'];
$stmt->execute();



echo "dodane";
}
catch(PDOException $e)
{
echo "Error: " . $e->getMessage();
}
$conn = null;

echo "<script>
      window.location.href = '/index.php';
    </script>";
?>

Lecz po dłuższym namyśleniu chce zrobić to na pare etapów mianowicie -

 

Na stronie głównej jest formularz który po naciśnięciu przycisku więcej przerzuca nas do strony np. oferta.php i tam wybieramy jeszcze produkt przyciskiem i przenosi nas na ostatnią strone kupno.php gdzie jest formularz z danymi osobowymi i dopiero tam po nacisnieciu przycisku kupuje  zbiera dane z tych 3 stron (Czyli formularza z index.php, konkretny produkt z oferta.php a na samym końcu  formularza z kupno.php)

 

Nie proszę o całkowicie gotowy kod tylko jakieś wskazówki jak to najprościej zrobić.

Edytowane przez Vast

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Robiąc to na sesjach, musiałbym przerzucić te dane do sesji z 1 i 2 strony i potem wywołać je na tej ostatniej czyli 3 stronie i wtedy wszystko wrzucić do bazy danych czy w jaki sposób?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Czyli musiałbym biorąc np żywy przykład zrobić 

 

Aby dodać do sesji pole o name="wynajemmiasto" dobrze rozumiem?

<?php
session_start();
$_SESSION['wynajemmiasto'] = $wynajemmiasto;
?>

 

Czy jako:

<?php
session_start();
$_SESSION['wynajemmiasto'] = $_POST['wynajemmiasto'];
?>

 

A teraz jeśli miałbym już w sesji 1 i 2 strone, jak "wywołać" konkretne zmienne w sesji do strony?

Czy po prostu jak wywołam ten skrypt z początku postu to php automatycznie znajdzie te zmienne w sesji?

Edytowane przez Vast

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Sesja, to zmienna globalna.

 

PHP: session_start - Manual

Niżej znajdziesz przykłady jak wykorzystać sesje w postaci tabeli.

<?php
// We get the instance
$data = Session::getInstance();

// Let's store datas in the session
$data->nickname = 'Someone';
$data->age = 18;

// Let's display datas
printf( '<p>My name is %s and I\'m %d years old.</p>' , $data->nickname , $data->age );

/*
    It will display:

    Array
    (
        [nickname] => Someone
        [age] => 18
    )
*/

printf( '<pre>%s</pre>' , print_r( $_SESSION , TRUE ));

// TRUE
var_dump( isset( $data->nickname ));

// We destroy the session
$data->destroy();

// FALSE
var_dump( isset( $data->nickname ));

 

  • Lubię to! 1

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Dla testu dodałem 

 

<?php
      $wynajemmiasto=$_POST['wynajemmiasto'];
      $_SESSION["wynajemmiasto"]=$wynajemmiasto;
      ?>

i wyskoczył mi błąd 

Notice: Undefined index: wynajemmiasto in C:\xampp\htdocs\include\header.php on line 450

 

 

Może coś źle zrozumiałem zakładam, że zrobiłem jakąś totalną głupotę, ale w php orłem nie jestem a jakoś trzeba zacząć.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Dodaj na sam początek pliku:

<?php
session_start();

 

Poza tym, musisz mieć dane wysłane metodą POST na daną stronę, żeby móc odwołać się do innej zmiennej globalnej:

<?php
$_POST[];

 

  • Lubię to! 1

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Session_start już było więc to nie tego wina. 

 

<form action="oferta.php" method="post">

Post także jest

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  <form action="oferta.php" method="post">
            <div style="float:left;font-weight:bold;">
              <select id="miastowynajem" name="wynajemmiasto" class="miasto" style="width:100%;" onchange="showDiv(this)">
                <option>
                  Gdynia Kwiatowa 13
                </option>
                <option>
                  Gdansk Kwiatowa 13
                </option>
                <option>
                  Wejherowo Kwiatowa 13
                </option>
                <option>
                  Warszawa Kwiatowa 13
                </option>
                <option value="1">
                  Podstawienie pod adres
                </option>
              </select>
              <div id="hidden_div" style="display: none;float:right;">
                <input type="text" class="adres" name="adreswynajmu" placeholder="Podaj Adres (Miasto,Adres,Numer Domu)" />
              </div><br />
              <br />
              <p>
                Miejsce Zwrotu
              </p>
              <div style="float:left;">
                <select id="miastozwrot" name="zwrotmiasto" class="miasto2" style="width:100%" onchange="showDiv2(this)">
                  <option>
                    Gdynia Kwiatowa 13
                  </option>
                  <option>
                    Gdansk Kwiatowa 13
                  </option>
                  <option>
                    Wejherowo Kwiatowa 13
                  </option>
                  <option>
                    Warszawa Kwiatowa 13
                  </option>
                  <option value="1">
                    Własny Adres
                  </option>
                </select>
                <div id="hidden_div2" style="display: none;float:right;">
                   <input type="text" class="adres" name="adreszwrotu" placeholder="Podaj Adres (Miasto,Adres,Numer Domu)" />
                </div><br />
                <br />
                <div style="float:left">
                  <p>
                    Odbiór
                  </p><input type="date" name="dataodbioru" required="required" /> <select id="czas" name="czasodbioru" class="czas">
                    <option value="00:00">
                      00:00
                    </option>
                  </select>
                </div>
                <div style="float:left;margin-left:10px;">
                  <p>
                    Zwrot
                  </p><input type="date" name="datazwrotu" required="required" /> <select id="czas" name="czaszwrotu" class="czas">
                    <option value="00:00">
                      00:00
                    </option>
                  </select>
                </div>
              </div>
            </div>
          </div>
            </div><input type="submit" class="rrezerwacjabottom" value="Rezerwuje!" />
          </form>

Formularz jest włożony w nagłówek więc jest w header.php a na innych stronach osadziłem go include header.php

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

A zrób jeszcze taki myk. Ten błąd występuje na stronie oferta.php ?

To umieść w kodzie, na początku takie coś:

<?php
function debug($array = []) {
  printf('<pre>%s</pre>', print_r($array));
  die();
}

debug($_POST);

I napisz tu co dostajesz.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Rozumiem, że miałem wstawić to do header, jeśli źle to zrozumiałem to mój błąd.

 

kod teraz wyglądał tak (header.php) : 

<?php
function debug($array = []) {
  printf('<pre>%s</pre>', print_r($array));
  die();
}
debug($_POST);
$wynajemmiasto=$_POST['wynajemmiasto'];
$_SESSION["wynajemmiasto"]=$wynajemmiasto;
?>

 

Strona zrobiła się cała biała i widnieje tylko to:

Imgur: The most awesome images on the Internet

 

I w indexie i ofercie i wielu innych podstronach

 

Mogę podrzucić cały index etc. na pw. Trochę zajeła mi cała strona i wolałbym jej nie udostępniać.

Edytowane przez Vast

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Podeślij pliki na PW. Muszę zobaczyć co tam nie gra. Na razie zwraca pustą tablicę POST, to oznacza, że nie przesyłasz w ogóle danych do tego pliku.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Dobra, nie wiem jakim cudem, ale coś pogrzebałem i rozwiązałem polowe problemu - Mianowicie kiedy wejdziemy na pustą stronę - index wyświetli ten błąd bo nie pobiera domyślych ustawień formularza czyli faktycznie jest puste, natomiast kiedy wyślemy formularz i odniesie nas na oferta.php (Tam dałem aby wyświetliło tą zmienną z sesji) faktycznie wyświetla to co miało. Teraz pytanie jak pozbyć się tego komunikatu albo, żeby pobierało domyślne ustawienia?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Najpierw sprawdź czy istnieje taki klucz, a dopiero później przypisz jego wartość.

<?php
$wynajemmiasto = isset($_POST['wynajemmiasto'])? $_POST['wynajemmiasto'] : '';

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Utwórz konto

Utwórz konto. To darmowe i bardzo proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz już konto? Zaloguj się tutaj.

Zaloguj się teraz


×