Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Rekomendowane odpowiedzi

Opublikowano (edytowane)

Witam :)komentarze w kodzie.

$fid  = intval( $_GET['fid'] );   
if( ! isset( $fid ) || $fid < 1 )

{
DODATKOWO +SWITCH, WCZYTANA DODATKOWA ZAWARTOŚĆ BEZ PRZEŁADOWANIA STRONY
JEDNAK JEŻELI DODATKOWO MA BYĆ WYKONANA AKCJA NP EDYTOWANIA NEWSÓW, TO NIE MOGĘ UŻYĆ PONIŻSZEGO KODU, GDYŻ
ON WYKONUJE POLECENIE NP DLA UŻYTKOWNIKÓW A NIE DLA NEWSÓW
<a href='index.php?sid=ustawienia&said=news&fid=".$echo->id."' title='".$echo->user."'>".$echo->user."</a>
	switch ($_GET['said']) 
	{
		case "news":
		include'news.php';
		break;
	}
TU TEKST JEŻELI FID NIE JEST WYKONYWANY
<a href='index.php?sid=ustawienia&fid=".$echo->id."' title='".$echo->user."'>".$echo->user."</a>
PO KLIKNIĘCIU WYKONUJE AKCJE PONIŻEJ
}
elseif( is_numeric( $fid ) )
{
A TU IST WYKONYWANA INSTRUKCJA, JEŻELI FID JEST!
}

