Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> insert into nie przekazuje wartości zmiennej
ob1
post 20.02.2018, 11:47:44
Post #1





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 20.02.2018

Ostrzeżenie: (0%)
-----


Witam serdecznie.

Mam problem. Z poprzedniej strony jest "zaimportowana" zmienna username poprzez get. Działa to prawidłowo, ponieważ echo pokazuje prawidłową wartość.

Zmienna importowana jest przypisana do usr.

Czego bym nie zrobił, nie działa usr w insert into - wszystko działa, oprócz tego.

Proszę o jakieś wskazówki, bo już nie mam pojęcia co to może być. Oczywiście po usunięciu if !empty($usr) wszelkie dane zostają załadowane do bazy, oprócz $usr.



Go to the top of the page
+Quote Post
nospor
post 20.02.2018, 11:49:47
Post #2





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




Witaj. Na przyszlosc nie wklejaj na zdjecia kodu tylko kod.
Die po query nie ma zadnego sensu.
Wyswietlaj blad zapytania to bedziesz wiedzial czemu zapytanie sie nie wykonuje. Bo zakladam ze to caly rekord ci sie nie wklada a nie tylko zawartosc $usr

przenosze.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ob1
post 20.02.2018, 11:52:40
Post #3





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 20.02.2018

Ostrzeżenie: (0%)
-----


tylko usr - sprawdzalem
Go to the top of the page
+Quote Post
nospor
post 20.02.2018, 11:55:20
Post #4





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




czyli $tekst do bazy sie wklada a $usr nie?
Daj
var_dump($usr);
die('Test');

przed samym wykonaniem zapytania i pokaz dokladnie co zwraca.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ob1
post 20.02.2018, 12:00:27
Post #5





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 20.02.2018

Ostrzeżenie: (0%)
-----


Tak, wchodzi tekst, wchodzi data z now, wchodzi 0 czyli id bo w bazie przy id jest auto_increment.

Nie mam pojęcia co to może być.

Wrzuciłem to co napisałeś przed query i dalej widnieje tylko error "Błąd"

<?php
require_once('cm/connect.php');
$username=trim($_GET['username']);
$usr=$username;
echo $usr;

if (isset($_POST['submit'])) {
if (!empty($usr) && !empty($tekst)) {

$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

if (!$dbc) {
die('Bład przy połączeniu z bazą danych: ' . mysql_error());
}

var_dump($usr);
die('Test');

$query = "INSERT INTO wiadomosci_od_administratora VALUES (0,NOW(),'$usr','$tekst')";

mysqli_query($dbc, $query);


echo '<p class="er">Wiadomość została wysłana</p>';



mysqli_close($dbc);

}
else {
echo '<p class="er">Błąd</p>';
}


}

?>



<div class="zaplecze_inputy_na_czarno">
<p>Wyślij wiadomość do użytkownika <?php echo $usr; ?> 2/2</p>
</div>

<div class="spoz_menu_logowania_usuwanie">
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<div class="spoz_lh">
<div class="zaplecze_textarea_odstep">
<textarea name="tekst" value="<?php if(!empty($tekst)) echo $tekst; ?>"></textarea>
<script>
CKEDITOR.replace( 'tekst' );
</script>
</div>
</div>
<div class="spoz_zaloguj">
<input type="submit" value="Wyślij wiadomość" name="submit" />
</div>
</form>
</div>
Go to the top of the page
+Quote Post
nospor
post 20.02.2018, 12:02:26
Post #6





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




Ewidentnie $usr jest puste. Ty na poczatku wyswietlasz $usr jeszcze przed IFem. Z kody wynika ze do tej akcji raz wchodzisz normalnie z linka a innym razem po wyslaniu formularza. Wniosek: wysylajac formularz nie wysylasz juz w GET username

edit: wlasnie podales kod, ktory potwierdza co napisalem.

nie
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

a:
<form method="post" action="">


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ob1
post 20.02.2018, 12:03:02
Post #7





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 20.02.2018

