Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: insert into nie przekazuje wartości zmiennej
Forum PHP.pl > Forum > Przedszkole
ob1
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
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.
ob1
tylko usr - sprawdzalem
nospor
czyli $tekst do bazy sie wklada a $usr nie?
Daj
var_dump($usr);
die('Test');

przed samym wykonaniem zapytania i pokaz dokladnie co zwraca.
ob1
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
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="">
ob1
Bardzo możliwe, tylko dalej nie wiem jak to naprawić
nospor
Podalem ci jak to naprawic
ob1
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
Na początku wstaw mysqli_report(MYSQLI_REPORT_ALL); Usuń to 0 skoro tam jest AI i po kolei sprawdź wszystkie zmienne.
ob1
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
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.
nospor
@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
ob1
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
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
ob1
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
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
ob1
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.
Invision Power Board © 2001-2024 Invision Power Services, Inc.