Formularz PHP nie zapisuje poprawnie danych w bazie

Formularz PHP nie zapisuje poprawnie danych w bazie

Wątek przeniesiony 2014-02-13 13:42 z PHP przez dzek69.

0

Witam.

Utworzyłem bazę danych do której zapisuję dane z formularza. Jeśli dane pole wymagane w formularzu nie zostanie wypełnione to wyrzuca błąd i trzeba poprawić dane w formularzu. dodatkowo jest jedno pole (zmienna2), które może być puste ale dodatkowo wyskakuje pytanie (sprawdzam czy wciśnięto button) czy oby na pewno (Jeśli tak to zapisuje w bazie string Nie). Niestety cały czas mi wyrzuca błąd:

Parse error: syntax error, unexpected T_ELSEIF in /home/u408443185/public_html/dodaj.php on line 16

Kod powinien działać następująco:

  1. jeśli któreś z pól zmienna3, zmienna4, zmienna5 jest puste to wyrzuca:
Kopiuj
$image_urlnotok='http://strona.pl/ramka_img/notok.jpg';
 echo '<img src='.$image_urlnotok.' align="middle">';
echo '<a href="http://strona.pl/ramka.html">FORMULARZ</a></p>';

Jeśli wszystkie są wypełnione to

Kopiuj
$image_url='http://strona.pl/ramka_img/ok.jpg';

 //   if($ins) 
    echo '<img src='.$image_url.' align="middle">';
  1. Jeśli te pola nie są puste to sprawdzamy czy zaznaczono checkbox zmienna2
Kopiuj
$image_urlpytanie='http://strona.pl/ramka_img/pytanie.jpg';
 echo '<img src='.$image_urlpytanie.' align="middle">';

dodatkowo button

  1. Jeśli go wciśnięto to zapisujemy do bazy zmienne wraz ze zmienna2="Nie"
Kopiuj
 
<?php 
require("connection.php");
connection();
$zmienna1 = $_POST['zmienna1'];
$zmienna2 = $_POST['zmienna2'];
$zmienna3 = $_POST['zmienna3'];
$zmienna4 = $_POST['zmienna4'];
$zmienna5 = $_POST['zmienna5'];
$zmienna6 = $_POST['zmienna6'];
$zmienna7 = $_POST['zmienna7'];
$data=date("d-m-Y, H:i:s");

    // dodajemy rekord do bazy
