• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

nie zidentyfikowane zmiennie (PHP)

VPS Starter Arubacloud
0 głosów
170 wizyt
pytanie zadane 9 lutego 2017 w PHP przez Syl_177 Początkujący (250 p.)

Witam,

Jestem osobą bardzo początkującą wiec proszę o wyrozumiałość. Robię stronę która dodaje news na główną.Kod nie jest skończony. Problem polega na tym, że wyskakuje mi błąd niezidentyfikowane zmiennę ($name, $data, $author, $contain). Nie bardzo wiec czemu tak jest, wiec proszę o pomoc.

<html>
<head>
    <meta charset="utf-8">
    <title>Add news</title>
</head>

<body>
<form method="post" action="">
    Tytuł:<br><input type="text" name="name"><br>
    Data:<br><input type="date" name="data"><br>
    Autor:<br><input type="text" name="author"><br>
    Tresc:<br><textarea name="contain"> </textarea> <br>
    <input type="submit" value="Dodaj" name="add">
</form>

<?php
$name=$_POST['name'];
$data=$_POST['data'];
$author=$_POST['author'];
$contain=$_POST['contain'];

if(isset($_POST))
{
require_once('dbconect.php');
$mysql = new mysqli($host, $db_user, $db_password, $db_name);
if ($mysql->connect_errno) {
    echo "Connect Error:" . mysqli_connect_errno();
}
$add_news='INSERT INTO news SET nazwa=$name, ';
$q=query($mysql,$add_news);
}

?>
</body>
</html>

  

3 odpowiedzi

0 głosów
odpowiedź 9 lutego 2017 przez ThePatrykOOO Dyskutant (8,380 p.)

Nie możesz zrobić coś takiego: if(isset($_POST)). I zmienne które przepisujesz muszą się znaleźć w ifie Bo tak on nie ma sensu. Mój kod wygląda tak i nie wywołuje żadnych błędów: 

<html>
<head>
    <meta charset="utf-8">
    <title>Add news</title>
</head>
 
<body>
<form method="post" action="">
    Tytuł:<br><input type="text" name="name"><br>
    Data:<br><input type="date" name="data"><br>
    Autor:<br><input type="text" name="author"><br>
    Tresc:<br><textarea name="contain"> </textarea> <br>
    <input type="submit" value="Dodaj" name="add">
</form>
 
<?php

 
if(isset($_POST['name']))
{
	$name=$_POST['name'];
	$data=$_POST['data'];
	$author=$_POST['author'];
	$contain=$_POST['contain'];
require_once('dbconect.php');
$mysql = new mysqli($host, $db_user, $db_password, $db_name);
if ($mysql->connect_errno) {
    echo "Connect Error:" . mysqli_connect_errno();
}
$add_news='INSERT INTO news SET nazwa=$name, ';
$q=query($mysql,$add_news);
}
 
?>
</body>
</html>

Mam pytanie jeszcze do ciebie skąd uczysz się php?

komentarz 9 lutego 2017 przez hoktaur Pasjonat (22,250 p.)
Mam pytanko czy naprawdę potrzebne jest te duplikowanie zmiennych? nie można się odwoływać do $_POST['name']
komentarz 9 lutego 2017 przez ThePatrykOOO Dyskutant (8,380 p.)
Jak kto woli. Ja wolę sobie je zamienić, według mnie są mniej skąplikowane.
komentarz 9 lutego 2017 przez Syl_177 Początkujący (250 p.)
-Filmiki p. Mirosława,

- Czytam 'PHP i MySQL Tworzenie Stron Vademecum Profesjonalisty wydanie IV.pdf',

-Mam też w domu programistę (od 5lat bodajże), ale dużo pracuje ostatnio i nie zawsze ma na pomoc ;
komentarz 10 lutego 2017 przez Boshi VIP (100,240 p.)
Syl_177 te książki sobie możesz jako podstawkę potraktować pod monitor albo pułapkę na szczury.. szczególnie vademekum bo dobra cegła..
komentarz 10 lutego 2017 przez hoktaur Pasjonat (22,250 p.)
Boshi widzisz nie zgadzam się z tobą odnośnie twojej wypowiedzi że tą książka czy inne źródło jest fajne czy 'bee'. Ja wole przepracować kilka źródeł a następnie sam zdecydować jak będę pisał, bo skąd będziesz wiedział, gdy przeczytasz nawet najlepsze źródło, że jest tak dobre jak nie będziesz miał porównania tylko ślepo patrzał w jednym kierunku?
0 głosów
odpowiedź 10 lutego 2017 przez Syl_177 Początkujący (250 p.)

Witam, 

Tym razem mam problem z sesją. 

Mianowicie mam dwa pilki (log_in.php) i index.php, na samym samej górze skryptu ustawiłam session start (); 

Niestety zmienna sesyjna (error) ustawiona w pliku log_in.php nie wyswietla sie z pilku idex.php. 

log_in.php:

<?php
session_start();

require_once('dbconect.php');
require_once('funkcje.php');

