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.
nospor
20.02.2018, 11:49:47
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.
nospor
20.02.2018, 11:55:20
czyli $tekst do bazy sie wklada a $usr nie?
Daj
var_dump($usr);
die('Test');
przed samym wykonaniem zapytania i pokaz dokladnie co zwraca.
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>
nospor
20.02.2018, 12:02:26
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="">
Bardzo możliwe, tylko dalej nie wiem jak to naprawić
nospor
20.02.2018, 12:03:31
Podalem ci jak to naprawic
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.
viking
20.02.2018, 12:16:55
Na początku wstaw mysqli_report(MYSQLI_REPORT_ALL); Usuń to 0 skoro tam jest AI i po kolei sprawdź wszystkie zmienne.
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?
viking
20.02.2018, 12:30:13
Tak jak wspomniałem, na początku.
http://php.net/manual/pl/mysqli.error.phpA skoro się wstawia to znaczy że jest tam pusty string albo coś innego.
nospor
20.02.2018, 12:32:57
@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
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>
nospor
20.02.2018, 12:54:28
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:
- 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
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ę.
nospor
20.02.2018, 12:59:05
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
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.