if (!empty($_POST['zmienna3']) && !empty($_POST['zmienna4']) && !empty($_POST['zmienna5']))
  {
 elseif (empty($_POST['zmienna2']))
{
$image_urlpytanie='http://strona.pl/ramka_img/pytanie.jpg';
 echo '<img src='.$image_urlpytanie.' align="middle">';

echo '<form method="post">';
echo '<input type="hidden" name="zmienna2" value="NIE"/>';
echo '<button name="dodaj">TAK</button>';
echo '</form>'; 

echo '<br><a href="http://strona.pl/ramka.html">FORMULARZ REJESTRACYJNY</a></p>';

if (isset($_POST['dodaj']))
$ins = @mysql_query("INSERT INTO gosc SET zmienna1='$zmienna1', zmienna2='Nie', zmienna3='$zmienna3', zmienna4='$zmienna4', zmienna5='$zmienna5', zmienna6='$zmienna6', zmienna7='$zmienna7'"); 

}
else
{ 

$ins = @mysql_query("INSERT INTO gosc SET zmienna1='$zmienna1', zmienna2='$zmienna2', zmienna3='$zmienna3', zmienna4='$zmienna4', zmienna5='$zmienna5', zmienna6='$zmienna6', zmienna7='$zmienna7'");  

$image_url='http://strona.pl/ramka_img/ok.jpg';
    echo '<img src='.$image_url.' align="middle">';
}

    else
{
$image_urlnotok='http://strona.pl/ramka_img/notok.jpg';
 echo '<img src='.$image_urlnotok.' align="middle">';
echo '<a href="http://strona.pl/ramka.html">FORMULARZ</a></p>';
}

disconnect;
?>

edytowany 1x, ostatnio: dzek69
dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:dzień
  • Lokalizacja:Rzeszów
0

zamień

Kopiuj
if (!empty($_POST['zmienna3']) && !empty($_POST['zmienna4']) && !empty($_POST['zmienna5']))

na

Kopiuj
if ((!empty($_POST['zmienna3']) && !empty($_POST['zmienna4']) && !empty($_POST['zmienna5']))

PO CO opisujesz tyle nt. tego co robi skrypt, skoro ty masz BŁĄD SKŁADNIOWY.

Jak w ogóle z błędem składniowym można na forum przychodzić......


0

Witam,
Ale z tego co widzę to dodałeś jeden nadmiarowy nawias na początku i to nie jest rozwiązanie mojego problemu. Jak do kodu dodałem to co mi zaproponowałeś to teraz mam błąd:
Parse error: syntax error, unexpected '{' in /home/u408443185/public_html/dodaj.php on line 15

dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:dzień
  • Lokalizacja:Rzeszów
0

To zainstaluj kurde IDE, które Ci wskaże błąd w momencie pisania (czyli JAKIEKOLWIEK IDE) -.-
Ja faktycznie źle wskazałem, ale wczytywałem się w te nawiasy tylko w przeglądarce.

Kodu nie pisze się w notatniku.


0

Tu nie chodzi o błąd składni, a raczej o zasadę użycia if/elseif lub coś podobnego, a nie o jakieś nawiasy.
Czy mogę kogoś prosić o pomoc w temacie?

LU
  • Rejestracja:około 12 lat
  • Ostatnio:ponad 6 lat
  • Postów:127
0

Nie masz nawiasu zamykającego po pierwszym if powinno być:

Kopiuj
if(warunek)
{
kod
}
else if (warunek)
{
kod
}
dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:dzień
  • Lokalizacja:Rzeszów
0

Parse error:

błąd parsowania kodu, nie można w ogóle tego uruchomić, bo coś jest z całym kodem nie tak

syntax error

BŁĄD SKŁADNI

unexpected T_ELSEIF

niespodziewany elseif (czyli elseif pojawia się w zupełnie losowym miejscu, albo coś jest nie tak z nawiasami lub klamrami)

proste? wystarczy przeczytać kod błędu.


0

Witam,

Drogi użytkowniku dzek69 proszę o nie branie w tym temacie już udziału, gdyż Twoje rady są zbyt cenne. Mam nadzieję, że uszanujesz moją prośbę.

Zmodyfikowałem lekko kod, lecz zaznaczona część kodu nie wykonuje się poprawnie (ten warunek się nie wywołuje). Czy mogę prosić o pomoc?

Kopiuj
 
require("connection.php");
connection();
$zm1 = $_POST['zm1'];
$zm2 = $_POST['zm2'];
$zm3 = $_POST['zm3'];
$zm4 = $_POST['zm4'];
$zm5 = $_POST['zm5'];
$zm6 = $_POST['zm6'];
$zm7 = $_POST['zm7'];
$data=date("d-m-Y, H:i:s");

    // dodajemy rekord do bazy
if (!empty($_POST['zm3']) && !empty($_POST['zm4']) && !empty($_POST['zm5']))
{
    if (!empty($_POST['zm2']))
    {
    $ins = @mysql_query("INSERT INTO gosc SET zm1='$zm1',     zm2='$zm2', zm3='$zm3', zm4='$zm4', zm5='$zm5', zm6='$zm6', zm7='$zm7'");  
    $image_url='http://strona.pl/ramka_img/ok.jpg';
    echo '<img src='.$image_url.' align="middle">';
    }
    else
    {   
    $image_urlpytanie='http://strona.pl/ramka_img/pytanie.jpg';
     echo '<img src='.$image_urlpytanie.' align="middle">';
    echo '<form method="post">';
    echo '<input type="hidden" name="zm2" value="Nie"/>';
    echo '<button name="dodaj">TAK</button>';
    echo '</form>'; 
    echo '<br><a href="http://strona.pl/ramka.html">FORMULARZ REJESTRACYJNY</a></p>';
   
============================================ Ten warunek nie chce się wywołać ============================================

 if (isset($_POST['dodaj']))
    $ins = @mysql_query("INSERT INTO gosc SET zm1='$zm1', zm2='$zm2', zm3='$zm3', zm4='$zm4', zm5='$zm5', zm6='$zm6', zm7='$zm7'"); 
        else echo 'nie wcisniety';    
===================================================================================================================

    }
}
else
{
$image_urlnotok='http://strona.pl/ramka_img/notok.jpg';
 echo '<img src='.$image_urlnotok.' align="middle">';
echo '<a href="http://strona.pl/ramka.html">FORMULARZ</a></p>';

}


disconnect;
?>




edytowany 1x, ostatnio: dzek69
Sarrus
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 5 godzin
  • Postów:2512
0

Bo dodaj jest buttonem, który nie wyśle wartości tego co nacisnąłeś. To robią tylko input-y. Czy zamieściłeś cały kod formularza?

0

Witam,
Tak, cały kod zamieściłem tu na stronie. Czy możesz mi podać przykład takiego input-a?
Z góry dziękuję za pomoc.

JU
  • Rejestracja:około 22 lata
  • Ostatnio:około miesiąc
  • Postów:5042
0

A możesz przeczytać pierwszy lepszy przykład użycia formularza w php? Takich przykładów jest mnóstwo. Serio, gdyby to forum miało służyć odpowiedziom na pytania, które można znaleźć w ciągu 3 sekund, to nikt innego by tu nic nie robił. Szanujmy swój czas nawzajem. Widać, że nie wiesz za bardzo czym jest BUTTON, INPUT, SUBMIT i RESET - podstawowe kontrolki formularza. Serio, przeczytaj jakikolwiek podstawowy kurs o formularzach w php. A potem zrób swój. Pamiętaj - ctrl + c, ctrl + v to Twój wróg. Przynajmniej na początku, bo jak już wiesz, co robisz, to potem Ci zaoszczędzi to czasu. A jak dobrze programujesz, to zazwyczaj nie potrzebujesz tej kombinacji ;)

0

Niestety to też nic nie dało :(

Kopiuj
 
require("connection.php");
connection();
$zm1 = $_POST['zm1'];
$zm2 = $_POST['zm2'];
$zm3 = $_POST['zm3'];
$zm4 = $_POST['zm4'];
$zm5 = $_POST['zm5'];
$zm6 = $_POST['zm6'];
$zm7 = $_POST['zm7'];
$data=date("d-m-Y, H:i:s");


echo '<script language="javascript">';
echo 'function dodaj()';
echo '{';
$ins = @mysql_query("INSERT INTO gosc SET INSERT INTO gosc SET zm1='$zm1', zm2='$zm2', zm3='$zm3', zm4='$zm4', zm5='$zm5', zm6='$zm6', zm7='$zm7");
echo '}';
echo '</script>';


    // dodajemy rekord do bazy
if (!empty($_POST['zm3']) && !empty($_POST['zm4']) && !empty($_POST['zm5']))
{
    if (!empty($_POST['zm2']))
    {
    $ins = @mysql_query("INSERT INTO gosc SET zm1='$zm1',     zm2='$zm2', zm3='$zm3', zm4='$zm4', zm5='$zm5', zm6='$zm6', zm7='$zm7'");  
    $image_url='http://strona.pl/ramka_img/ok.jpg';
    echo '<img src='.$image_url.' align="middle">';
    }
    else
    {
    $image_urlpytanie='http://strona.pl/ramka_img/pytanie.jpg';
     echo '<img src='.$image_urlpytanie.' align="middle">';
    echo '<input type="button" name="mybutton" id="mybutton" value="TAK" onclick="dodaj()" />';
    echo '<br><a href="http://strona.pl/ramka.html">FORMULARZ REJESTRACYJNY</a></p>';    
    }
}
else
{
$image_urlnotok='http://strona.pl/ramka_img/notok.jpg';
 echo '<img src='.$image_urlnotok.' align="middle">';
echo '<a href="http://strona.pl/ramka.html">FORMULARZ</a></p>';

}


disconnect;
?>


edytowany 1x, ostatnio: dzek69
dzek69
używaj znaczników <code=php> jak wklejasz kod php i odpowiednie dla innych języków
Sarrus
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 5 godzin
  • Postów:2512
0
Kopiuj
echo 'function dodaj()';
echo '{';
$ins = @mysql_query("INSERT INTO gosc SET INSERT INTO gosc SET zm1='$zm1', zm2='$zm2', zm3='$zm3', zm4='$zm4', zm5='$zm5', zm6='$zm6', zm7='$zm7");
echo '}';
echo '</script>';

O kurde. Na prawdę brakuje Tobie podstaw. Ciężko będzie Tobie pomóc nie pisząc całego kodu za Ciebie. Nawet nie mam siły tłumaczyć dlaczego za to powinieneś dostać bana na komputer przez tydzień i nakaz przeczytania co najmniej jednej książki o tworzeniu stron WWW.
W skrócie:
PHP wykonuje się po stronie SERWERA.
Javascript wykonuje się po stronie KLIENTA (tu: przeglądarka)
Nie ma możliwości aby funkcja javascript dodaj() wykonała zapytanie napisane w PHP.

EDIT:
Zamiast tego buttona daj:

Kopiuj
<input type='submit' value='Dodaj' />

i wywal ten <script>...</script>
Przywróć też <form>...</form> bo go już nie widzę

edytowany 2x, ostatnio: Sarrus
dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:dzień
  • Lokalizacja:Rzeszów
0

@Sarrus: żeby gościu chociaż echo na tym zrobił i udawał, że tak chce zrobić, a tak to echuje pustą zawartość funkcji i nawet w źródło nie łaska zajrzeć, dodatkowo upiera się, że błąd składni to nie jest błąd składni, a za krytykę się obraża, bo przecież jego krytykować nie można. I weź tu takiemu pomóż..

A źródła wiedzy jakieś ma, skoro wstawił <script language="javascript"> - jednocześnie skoro to wstawił to znaczy, że jego źródła wiedzy powstały w 1995 roku chyba...


edytowany 2x, ostatnio: dzek69
0

Witam,
Nie jestem programistą i takowym nawet nie chcę być bo to nudneee. Pomogli mi już w temacie na innym forum i wystarczyło dodać dwie linijki. Teraz wszystkoooo działa :D . Nie będę już używał tego forum bo spotykam się tu tylko z nieżyczliwością i samymi mądrocholami. Miłego dnia.

logout

Shalom
Nikt nie będzie za tobą płakał.
flowCRANE
Widzicie? Nieżyczliwi jesteście!
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)