Skocz do zawartości

Prośba o poprawienie kodu dodawania newsów do bazy PHP


adam2350
 Udostępnij

Rekomendowane odpowiedzi

Siemka !

Dlaczego ten kod może mi nie działać jakie popełniam błędy ?

elseif($a == 'save' && isset($_POST['nr'])) { 
    /* odbieramy zmienne z formularza */ 
    $nr = $_POST['nr']; 
    $tytul = trim($_POST['tytul']); 
    $nick = trim($_POST['nick']); 
    $tresc = trim($_POST['tresc']); 
    /* uaktualniamy tabelę test */ 
    if($wynik2 = mysqli_query($polaczenie, "UPDATE `news` SET tytul='$tytul', nick='$nick', tresc='$tresc' WHERE nr='$nr'")){
    echo '<div class="alert alert-dismissible alert-success">
  <p>Poprawnie edytowano Newsa. <b>Nastąpi automatyczne przekierowanie po 2 sekundach.<b></p>
</div>';
header('Refresh: 2; url=index2.php');
Edytowane przez Salvation
Odnośnik do komentarza
Udostępnij na innych stronach

Teraz, Salvation napisał:

Na razie widać tylko otwarcie klamer.

elseif($a == 'save' && isset($_POST['nr'])) { 
    /* odbieramy zmienne z formularza */ 
    $nr = $_POST['nr']; 
    $tytul = trim($_POST['tytul']); 
    $nick = trim($_POST['nick']); 
    $tresc = trim($_POST['tresc']); 
    /* uaktualniamy tabelę test */ 
    if($wynik2 = mysqli_query($polaczenie, "UPDATE `news` SET tytul='$tytul', nick='$nick', tresc='$tresc' WHERE nr='$nr'")){
    echo '<div class="alert alert-dismissible alert-success">
  <p>Poprawnie edytowano Newsa. <b>Nastąpi automatyczne przekierowanie po 2 sekundach.<b></p>
</div>';
header('Refresh: 2; url=index2.php');
}
}
Odnośnik do komentarza
Udostępnij na innych stronach

Teraz, Salvation napisał:

A pokaż całość kodu. Wywołujesz go poprzez AJAXa czy jak? Próbowałeś wywołać te zapytanie w PMA? Wyrzuca jakieś błędy?

Nie ma błędów ale jest biała strona 

<?php

$polaczenie = new mysqli($host, $login, $haslo, $baza); if (mysqli_connect_error()){ die ("<div class=alert alert-dismissible alert-danger><strong><i class=fa fa-exclamation-triangle></i> BŁĄD:</strong> Nie można nawiązać połaczenia z bazą MYSQL. Najprawdopodobniej złe dane <br> Dane: <br> Host: {$host} .<br> Login:  {$login}. <br> Hasło: {$haslo}.</div>"); } if($_REQUEST[a] == edit and !empty($_GET[nr])){
$a = trim($_REQUEST[a]); 
$nr = trim($_GET[nr]); if($a == edit and !empty($nr)) { /* zapytanie do tabeli */ if($wynik = mysqli_query($polaczenie, "SELECT * FROM `news` WHERE 
nr=$nr")){ /*  
     wyświetlamy wyniki, sprawdzamy, 
     czy zapytanie zwróciło wartość większą od 0 
     */ } if(mysqli_num_rows($wynik) > 0) { /* odczytujemy zawartość wiersza z tabeli */ 
        $r = mysqli_fetch_assoc($wynik); 
		
        echo <form action="edytuj.php" method="POST" class="form-horizontal" require>
        <input type="hidden" name="a" value="save" /> 
        <input type="hidden" name="nr" value=".$nr." /> 
				
				<div class="form-group">
							<label for="inputEmail" class="col-lg-2 control-label">Tytuł</label>
							<div class="col-lg-10">
								<input type="text" class="form-control"  value=".$r[tytul]." name="tytul" placeholder="Proszę podać Tytuł." required />
							</div>
						</div>
						<div class="form-group">
							<label for="inputEmail" class="col-lg-2 control-label">Nick:</label>
							<div class="col-lg-10">
								<input type="text" class="form-control" value=".$r[nick]." name="nick"  placeholder="Proszę podać Autora." required />
							</div>
						</div>
						<div class="form-group">
							<label for="textArea" class="col-lg-2 control-label">Treść</label>
							<div class="col-lg-10">
						<textarea class="form-control" rows="3"  name="tresc" placeholder="Prosze podać Treść Newsa Pamiętaj by dawać <br> przy Eneter bo inaczej strona się rozjedzie. Możesz używać wszytskich znaczników HTML" required />.$r[tresc].</textarea>
							</div>
						</div>
						<div class="form-group">
							<div class="col-lg-10 col-lg-offset-2">
								<button type="submit" name="submit" class="btn btn-success">Popraw</button>
							</div>
						</div>
					</form><br>; } }

elseif($a == save && isset($_POST[nr])){ /* odbieramy zmienne z formularza */ 
    $nr = $_POST[nr]; 
    $tytul = trim($_POST[tytul]); 
    $nick = trim($_POST[nick]); 
    $tresc = trim($_POST[tresc]); /* uaktualniamy tabelę test */ if($wynik2 = mysqli_query($polaczenie, "UPDATE `news` SET tytul=$tytul, nick=$nick, tresc=$tresc WHERE nr=$nr")){
    echo <div class="alert alert-dismissible alert-success">
  <p>Poprawnie edytowano Newsa. <b>Nastąpi automatyczne przekierowanie po 2 sekundach.<b></p>
</div>;
header(Refresh: 2; url=index2.php); } } }
mysqli_close($polaczenie);		
ob_end_flush(); ?>

PHP Syntax Check: Parse error: syntax error, unexpected elseif (T_ELSEIF) in your code on line 2

  • elseif($a == save && isset($_POST[nr])){
Odnośnik do komentarza
Udostępnij na innych stronach

  • Ekspert

Sprawdź to:

Spoiler

<?php
	ob_start();
	
	$polaczenie = new mysqli($host, $login, $haslo, $baza);
	if(mysqli_connect_error()) {
		die('
			<div class="alert alert-dismissible alert-danger">
				<strong><i class="fa fa-exclamation-triangle"></i> BŁĄD:</strong>
				Nie można nawiązać połaczenia z bazą MYSQL. Najprawdopodobniej złe dane<br>
				<br>
				Host: {$host}.<br>
				Login:  {$login}.<br>
				Hasło: {$haslo}.
			</div>
		');
	}
	
	
	$a = isset($_REQUEST['a'])? trim($_REQUEST['a']) : NULL;
	$nr = isset($_GET['nr'])? trim($_GET['nr']) : NULL;
	
	if($a == 'save' AND !is_null($nr = isset($_POST['nr'])? trim($_POST['nr']) : NULL)) {

		/* odbieramy zmienne z formularza */
		$tytul = trim($_POST['tytul']);
		$nick = trim($_POST['nick']);
		$tresc = trim($_POST['tresc']);

		/* uaktualniamy tabelę test */
		if($wynik2 = mysqli_query($polaczenie, "UPDATE `news` SET tytul = '{$tytul}', nick = '{$nick}', tresc = '{$tresc}' WHERE nr = '{$nr}'")) {
			echo '<div class="alert alert-dismissible alert-success">
				<p>Poprawnie edytowano Newsa. <b>Nastąpi automatyczne przekierowanie po 2 sekundach.</b></p>
			</div>';
			header('Refresh:2; url=index2.php');
		}
		else {
			echo 'Błąd zapytania!';
		}
	}
	
	if($a == 'edit' AND !is_null($nr)) {

		/* zapytanie do tabeli */
		if($wynik = mysqli_query($polaczenie, "SELECT * FROM `news` WHERE nr = '{$nr}'")){ 

			/*
			 *	wyświetlamy wyniki,
			 *	sprawdzamy czy zapytanie zwróciło wartość większą od 0
			 */
		
			if(mysqli_num_rows($wynik) > 0) {

				/* odczytujemy zawartość wiersza z tabeli */
				$r = mysqli_fetch_assoc($wynik);
				
				echo '<form action="'. $_SERVER['PHP_SELF'] .'" method="POST" class="form-horizontal" require>
					<input type="hidden" name="a" value="save" />
					<input type="hidden" name="nr" value="'. $nr .'" />
					<div class="form-group">
						<label for="inputEmail" class="col-lg-2 control-label">Tytuł</label>
						<div class="col-lg-10">
							<input type="text" class="form-control"  value="'. $r['tytul'] .'" name="tytul" placeholder="Proszę podać Tytuł." required />
						</div>
					</div>
					<div class="form-group">
						<label for="inputEmail" class="col-lg-2 control-label">Nick:</label>
						<div class="col-lg-10">
							<input type="text" class="form-control" value="'. $r['nick'] .'" name="nick"  placeholder="Proszę podać Autora." required />
						</div>
					</div>
					<div class="form-group">
						<label for="textArea" class="col-lg-2 control-label">Treść</label>
						<div class="col-lg-10">
							<textarea class="form-control" rows="3"  name="tresc" placeholder="Prosze podać Treść Newsa Pamiętaj by dawać <br> przy Eneter bo inaczej strona się rozjedzie. Możesz używać wszytskich znaczników HTML" required />'. $r['tresc'] .'</textarea>
						</div>
					</div>
					<div class="form-group">
						<div class="col-lg-10 col-lg-offset-2">
							<button type="submit" name="submit" class="btn btn-success">Popraw</button>
						</div>
					</div>
				</form>
				<br>';
			}
		}
	}

	mysqli_close($polaczenie);	
	ob_end_flush();

 

Nie wiem czy to Ty już miałeś ten problem, czy ktoś inny. Lepiej nie robić identycznych kluczy w tablicach $_GET i $_POST

Odnośnik do komentarza
Udostępnij na innych stronach

14 godzin temu, Salvation napisał:

Sprawdź to:

  Pokaż ukrytą zawartość


<?php
	ob_start();
	
	$polaczenie = new mysqli($host, $login, $haslo, $baza);
	if(mysqli_connect_error()) {
		die('
			<div class="alert alert-dismissible alert-danger">
				<strong><i class="fa fa-exclamation-triangle"></i> BŁĄD:</strong>
				Nie można nawiązać połaczenia z bazą MYSQL. Najprawdopodobniej złe dane<br>
				<br>
				Host: {$host}.<br>
				Login:  {$login}.<br>
				Hasło: {$haslo}.
			</div>
		');
	}
	
	
	$a = isset($_REQUEST['a'])? trim($_REQUEST['a']) : NULL;
	$nr = isset($_GET['nr'])? trim($_GET['nr']) : NULL;
	
	if($a == 'save' AND !is_null($nr = isset($_POST['nr'])? trim($_POST['nr']) : NULL)) {

		/* odbieramy zmienne z formularza */
		$tytul = trim($_POST['tytul']);
		$nick = trim($_POST['nick']);
		$tresc = trim($_POST['tresc']);

		/* uaktualniamy tabelę test */
		if($wynik2 = mysqli_query($polaczenie, "UPDATE `news` SET tytul = '{$tytul}', nick = '{$nick}', tresc = '{$tresc}' WHERE nr = '{$nr}'")) {
			echo '<div class="alert alert-dismissible alert-success">
				<p>Poprawnie edytowano Newsa. <b>Nastąpi automatyczne przekierowanie po 2 sekundach.</b></p>
			</div>';
			header('Refresh:2; url=index2.php');
		}
		else {
			echo 'Błąd zapytania!';
		}
	}
	
	if($a == 'edit' AND !is_null($nr)) {

		/* zapytanie do tabeli */
		if($wynik = mysqli_query($polaczenie, "SELECT * FROM `news` WHERE nr = '{$nr}'")){ 

			/*
			 *	wyświetlamy wyniki,
			 *	sprawdzamy czy zapytanie zwróciło wartość większą od 0
			 */
		
			if(mysqli_num_rows($wynik) > 0) {

				/* odczytujemy zawartość wiersza z tabeli */
				$r = mysqli_fetch_assoc($wynik);
				
				echo '<form action="'. $_SERVER['PHP_SELF'] .'" method="POST" class="form-horizontal" require>
					<input type="hidden" name="a" value="save" />
					<input type="hidden" name="nr" value="'. $nr .'" />
					<div class="form-group">
						<label for="inputEmail" class="col-lg-2 control-label">Tytuł</label>
						<div class="col-lg-10">
							<input type="text" class="form-control"  value="'. $r['tytul'] .'" name="tytul" placeholder="Proszę podać Tytuł." required />
						</div>
					</div>
					<div class="form-group">
						<label for="inputEmail" class="col-lg-2 control-label">Nick:</label>
						<div class="col-lg-10">
							<input type="text" class="form-control" value="'. $r['nick'] .'" name="nick"  placeholder="Proszę podać Autora." required />
						</div>
					</div>
					<div class="form-group">
						<label for="textArea" class="col-lg-2 control-label">Treść</label>
						<div class="col-lg-10">
							<textarea class="form-control" rows="3"  name="tresc" placeholder="Prosze podać Treść Newsa Pamiętaj by dawać <br> przy Eneter bo inaczej strona się rozjedzie. Możesz używać wszytskich znaczników HTML" required />'. $r['tresc'] .'</textarea>
						</div>
					</div>
					<div class="form-group">
						<div class="col-lg-10 col-lg-offset-2">
							<button type="submit" name="submit" class="btn btn-success">Popraw</button>
						</div>
					</div>
				</form>
				<br>';
			}
		}
	}

	mysqli_close($polaczenie);	
	ob_end_flush();

 

Nie wiem czy to Ty już miałeś ten problem, czy ktoś inny. Lepiej nie robić identycznych kluczy w tablicach $_GET i $_POST

Zapewne domyślam się że w tym kodzie \/ jest ten sam błąd co był u mnie poprzednio tylko nie mam bladego pojęcia jak go naprawić. 

\/ Cały kod 

Spoiler

<?php
session_start();
$login = $_POST['login'];
$password = $_POST['password'];
require('connect.php');
$mysqli = new mysqli($dbhost, $dblogin, $dbpass, $dbselect);
if (mysqli_connect_error()) {
				die('Blad polaczenia z baza danych');
} else {
				if ($query = mysqli_query($mysqli, "SELECT * FROM `users` WHERE login='$login'")) {
								while ($row = mysqli_fetch_array($query)) {
												
												if ($row) { //jesli login jest poprawny
																if (md5($password) == $row['password']) {
																				$_SESSION['logowanie'] = $login;
																				header("Location: index2.php");
																} else {
																				echo ('<div class="alert alert-dismissible alert-warning">
  <button type="button" class="close" data-dismiss="alert">&times;</button>
  <h4>Błędne Hasło !</h4>
  <p>Podałeś błędne hasło spróbuj Ponownie !</p>
</div>'); //jesli haslo jest bledne
																				include('index.php');
																}
												} else {
																echo ('<div class="alert alert-dismissible alert-info">
  <button type="button" class="close" data-dismiss="alert">&times;</button>
  <strong>Konto nie istnieje !</strong> Podane konto nie istnieje sprawdź dane i spróbuj ponownie. 
</div>'); //jesli konto nie istnieje
																include('index.php');
												}
								}
				}
}
mysqli_close($mysqli);
?>

 

Linijka która nie działa (biała strona)

Spoiler

<?php
[...]
												} else {
																echo ('<div class="alert alert-dismissible alert-info">
  <button type="button" class="close" data-dismiss="alert">&times;</button>
  <strong>Konto nie istnieje !</strong> Podane konto nie istnieje sprawdź dane i spróbuj ponownie. 
</div>'); //jesli konto nie istnieje
																include('index.php');
												}
								}
				}
}
mysqli_close($mysqli);
?>

 

Czy Mógłbym prosić o jakieś wytłumaczenie tego jakie błędy były lub jak to mam naprawiać / jakie błędy ja popełniam.

Odnośnik do komentarza
Udostępnij na innych stronach

@adam2350  zamień while i if($row) na mysqli_num_rows Do tego polecam dać ten warunek na początek:

if($_SERVER['REQUEST_METHOD'] != 'POST') die('Brak dostępu');

Nie sprawdzasz też czy istnieje $_POST['login'] i $_POST['password'

Edytowane przez GeDox
Odnośnik do komentarza
Udostępnij na innych stronach

  • Ekspert
Spoiler

<?php
	session_start();

	require('connect.php');

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

	$connect = new mysqli($dbhost, $dblogin, $dbpass, $dbselect);
	if(mysqli_connect_error()) {
		die('Blad polaczenia z baza danych');
	}
	
	$sql = "SELECT `password` FROM `users` WHERE login = '{$login}'";
	$query = mysqli_query($connect, $sql);
	
	if(mysqli_num_rows($query) > 0) {
		$row = mysqli_fetch_array($query);
		
		if(md5($password) === $row['password']) {
			$_SESSION['logowanie'] = $login;
			header("Location: index2.php");
		}
		else {
			echo '<div class="alert alert-dismissible alert-warning">
				<button type="button" class="close" data-dismiss="alert">&times;</button>
				<h4>Błędne Hasło !</h4>
				<p>Podałeś błędne hasło spróbuj Ponownie !</p>
			</div>'; //jesli haslo jest bledne
			include('index.php');
		}
	}
	else {
		echo '<div class="alert alert-dismissible alert-info">
			<button type="button" class="close" data-dismiss="alert">&times;</button>
			<strong>Konto nie istnieje !</strong> Podane konto nie istnieje sprawdź dane i spróbuj ponownie.
		</div>'; //jesli konto nie istnieje
		include('index.php');
	}

	mysqli_close($connect);

 

Odnośnik do komentarza
Udostępnij na innych stronach

Problem wciąż nierozwiązany? Dodaj swoją odpowiedź

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto. Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
 Udostępnij

×