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

Wyświetlenie rekordu na stronie z linku o danym id

VPS Starter Arubacloud
0 głosów
736 wizyt
pytanie zadane 21 grudnia 2017 w PHP przez Mati86 Nowicjusz (150 p.)
Witam,

Mam takie pytanko, zaczynam przygodę z programowaniem i wymyśliłem sobie projekt wypożyczalni aut chciałbym żeby po kliknięciu w link z nazwą otworzyło się okno index.php/go?id=1 a w nim dane auta. Mam zrobioną bazę z autami i pola id marka kolor itd. i po kliknięciu w link mam komunikat nie znaleziono obiektu error 404. Możecie podpowiedzieć jak ruszyć dalej bo narazie mam zawiechę.....

Kod:

<?php

   
 $pdo = new PDO('mysql:host=localhost;dbname=auta;endcoding=utf-8','root','');                                                    $wynik = $pdo->query('SELECT * FROM lista ');
     foreach($wynik->fetchAll() as $row);
              {
                  echo '<a href="localhost//index.php/go?id=1"'.$row['id'].'">' . $row['marka'] .'</a>';

               }

?>

Pozdrawiam

1 odpowiedź

0 głosów
odpowiedź 21 grudnia 2017 przez Chess Szeryf (76,710 p.)
wybrane 23 stycznia 2018 przez Mati86
 
Najlepsza

Pomyliłeś chyba hash tag ze znakiem zapytania. Hash tag służy do kotwiczenia pewnej sekcji w dokumencie, aby się do niej odnieść a znak zapytania po slashu oznacza request (zapytanie) do  witryny, a slash, czyli ukośnik oznacza przejście na podstronę.

Poniżej zaprezentuję przykład używania etykiet:

 echo '<a href="http://localhost/index.php/go#id=1"'.$row['id'].'">'; 
<a href="#hello">hello</a>

<br /><br /><br /><br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br /><br /><br /><br />

<a id="hello">here</a>

Twój kod nie działa, ponieważ w linku zabrakło Ci: http://(...). W Twoim przypadku wyglądałoby to tak:

<a href="http://localhost/index/go?id=1">(...)</a>

Bo w chwili obecnej twój link odnosi się do takiej strony: http://localhost//localhost/go.php , która zapewne nie istnieje.

Adresy bezwzględne (absolutne) zaczynają się od http:// , a względne od samego znaku slash'a ("/").

Po prostu więc możesz napisać tak:

echo '<a href="?id=1">'.$row['id'].'</a>';

chciałbym żeby po kliknięciu w link z nazwą otworzyło się okno index.php/go?id=1 a w nim dane auta.

Musisz napisać instrukcję warunkową if.

<?php 
if($_GET['id']==1){
	echo $row['id'];
}else{ 
	echo 'id is not equal 1';
}
?>
<body style="background:grey">

 

<form method="post">
	<select name="which_option">
		<option value="column">Column</option>
		<option value="row">Row</option>
	</select>
	<input type="submit" name="submit"/>
</form>

<pre>
<?php
session_start();
$dbh = new PDO('mysql:host=localhost;dbname=sheller', 'root', '');

if(!isset($_POST['which_option'])){
		null;
	}else{ 

	 if($_POST['which_option']=='column'){
		$_SESSION['which_option']='column';
	}else if($_POST['which_option']=='row'){ 
		$_SESSION['which_option']='row';
	} 
}
function getValueFromColumn($dbh,$id,$flag){
	$output = null;
	$sql = 'SELECT * from users';
	$result = $dbh->query($sql);
	$colCount = $result->columnCount();
	$sql2 = 'SELECT * FROM users where user_id='.$id.';';
	$result2 = $dbh->query($sql2);
	$rowCount = $result->rowCount();
	 
	 
	
		if($flag == "column"){
			if(!isset($_GET['id'])){
				null;
			}else{ 
				if($_GET['id']>$colCount && $flag=="column"){
					echo "Too hight ID";
				}else{  
				
					foreach($result->fetchAll(PDO::FETCH_NUM) as $row) {
						$output .= ($row[$id].'<br />');
					}
					
				}
			}
				for($i=0;$i<$colCount;$i++){ 
					echo "<a href=\"?id={$i}\">ID{$i}</a> ";
				}
			
			
			echo "<br />";
		}else{ 
			echo '<br />';
			if(!isset($_GET['id'])){
				null;
			}else{ 
				foreach($result2->fetchAll(PDO::FETCH_NUM) as $row) {
					foreach($row as $string){
						$output .= $string.' ';
					}
				}
				
			}
			if(!isset($_GET['id'])){
				null;
			}else{ 
				if($_GET['id']>$rowCount && $flag=="row"){
					echo "Too high ID";
				}
			}
			for($i=1;$i<=$rowCount;++$i){ 
					echo "<a href=\"?id={$i}\">ID{$i}</a> ";
			}
		}
	
	
	
	return $output;
}
echo getValueFromColumn($dbh,$_GET['id'] ?? NULL,$_SESSION['which_option'] ?? NULL);
?>

 

komentarz 22 grudnia 2017 przez Mati86 Nowicjusz (150 p.)

Wielkie dzięki Kolego !!!smiley

Ruszam z tematem

Pozdrawiam 

komentarz 17 stycznia 2018 przez Mati86 Nowicjusz (150 p.)
Witam ponownie,

teraz mój kod wygląda tak:

echo '<a href="http://localhost/wyp/index.php/go?id=1">Auto1</a>';
                
                
                    if ( $_GET['id']==1)
                    
                    {
                   echo $row['id'].$row['marka'].$row['nazwa'].$row['silnik'];
                    }
                    

                     else{

                          echo 'nie znaleziono auta';      }                
                
                echo '<br></br>';
                echo '<a href="http://localhost/wyp/index2.php/go?id=2">Auto2</a>';
                echo '<br></br>';
                echo '<a href="http://localhost/wyp/index2.php/go?id=3">Auto3</a>';
                echo '<br></br>';
                echo '<a href="http://localhost/wyp/index2.php/go?id=4">Auto4</a>';
                

W badzie mam 5 aut z linku auto1 pobiera mi dane z mysql auta o id5

Jak mam zrobić żeby pod każdym linkiem otwierało się auto z jego specyfikacja z bazy i zgodnym id

Pozdrawiam
komentarz 1 lutego 2018 przez Chess Szeryf (76,710 p.)

Czy rozwiązałeś już swój problem? Jeśli nie to może spróbuj tego:

<body style="background:grey">

<form method="get" action="">
	<input type="text" name="id_models"/>
	<input type="submit" value="send"/>
</form>

<?php 
$id_models = $_GET['id_models'] ?? NULL;

$dbh = new PDO('mysql:host=localhost;dbname=mati86', 'root', '');

$sql = "SELECT * from models where id=\"{$id_models}\"";

$result = $dbh->query($sql);

foreach($result->fetchAll(PDO::FETCH_NUM) as $row){
	foreach($row as $row2) {
		echo $row2;	
	}
}

if($result->rowCount()==0 && $id_models!=NULL){
	echo "not found records for id={$id_models}";
}

?>

</body>

Jeśli chcesz, aby po kliknięciu w link, czy po wpisaniu ID skrypt miał zapamiętać dane, które zostały ukazane na ekranie, to spróbuj to napisać na sesji, ciasteczkach, ewentualnie na plikach, czy jak Ci tam wygodniej, chociaż z drugiej strony mógłbyś przerobić mój kod i na tej podstawie to zapamiętywać, ale tego do końca nie jestem pewien, bo chodzi Tobie pewnie o zapamiętywanie tymczasowe, a robienie tego na bazie danych jest trochę bez sensu, bo i tak musiałbyś usuwać te dane z bazy, aczkolwiek Twój wybór.

komentarz 2 lutego 2018 przez Mati86 Nowicjusz (150 p.)

Cześć,

Dzięki, za Twój kod na pewno się przyda w dalszych moich etapach nauki, jestem już coraz bliżej mojego założenia teraz kod wygląda tak:


    <?php

   
    $pdo = new PDO('mysql:host=localhost;dbname=auta;endcooding=utf-8','root','');

        
    $result = $pdo->query('SELECT * FROM lista');
            
    foreach($result as $row) 
     {
          {
            echo '<a href=http://localhost/wyp/index2.php?id='.$row['id'].'>'.$row['marka'].'</a>';
          }
     }    
        ?>

w indeksie pobiera mi nazwy aut i jak w nie klikam to się zmienia adres  podstrony z id1,2,3,itd. 

Próbowałem jak wyżej pisałeś ale z if ale wyskakuje błąd w index i wyświetla dane wszystkich aut jak klima w poloneza 

"Undefined index: id in C:\xampp\htdocs\wyp\index2.php"

Chciał bym żeby teraz po kliknięciu w markę wyświetliły się wszystkie dane auta na podstronie czyli

id=1 to polonez, klikam w niego mam nazwa, kolor, silnik.

W pierwszym podejściu zrobiłem to w html i w osobnych plikach php każde auto i hula aż miło,( z fotkami poldka na plaży i dwie modelki obok w kostiumach ;))teraz kombinuję to żeby w indeksie była zawarta cała "mechanika"

Będę wdzięczny, za wskazówki,

Pozdawiam 

 


    


	
 
komentarz 2 lutego 2018 przez Chess Szeryf (76,710 p.)
<?php
$pdo = new PDO('mysql:host=localhost;dbname=mati86;endcooding=utf-8','root','');

$result = $pdo->query('SELECT * FROM models');

if(!isset($_GET['id'])){
	$_GET['id']=null;
}
$sql = $pdo->query("SELECT * from models where id=\"{$_GET['id']}\"");

foreach($result as $row) {
   echo '<a href="?id='.$row['id'].'">'.$row['type'].'</a><br />'; 
}

if(isset($_GET['id'])){
	foreach($sql->fetchAll(PDO::FETCH_NUM) as $row){
		foreach($row as $row2){
			echo $row2;
		}
	}
}

?>

 

komentarz 3 lutego 2018 przez Mati86 Nowicjusz (150 p.)

Bardzo dziękuję o to własnie chodziło smiley

 

Podobne pytania

0 głosów
1 odpowiedź 231 wizyt
pytanie zadane 29 listopada 2021 w PHP przez kemeemek Nowicjusz (140 p.)
0 głosów
1 odpowiedź 977 wizyt
pytanie zadane 23 września 2017 w JavaScript przez Vorex444 Dyskutant (9,610 p.)
–1 głos
3 odpowiedzi 416 wizyt
pytanie zadane 10 maja 2018 w PHP przez seam3 Początkujący (450 p.)

92,452 zapytań

141,262 odpowiedzi

319,077 komentarzy

61,854 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!

...