Ostrzeżenie: (0%)
-----


Bardzo możliwe, tylko dalej nie wiem jak to naprawić
Go to the top of the page
+Quote Post
nospor
post 20.02.2018, 12:03:31
Post #8





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




Podalem ci jak to naprawic


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ob1
post 20.02.2018, 12:08:23
Post #9





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 20.02.2018

Ostrzeżenie: (0%)
-----


zmiana na <form method="post" action=""> nic nie dała. Więc co ma być w action ?

$usr jest wyświetlony przed ifem, aby sprawdzić czy z poprzedniej strony przekazło wartość do username które przeszło do usr. Przekazało, ponieważ usr pokazuje zawartość - tylko informacja do testów.

Siedzę przy tym którąś godzinę i nie mam pojęcia co to jest - więc prosiłbym o pomoc kogoś mądrzejszego.

Ten post edytował ob1 20.02.2018, 12:17:24
Go to the top of the page
+Quote Post
viking
post 20.02.2018, 12:16:55
Post #10





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Na początku wstaw mysqli_report(MYSQLI_REPORT_ALL); Usuń to 0 skoro tam jest AI i po kolei sprawdź wszystkie zmienne.


--------------------
Go to the top of the page
+Quote Post
ob1
post 20.02.2018, 12:23:45
Post #11





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 20.02.2018

Ostrzeżenie: (0%)
-----


Tak jak wspomniałem, wszystko się wstawia do bazy oprócz $usr.

Wszystkie zmienne sprawdzałem.

Gdzie dokładniej mam wstawić mysqli_report(MYSQLI_REPORT_ALL); ?

w <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> jaką wartość ma mieć action?
Go to the top of the page
+Quote Post
viking
post 20.02.2018, 12:30:13
Post #12





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Tak jak wspomniałem, na początku. http://php.net/manual/pl/mysqli.error.php
A skoro się wstawia to znaczy że jest tam pusty string albo coś innego.

Ten post edytował viking 20.02.2018, 12:32:05


--------------------
Go to the top of the page
+Quote Post
nospor
post 20.02.2018, 12:32:57
Post #13





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




@viking z postow wynika ze do wykonania zapytania w ogole nie dochodzi. Dochodzi dopiero gdy wywali warunek na $usr co pokazuje ze $usr jest puste.

@ob1 ja rozumiem, ze $usr ci sie pokazuje przed wyslaniem forma. Po wyslaniu ci znika - w tym problem. W kodzie nie widze bys skadkolwiek pobieral $tekst. Albo wiec pokazujesz nam szczatkowy kod, albo masz ustawione register_globals, ktore w jakis sposob zakloca pobieranie zmiennej $usr po wyslaniu POST.
ALbo wiec pokaz nam caly kod bez filtracji twojej albo wylacz register_globals i zmienne z forma pobieraj z POST


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ob1
post 20.02.2018, 12:47:02
Post #14





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 20.02.2018

Ostrzeżenie: (0%)
-----


Wyciałem tylko czystego htmla a raczej menu, które nie ma tutaj żadnego znaczenia. Przywróciłem kod do momentu, w którym wstawiane jest wszystko oprócz $usr. Insert into wstawia wszystko, i pobiera wszystko oprócz $usr. W momencie stawienia echo $usr nad kodem, pokazuje się prawidłowa wartość. Cały kod

div class="spoz_add_ogl_p">

<?php
require_once('cm/connect.php');
$username=$_GET['username'];
$usr=$username;
echo $usr; // tutaj jest pobierana i wyświetlana wartość

if (isset($_POST['submit'])) {
$username =trim($_GET['username']);
$usr=$username;
$naglowek =trim($_POST['naglowek']);
$tekst =trim($_POST['tekst']);

if (!empty($tekst)) { // usunąłem && !empty($usr) aby wartości dodały się do bazy



$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

if (!$dbc) {
die('Bład przy połączeniu z bazą danych: ' . mysql_error());
}

$query = "INSERT INTO wiadomosci_od_administratora VALUES (0,NOW(),'$usr','$tekst')"

or die("Zapytanie niepoprawne");

mysqli_query($dbc, $query);


echo '<p class="er">Wiadomość została wysłana</p>';

mysqli_close($dbc);

}
else {
echo '<p class="er">Błąd</p>';
}


}