Co zrobić by elseif( is_numeric( $fid rozróżniał dwa typy odnośników i wykonał prawidłowe zapytanie dla jednego polecenia a drugie dla drugiego po kliknięciu.

A tak wygląda cały kod:

<?php if(isset($_SESSION['session_user'])) 
{
require_once'config_db.php';

$fid  = intval( $_GET['fid'] );   
if( ! isset( $fid ) || $fid < 1 )

{	
	switch ($_GET['said']) 
	{
		case "news":
		include'news.php';
		break;
	}
	echo "<form action='' method='POST'>";
	echo "<table class='list' width='100%' cellpadding='10' cellspacing='0'>";
	echo "<tr><td class='tdborderl'>Użytkownik</td><td class='tdborderc'>e-mail</td><td class='tdborderr'>Data rejestracji</td><td class='tdborderr'>Usuń</td></tr>";
	$mysqlia = "SELECT id, user, email, date FROM user ORDER BY ID DESC";
	$mysqlib = $db->query($mysqlia);
	while($echo = $mysqlib->fetch_object()) 
	{
		echo "<tr><td><a href='index.php?sid=ustawienia&fid=".$echo->id."' title='".$echo->user."'>".$echo->user."</a></td>";
		echo "<td>".$echo->email."</td>";
		echo "<td>".$human_date = date("Y-m-d H:i:s", $echo->date)."</td>";
		echo "<td><input type='checkbox' name='deleteus[]' value='".$echo->id."' /></td></tr>";
	}
	echo "<tr><td colspan='4'><input type='submit' value='Usuń' /></td></tr>";
	echo "</table>";

	$delete_id=$_POST['deleteus'];
	$ilosc=count($delete_id);

	for($i=0; $i<$ilosc; $i++) {
	$question = "DELETE FROM user WHERE id='".$delete_id[$i]."'";
	$anserwer = $db->query($question);
	}
		if($anserwer) 
	{
		header('location: index.php?sid=ustawienia');
	}
}
elseif( is_numeric( $fid ) )
{
	$mysqlia = "SELECT id, user, date, email FROM user WHERE id=(".intval($_GET['fid']).")";
	$mysqlib = $db->query($mysqlia);
	while($echo = $mysqlib->fetch_object()) 
	{
	echo "Użytkownik: ".$echo->user."<br />mail: ".$echo->email."<br />".$human_date = date("Y-m-d H:i:s", $echo->date)."<br /><hr></hr><a href='javascript:history.back();'><< Wstecz</a>";
	}
}
else{echo "BŁĄD";}
}
else
{
header('location: index.php');
}
?>

@EDIT: A to plik news.php

<?php
	echo "<form action='' method='POST'>";
	echo "<table class='list' width='100%' cellpadding='10' cellspacing='0'>";
	echo "<tr><td class='tdborderl'>Autor</td><td class='tdborderc'>Tytuł</td><td class='tdborderr'>Data dodania</td><td class='tdborderr'>Usuń</td></tr>";
	$mysqlia = "SELECT id, title, autor, date FROM code ORDER BY ID DESC";
	$mysqlib = $db->query($mysqlia);
	while($echo = $mysqlib->fetch_object()) 
	{
		echo "<tr><td><a href='index.php?sid=ustawienia&said=news&fid=".$echo->id."' title='".$echo->title."'>".$echo->autor."</a></td>";
		echo "<td>".$echo->title."</td>";
		echo "<td>".$human_date = date("Y-m-d H:i:s", $echo->date)."</td>";
		echo "<td><input type='checkbox' name='deleteus[]' value='".$echo->id."' /></td></tr>";
	}
	echo "<tr><td colspan='4'><input type='submit' value='Usuń' /></td></tr>";
	echo "</table><br />";
?>

Jak widać również zawiera polecenie przekazania parametru, by fid go wykonał, jednak fid wykonuje to tylko dla userów a nie dla newsów. Co zrobić jak poniżej:

Chciałbym, już najprościej mówiąc aby z fid korzystało nawet kilkanaście akcji i aby odróżniał je od siebie i przekazywał do odpowiedniego elseif z wykonaniem zapytania.

Edytowane przez Bellum
Opublikowano

Jakbym na pierwszy rzut tego nie zrozumiał.. Jakie akcje, jaki fid, co Cię ogranicza by to zrobić? Jaki problem nie do przejścia?

Tu jest pies pogrzebany, jak to wytłumaczyć by mnie zrozumiano.

ustawienia.php

$fid  = intval( $_GET['fid'] );   
if( ! isset( $fid ) || $fid < 1 )
{
<a href='index.php?sid=ustawienia&fid=".$echo->id."' title='".$echo->user."'>".$echo->user."</a>	
}
elseif( is_numeric( $fid ) )
{
A tu zaptanie do sql dla powyższego linka
}

Wiadomo o co biega i jak działa.

Dobrze teraz załóżmy dodaj SWITCH

$fid  = intval( $_GET['fid'] );   
if( ! isset( $fid ) || $fid < 1 )
{
		switch ($_GET['said']) 
	{
		case "news":
		include'news.php';
		break;
	}

<a href='index.php?sid=ustawienia&fid=".$echo->id."' title='".$echo->user."'>".$echo->user."</a>	
}
elseif( is_numeric( $fid ) )
{
A tu zaptanie do sql dla powyższego linka
}

SWITCH wczytuje:

news.php

<?php
	<a href='index.php?sid=ustawienia&said=news&faid=".$echo->id."' title='".$echo->title."'>".$echo->autor."</a>
?>

Dla przykładu oczywiście, no i w nim również znajduję się link zapisujący id np, tematu do zmiennej. Ale jak widać w ustawienia.php, to

elseif( is_numeric( $fid ) )

może wykonać zapytanie tylko dla jednego odnośnika. Przecież jeden ma wyświetlić dokładniejsze dane o userach a drugi o tematach. Nie mogę mieć dwóch odnośników do jednej tabeli bo poco mam wyświetlać dane usera dla danych tematu :P, ma być oddzielne zapytanie dla userów a oddzielne dla tematów problem w tym jak ma fid to rozróżniać?

Opublikowano (edytowane)

Jest na sali ktoś kto to rozumie? (Może i mam syndrom dnia wczorajszego, ale albo Ty to źle tłumaczysz albo ni wiem :D).

Wrrr...

$fid  = intval( $_GET['fid'] );   
if( ! isset( $fid ) || $fid < 1 )
{
		switch ($_GET['said']) 
	{
		case "news":
		include'news.php';
		break;
	}
	echo "<form action='' method='POST'>";
	echo "<table class='list' width='100%' cellpadding='10' cellspacing='0'>";
	echo "<tr><td class='tdborderl'>Użytkownik</td><td class='tdborderc'>e-mail</td><td class='tdborderr'>Data rejestracji</td><td class='tdborderr'>Usuń</td></tr>";
	$mysqlia = "SELECT id, user, email, date FROM user ORDER BY ID DESC";
	$mysqlib = $db->query($mysqlia);
	while($echo = $mysqlib->fetch_object()) 
	{
		echo "<tr><td><a href='index.php?sid=ustawienia&fid=".$echo->id."' title='".$echo->user."'>".$echo->user."</a></td>";
		echo "<td>".$echo->email."</td>";
		echo "<td>".$human_date = date("Y-m-d H:i:s", $echo->date)."</td>";
		echo "<td><input type='checkbox' name='deleteus[]' value='".$echo->id."' /></td></tr>";
}
elseif( is_numeric( $fid ) )
{
	$mysqlia = "SELECT id, user, date, email FROM user WHERE id=(".intval($_GET['fid']).")";
	$mysqlib = $db->query($mysqlia);
	while($echo = $mysqlib->fetch_object()) 
	{
	echo "Użytkownik: ".$echo->user."<br />mail: ".$echo->email."<br />".$human_date = date("Y-m-d H:i:s", $echo->date)."<br /><hr></hr><a href='javascript:history.back();'><< Wstecz</a>";
	}
}

Czy muszę tłumaczyć co tu się dzieje? wyświetlam listę użytkowników, każdy nick użytkownika jest odnośnikiem klikam w niego i zostaje wykonana akcja bo parametr fid jest większy bądź równy 1 i wyświetla mi dane użytkownika :)

Czy to jest zrozumiałe?

A teraz dodałem sobie SWITCH ale to pikuś mało istotny wczytuję on news.php do pliku ustawienia.php ok cacy mało istotne, ważne jest to że news odpowiada za wyświetlanie tematów a nie userów.

<?php
	echo "<form action='' method='POST'>";
	echo "<table class='list' width='100%' cellpadding='10' cellspacing='0'>";
	echo "<tr><td class='tdborderl'>Autor</td><td class='tdborderc'>Tytuł</td><td class='tdborderr'>Data dodania</td><td class='tdborderr'>Usuń</td></tr>";
	$mysqlia = "SELECT id, title, autor, date FROM code ORDER BY ID DESC";
	$mysqlib = $db->query($mysqlia);
	while($echo = $mysqlib->fetch_object()) 
	{
		echo "<tr><td><a href='index.php?sid=ustawienia&said=news&faid=".$echo->id."' title='".$echo->title."'>".$echo->autor."</a></td>";
		echo "<td>".$echo->title."</td>";
		echo "<td>".$human_date = date("Y-m-d H:i:s", $echo->date)."</td>";
		echo "<td><input type='checkbox' name='deleteus[]' value='".$echo->id."' /></td></tr>";
	}
	echo "<tr><td colspan='4'><input type='submit' value='Usuń' /></td></tr>";
	echo "</table><br />";
?>

Powyższy kod: Wyświetla listę tematów super! ale co jeżeli chcę przeglądać dany temat i tak samo jak w przypadku userów do tytułu przypiszę odnośnik?

elseif( is_numeric( $fid ) )
{
	$mysqlia = "SELECT id, user, date, email FROM user WHERE id=(".intval($_GET['fid']).")";
	$mysqlib = $db->query($mysqlia);
	while($echo = $mysqlib->fetch_object()) 
	{
	echo "Użytkownik: ".$echo->user."<br />mail: ".$echo->email."<br />".$human_date = date("Y-m-d H:i:s", $echo->date)."<br /><hr></hr><a href='javascript:history.back();'><< Wstecz</a>";
	}

Powyższy kod: << To zapytanie wykona akcje dla tej aukcji >> czyli userów >> poniższy kod:

<a href='index.php?sid=ustawienia&fid=".$echo->id."' title='".$echo->user."'>".$echo->user."</a>

Ale nie może wykonać akcji dla >> poniżej

<a href='index.php?sid=ustawienia&said=news&faid=".$echo->id."' title='".$echo->title."'>".$echo->autor."</a>

Bo niby jak skoro >> poniżej

elseif( is_numeric( $fid ) )
{
	$mysqlia = "SELECT id, user, date, email FROM user WHERE id=(".intval($_GET['fid']).")";
	$mysqlib = $db->query($mysqlia);
	while($echo = $mysqlib->fetch_object()) 
	{
	echo "Użytkownik: ".$echo->user."<br />mail: ".$echo->email."<br />".$human_date = date("Y-m-d H:i:s", $echo->date)."<br /><hr></hr><a href='javascript:history.back();'><< Wstecz</a>";
	}

WYKONUJE TYLKO ZAPYTANIE DLA USERÓW A NIE DLA TEMATÓW. Nie dodam tam drugiego zapytania dla tematów bo jak by to miało rozróżniać czy id tyczy się tego czy tego skoro zmienna fid jest dla obydwu odnośników.

Edytowane przez Bellum
  • Manager
Opublikowano

WYKONUJE TYLKO ZAPYTANIE DLA USERÓW A NIE DLA TEMATÓW. Nie dodam tam drugiego zapytania dla tematów bo jak by to miało rozróżniać czy id tyczy się tego czy tego skoro zmienna fid jest dla obydwu odnośników.

Dla jednego odnośnika zrób zmienną fid (co już masz), a dla drugiego, no nie wiem, uid?

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Opublikowano

WYKONUJE TYLKO ZAPYTANIE DLA USERÓW A NIE DLA TEMATÓW. Nie dodam tam drugiego zapytania dla tematów bo jak by to miało rozróżniać czy id tyczy się tego czy tego skoro zmienna fid jest dla obydwu odnośników.

Dla jednego odnośnika zrób zmienną fid (co już masz), a dla drugiego, no nie wiem, uid?

A teraz wkomponuj mi to w kod, wczoraj próbowałem robić tak jak potrafię i danych mi nie wczytywało po kliknięciu:

$fid  = intval( $_GET['fid'] );   
if( ! isset( $fid ) || $fid < 1)

{

Dodawanie każdego takiego parametru mija się z celem poniżej kod:

$fid  = intval( $_GET['fid'] );
$uid  = intval( $_GET['uid'] ); 

I wkomponowywanie kolejnych kodów, najlepiej jakby robił to jeden parametr ale rozróżniał czy fid czy uid. Pisałem newsa na www trochę zajęło :)

Opublikowano (edytowane)

<?php 
if(isset($_SESSION['session_user'])) 
{
require_once('config_db.php');

$fid  = {int) $_GET['fid'];
$uid  = {int) $_GET['uid'];    

if( isset($fid) && !empty($fid) && $fid > 1)
{       
      switch ($_GET['said']) 
      {
	      case "news":
	      include'news.php';
	      break;
      }
      echo "<form action='' method='POST'>";
      echo "<table class='list' width='100%' cellpadding='10' cellspacing='0'>";
      echo "<tr><td class='tdborderl'>Użytkownik</td><td class='tdborderc'>e-mail</td><td class='tdborderr'>Data rejestracji</td><td class='tdborderr'>Usuń</td></tr>";
      $mysqlia = "SELECT id, user, email, date FROM user ORDER BY ID DESC";
      $mysqlib = $db->query($mysqlia);
      while($echo = $mysqlib->fetch_object()) 
      {
	      echo "<tr><td><a href='index.php?sid=ustawienia&fid=".$echo->id."' title='".$echo->user."'>".$echo->user."</a></td>";
	      echo "<td>".$echo->email."</td>";
	      echo "<td>".$human_date = date("Y-m-d H:i:s", $echo->date)."</td>";
	      echo "<td><input type='checkbox' name='deleteus[]' value='".$echo->id."' /></td></tr>";
      }
      echo "<tr><td colspan='4'><input type='submit' value='Usuń' /></td></tr>";
      echo "</table>";

      $delete_id=$_POST['deleteus'];
      $ilosc=count($delete_id);

      for($i=0; $i<$ilosc; $i++) {
      $question = "DELETE FROM user WHERE id='".$delete_id[$i]."'";
      $anserwer = $db->query($question);
      }
	      if($anserwer) 
      {
	      header('location: index.php?sid=ustawienia');
      }
}
else if( ( isset($uid) && !empty($uid)  && $uid > 1)
{
      $mysqlia = "SELECT id, user, date, email FROM user WHERE id= '{$uid}'";
      $mysqlib = $db->query($mysqlia);
      while($echo = $mysqlib->fetch_object()) 
      {
      echo "Użytkownik: ".$echo->user."<br />mail: ".$echo->email."<br />".$human_date = date("Y-m-d H:i:s", $echo->date)."<br /><hr></hr><a href='javascript:history.back();'><< Wstecz</a>";
      }
}
else
{
      echo "BŁĄD";
}
}
else
{
       header('location: index.php');
}
?>

Coś takiego może? Nie wiem czy dobrze zrozumiałem.

Edytowane przez Fragles
671762.pnguserbar_php_by_coolpie.jpg
Opublikowano (edytowane)

Dobrze kombinujesz ale chodzi o to by między kropkami były dwie zmienne, wyświetlam tam zarówno zapytanie z bazy dot: listy userów, jak tematów.

Tytuł usera jest linkiem i tytuł tematu jest linkiem przy czym pierwszy posiada zmienną $fid a drugi $uid dlatego ten parametr poniżej musi wykonywać akcje dla jednego i drugiego a nie tylko dla $fid :P ponieważ oba znajdują się w zapytaniu if ale tylko dla jednej zmiennej :)

<?php 
if(isset($_SESSION['session_user'])) 
{
       require_once('config_db.php');

       $fid  = {int) $_GET['fid'];
       $uid  = {int) $_GET['uid'];    

       if( isset($fid) && !empty($fid) && $fid > 1)
       {<...........................> } 

Komentarze w kodzie:

if(isset($_SESSION['session_user'])) 
{
       require_once('config_db.php');

       $fid  = {int) $_GET['fid'];
       $uid  = {int) $_GET['uid'];    
	#########################################################################
	TEN IF MUSI UWZGLĘDNIAĆ OBIE ZMIENNE ZARÓWNO GDY AKCJA NIE JEST WYKONYWANA 
	DLA $fid i dla $uid jak widać uwzględnia tylko $fid
	#########################################################################
       if( isset($fid) && !empty($fid) && $fid > 1)
       {		
	#########################################################################
	WCZYTUJE NEWS.php
	#########################################################################
	switch ($_GET['said']) 
	{
		case "news":
		include'news.php';
		break;
	}
	#########################################################################
	WYŚWIETLA LISTE USERÓW w linku jest zmienna $fuid
	#########################################################################
			echo "<form action='' method='POST'>";
	echo "<table class='list' width='100%' cellpadding='10' cellspacing='0'>";
	echo "<tr><td class='tdborderl'>Autor</td><td class='tdborderc'>Tytuł</td><td class='tdborderr'>Data dodania</td><td class='tdborderr'>Usuń</td></tr>";
	$mysqlia = "SELECT id, title, autor, date FROM code ORDER BY ID DESC";
	$mysqlib = $db->query($mysqlia);
	while($echo = $mysqlib->fetch_object()) 
	{
		echo "<tr><td><a href='index.php?sid=ustawienia&uid=".$echo->uid."' title='".$echo->title."'>".$echo->autor."</a></td>";
		echo "<td>".$echo->title."</td>";
		echo "<td>".$human_date = date("Y-m-d H:i:s", $echo->date)."</td>";
		echo "<td><input type='checkbox' name='deleteus[]' value='".$echo->id."' /></td></tr>";
	}
	echo "<tr><td colspan='4'><input type='submit' value='Usuń' /></td></tr>";
	echo "</table><br />";
	#########################################################################
	WYŚWIETLA LISTE USERÓW w linku jest zmienna $fid
	#########################################################################
	echo "<form action='' method='POST'>";
	echo "<table class='list' width='100%' cellpadding='10' cellspacing='0'>";
	echo "<tr><td class='tdborderl'>Użytkownik</td><td class='tdborderc'>e-mail</td><td class='tdborderr'>Data rejestracji</td><td class='tdborderr'>Usuń</td></tr>";
	$mysqlia = "SELECT id, user, email, date FROM user ORDER BY ID DESC";
	$mysqlib = $db->query($mysqlia);
	while($echo = $mysqlib->fetch_object()) 
	{
		echo "<tr><td><a href='index.php?sid=ustawienia&fid=".$echo->id."' title='".$echo->user."'>".$echo->user."</a></td>";
		echo "<td>".$echo->email."</td>";
		echo "<td>".$human_date = date("Y-m-d H:i:s", $echo->date)."</td>";
		echo "<td><input type='checkbox' name='deleteus[]' value='".$echo->id."' /></td></tr>";
	}
	echo "<tr><td colspan='4'><input type='submit' value='Usuń' /></td></tr>";
	echo "</table>";

	$delete_id=$_POST['deleteus'];
	$ilosc=count($delete_id);

	for($i=0; $i<$ilosc; $i++) {
	$question = "DELETE FROM user WHERE id='".$delete_id[$i]."'";
	$anserwer = $db->query($question);
	}
		if($anserwer) 
	{
		header('location: index.php?sid=ustawienia');
	}
	#########################################################################
	#########################################################################

	}
	#########################################################################
	TERAZ TEN PARAMETR WYKONUJE ZAPYTANIE WYŁĄCZNIE DLA $fid
	#########################################################################
		elseif( is_numeric( $fid ) )
{
	$mysqlia = "SELECT id, user, date, email FROM user WHERE id=(".intval($_GET['fid']).")";
	$mysqlib = $db->query($mysqlia);
	while($echo = $mysqlib->fetch_object()) 
	{
	echo "Użytkownik: ".$echo->user."<br />mail: ".$echo->email."<br />".$human_date = date("Y-m-d H:i:s", $echo->date)."<br /><hr></hr><a href='javascript:history.back();'><< Wstecz</a>";
	}
}

i Chyba wiem jak wytłumaczyć już jak krowie na granicy:

Jestem programem :):

Wyświetlam oba zapytania do bazy danych: Wyświetlam listę userów, Wyświetlam liste tematów: W obu przypadkach zmienna $fid i $uid jest false.

Następuje akcja (identyfikacja zmiennej czy został parametr przekazany $fid czy $uid) wykonywanie zapytania do bazy danych dla &fid lub $uid: Wyświetlam odpowiednie dane.

Edytowane przez Bellum
Opublikowano (edytowane)

$fid  = intval( $_GET['fid'] );
$uid  = intval( $_GET['uid'] );   
if( ! isset( $fid ) && isset( $uid ) || $fid < 1 && $uid < 1)
text <-----TESXT
{	
}


elseif( is_numeric( $fid ) )
{
text2
	}
}

elseif( is_numeric( $uid ) )
{
text3
	}
}

Coś na tym przykładzie :|, jeżeli istnieje zmienna $fid i $uid lub są one mniejsze bądź równe 1, wyświetla klamrach text. Jeżeli którakolwiek ze zmiennych wynosi true, to kieruje zapytanie do odpowiedniego elseif $fid lub $uid i wyświetla albo text2 albo text3 i wyświetla zawartość, to co skleciłem nie działa :P

@EDIT: Działa ale nie reaguje na zmienną $uid nie wczytuje :( a widzę, że id zostało przekazane do paska adresu i zmiennej $uid :(

Edytowane przez Bellum

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.