$mysql = new mysqli($host, $db_user, $db_password, $db_name);
if ($mysql->connect_errno != 0) {
    echo "Connect Error:" . mysqli_connect_errno();
} else {

    $login = $_POST['login'];
    $password = $_POST['password'];

    $q = "SELECT * FROM members WHERE login='$login' AND password='$password'";

    $results = query($mysql, $q);

    $number_user = $results->num_rows;

    if ($number_user > 0) {
        $_SESSION['log_in']= true;
        $row = $results->fetch_assoc();
        $_SESSION['id'] = $row['id'];
        $_SESSION['login'] = $row['login'];
        $_SESSION['password'] = $row['password'];

        unset($_SESSION['error']);
        $results->free();
        header('location:dadaj.php');
    }
    else {
       $_SESSION['error']='<div style="color: red">Nieprawdidłowy login lub hasło </div>';
        header('location:index.php');
    }

    $mysql->close();

}

?>

index.php: 

<? session_start();
if (isset ($_SESSION['log_in']) && ($_SESSION['log_in']==true)) {
    header('location:log_in.php');
}
?>
<html>
<meta charset="utf-8">
<title>NEW NEWS</title>
<head>
    <h1>Najnowsze informacje z kraju </h1>
    <link rel="stylesheet" href="style.css" type="text/css">
</head>
<body>
<h2>Zaloguj się aby dodać news</h2>
<div class="form">
<form action="log_in.php" method="post">
   Login:<br> <input type="text" name="login"><br>
   Hasło:<br> <input type="password" name="password"><br>
    <input type="submit" value="Zaloguj" name="new_news">
</form>
    <?php
    if (isset($_SESSION['error'])) {
    echo  $_SESSION['error']; }
    ?>
</div>
<div style="clear: both"></div>

<?php
include_once('dbconect.php');
include ('funkcje.php');
$mysql = new mysqli($host, $db_user, $db_password, $db_name);
if ($mysql->connect_errno) {
    echo "Connect Error:" . mysqli_connect_errno();
}

$query = 'SELECT * FROM new_news ORDER BY id';
$results = query($mysql, $query);
$results = $results->fetch_all(MYSQLI_ASSOC);

foreach($results as $result) {
    ?>
   <div class="news">
       <h2><?php echo $result['nazwa'] ?></h2>
       <div class="author"><?php echo $result['autor']?></div>
       <div class="content">
           <?php echo $result['tresc'] ?>
       </div>
   </div>
<?php
}
?>


</body>
</html>

Nie bardzo wiem czemu, dlatego proszę o pomoc. 

komentarz 10 lutego 2017 przez hoktaur Pasjonat (22,250 p.)
weź za

session_start();

daj

var_dump($_SESSION)

a zrobi się jaśniej
–1 głos
odpowiedź 9 lutego 2017 przez hoktaur Pasjonat (22,250 p.)
edycja 9 lutego 2017 przez hoktaur

W linii:

$add_news='INSERT INTO news SET nazwa=$name, ';

brakuje ci ciapek oraz nie powinno być przecinka jak nie ma innych danych

$add_news='INSERT INTO news SET nazwa=\'$name\' ';

 

 

komentarz 9 lutego 2017 przez Syl_177 Początkujący (250 p.)

Czy tak jest poprawnie

$add_news="INSERT INTO news SET nazwa='$name', data='$data', autor='$author',tresc='$contain'";

?

komentarz 9 lutego 2017 przez hoktaur Pasjonat (22,250 p.)

Niezupełnie, pamiętaj, że apostrof lub cudzysłów jest znakiem specjalnym i jeżeli chcesz go dodać do zapytania musisz przed nim dodać '\' czyli:

$add_news="INSERT INTO news SET nazwa=\'$name\', data=\'$data\', autor=\'$author\',tresc=\'$contain\'";

 

komentarz 9 lutego 2017 przez Syl_177 Początkujący (250 p.)
ok dzięki za pomoc :)
komentarz 10 lutego 2017 przez Boshi VIP (100,240 p.)
Co wspólnego ma twoja odpowiedź z problemem autora?
komentarz 10 lutego 2017 przez Syl_177 Początkujący (250 p.)
Jestem autorem problem dotyczy tego samego skryptu. Być może masz rację , lepiej bedzie stworzyć nowe pytanie
komentarz 10 lutego 2017 przez Boshi VIP (100,240 p.)
pisałem do hoktaur.
komentarz 10 lutego 2017 przez Syl_177 Początkujący (250 p.)
oki spoko, odnośnie nauki PHP. Co polecasz w takim razie?
komentarz 10 lutego 2017 przez hoktaur Pasjonat (22,250 p.)

Boshi może bezpośrednio nie jest to odpowiedź na pytanie kolegi aczkolwiek ThePatrykOOO fajnie odpowiedział na pytanie a ja tylko wyprzedziłem następne pytanie zanim padło kolejne co widać na załączony obrazku:

Witam, 

Tym razem mam problem z sesją.....

Podobne pytania

0 głosów
1 odpowiedź 257 wizyt
pytanie zadane 1 kwietnia 2021 w PHP przez niezalogowany
0 głosów
1 odpowiedź 127 wizyt
+1 głos
2 odpowiedzi 3,089 wizyt
pytanie zadane 7 lipca 2017 w PHP przez Spektral Początkujący (410 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...