?>



<div class="zaplecze_inputy_na_czarno">
<p>Wyślij wiadomość do użytkownika <?php echo $usr; ?> 2/2</p> [b] // tutaj też pokazuje się wartość usr[/b]
</div>

<div class="spoz_menu_logowania_usuwanie">
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<div class="spoz_lh">
<div class="zaplecze_textarea_odstep">
<textarea name="tekst" value="<?php if(!empty($tekst)) echo $tekst; ?>"></textarea>
<script>
CKEDITOR.replace( 'tekst' );
</script>
</div>
</div>
<div class="spoz_zaloguj">
<input type="submit" value="Wyślij wiadomość" name="submit" />
</div>
</form>
</div>
</div>
</div>
Go to the top of the page
+Quote Post
nospor
post 20.02.2018, 12:54:28
Post #15





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




1) uzywaj bbcode do wstawianego kodu na forum
2) Powielanie tego
$username =trim($_GET['username']);
$usr=$username;
niema najmniejszego sensu

3)
- Odpal stronke z formularzem
- po odpaleniu stronki zmodyfikuj swoj kod i dodaj jeszcze przed jakimkolwiek IF kod:
  1. print_r($_GET);
  2. print_r($_POST);

- wyslij formularz
- pokaz co ci pokazalo na stronie
- pokaz rowniez jak dokladnie wyglada url w przegladarce po wyslaniu formularza

ps:

Prosilem rowniez bys zamienil poczatek forma na
<form method="post" action="">

zachowaj prosze ten kod i nie wracaj do starego


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ob1
post 20.02.2018, 12:57:14
Post #16





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 20.02.2018

Ostrzeżenie: (0%)
-----


Wrzuciłem przed, wynik:

testArray ( [user_id] => 3 [username] => test ) Array ( )

Wszystko ok, takie wartości są w bazie poprzedniej strony, która przekazuje m.in. username, które później staje się usr.

Link z poprzedniej strony: <a href="admpnl_ww_do_uzytkownika_potwierdzenie.php?user_id=' . $row['user_id'] . '&username=' . $row['username']. '">
<img src="acceptimg.png" alt="wyslij"></img></a>

Czyli tak jak wspomniałem, wartość jest przekazywana, co pokazuje echo na stronie docelowej. action zmieniłem na pusty. Dzięki za uwagę.

Ten post edytował ob1 20.02.2018, 12:59:15
Go to the top of the page
+Quote Post
nospor
post 20.02.2018, 12:59:05
Post #17





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




Napisalem ci wyraznie w jakiej kolejnosci co masz zrobic. Nie zrobiles tego bo widze po rezultacie. Ja naprawde po polsku a nie po chinsku to napisalem...

Dodatkowo, zanim zaczniesz kolejna probe czytania ze zrozumieniem, zastosuj sie tez do tego:
<form method="post" action="">

Albo przychodzisz tu po pomoc albo nie. Jesli przychodzisz po pomoc, to stosuj sie prosze do tego co ci pisza. W przeciwnym wypadku to nie ma zadnego sensu


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ob1
post 20.02.2018, 13:21:32
Post #18





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 20.02.2018

Ostrzeżenie: (0%)
-----


Ale który adres po wysłaniu?

ten z pierwszej strony, który kieruje na docelową wygląda tak:

admpnl_ww_do_uzytkownika_potwierdzenie.php?user_id=3&username=test

W globalnych trzeba było zostawić to

$username =trim($_GET['username']);
$usr=$username;
niema najmniejszego sensu

a w form method post action="".

Dzięki za pomoc.

Ten post edytował ob1 20.02.2018, 13:04:31
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 23.04.2024 - 16:47