Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Difuzor bas Q Acoustic 3050

Bolojan la presedintie?

Huawei band 8

Statii de benzina DHR
 AT Duster 80 asfalt 20 forestier

fisura/crapatura perete exterior ...

Windows XP Volume License

Noul degresant universal
 Imaginea nu poate fi redata - Ero...

"Mafiotii" revin in forta...

Branșament gaze 2024 sau pom...

Lamurire bec led h7
 Preturi momeala ? (dar care e sme...

Realizare tavan fals rigips

Alternative pod Giurgiu - Ruse

Cat spatiu stocare aveti in total...
 

Crearea unei pagini noi la selectarea unei linii

- - - - -
  • Please log in to reply
10 replies to this topic

#1
adi94

adi94

    Junior Member

  • Grup: Members
  • Posts: 190
  • Înscris: 06.11.2011
Salut,

Încerc să-mi dezvolt un proiect simplu și m-am blocat.
Lucrez cu o bază de date. Câteva din inregistrările din baza de date sunt adăugate într-un tabel și oferă un fel de preview  utilizatorului.
Nu știu cum aș putea face ca atunci când dă clik pe o întregistrare să i se încarce o nouă pagină cu toate proprietătile din respectivul rând.

În preview afișez doar șase atribute pentru fiecare înregistrare, iar de tot sunt 30 când dau click aș vrea să se încarce o pagină nouă cu toate atributele.
Nu aș vrea să fac asta la mână și să creez pagini cu interogarea tuturor câmpurilor și să o pun ca link pentru că nu ar fi foarte eficient.

Are cineva vreo idee despre cum aș putea face asta? Sau poate chiar o idee mai buna :D

#2
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,273
  • Înscris: 24.02.2007
Pasand noii pagini id'ul randului, ce te impiedica sa afisezi toate informatiile?

Edited by dani.user, 11 March 2017 - 18:35.


#3
adi94

adi94

    Junior Member

  • Grup: Members
  • Posts: 190
  • Înscris: 06.11.2011
Asta nu e nici o problema, un select where am mai văzut :)) problema e ca nu stiu cum sa creez noua pagina automat cu noile date.

#4
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,651
  • Înscris: 30.07.2003
Elegant e sa ceri din browser via Ajax catre PHP datele in cauza, de aici te duci pe SQL sa le iei si inapoi in browser cu Javascript le pui asa cum doresti (sa fie cursiva povestea, nu hop alta pagina, clipeste imaginea, urat). Daca nu, nu inteleg cum de nu poti in PHP sa parcurgi datele in cauza si sa le arunci browserului cum doresti!

Edited by neagu_laurentiu, 12 March 2017 - 10:36.


#5
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,273
  • Înscris: 24.02.2007
  • Varianta "clasica", aiurea ca arhitectura: creezi detalii_rand.php care primeste drept input id-ul randului si afiseaza toate detaliile (grija la drepturi de acces si toate cele)
  • Varianta MVC, in controller adaugi o noua metoda ce primeste id-ul randului
  • Varianta cu MVC + API, expui in controller o metoda ca mai sus, doar ca returneza un json cu informatiile necesare, nu randeaza o pagina intreaga
  • Varianta cu ascuns datele: trimiti de la bun inceput toate detaliile randului daca nu ingreuneaza prea tare sistemul, dar afisezi selectiv doar o parte, iar daca userul apasa vreun buton afisezi si restul
Solutii sunt multe. Tutorialele introductive in php/mysql prezinta bazele pentru a intelege cat de cat ce se intampla. Sunt doar o introducere, nu pot fi aplicate cu succes, pe termen lung, in productie. Mai trebuie multe notiuni de software engineering pana se poate crea un sistem flexibil ce sa nu devina un calvar de intretinut dupa doar cateva saptamani.

#6
adi94

adi94

    Junior Member

  • Grup: Members
  • Posts: 190
  • Înscris: 06.11.2011

View Postneagu_laurentiu, on 12 martie 2017 - 10:34, said:

Elegant e sa ceri din browser via Ajax catre PHP datele in cauza, de aici te duci pe SQL sa le iei si inapoi in browser cu Javascript le pui asa cum doresti (sa fie cursiva povestea, nu hop alta pagina, clipeste imaginea, urat). Daca nu, nu inteleg cum de nu poti in PHP sa parcurgi datele in cauza si sa le arunci browserului cum doresti!

De parcurs nu e problema, nu reusesc sa-l fac functional cu link-ul. Ce fac nu trebuie sa fie ceva complex, o folosesc doar ca sa trimit niste informatii de la o aplicatie desktop si sa le afisez intr-o interfata web.
Incerc ca de exemplu in index.php sa am un tabel cu toate intregistrarile (doar o parte din coloane) si cand da clik sa mearga in details.php?id=valoare

View Postdani.user, on 12 martie 2017 - 10:40, said:

  • Varianta "clasica", aiurea ca arhitectura: creezi detalii_rand.php care primeste drept input id-ul randului si afiseaza toate detaliile (grija la drepturi de acces si toate cele)
  • Varianta MVC, in controller adaugi o noua metoda ce primeste id-ul randului
  • Varianta cu MVC + API, expui in controller o metoda ca mai sus, doar ca returneza un json cu informatiile necesare, nu randeaza o pagina intreaga
  • Varianta cu ascuns datele: trimiti de la bun inceput toate detaliile randului daca nu ingreuneaza prea tare sistemul, dar afisezi selectiv doar o parte, iar daca userul apasa vreun buton afisezi si restul
Solutii sunt multe. Tutorialele introductive in php/mysql prezinta bazele pentru a intelege cat de cat ce se intampla. Sunt doar o introducere, nu pot fi aplicate cu succes, pe termen lung, in productie. Mai trebuie multe notiuni de software engineering pana se poate crea un sistem flexibil ce sa nu devina un calvar de intretinut dupa doar cateva saptamani.

Uite ce am facut eu pana acum doar ca nu prea merge..

Varianta initiala (print doar cateva coloane din db intr un tabel).
<?php
$host = "localhost";
$user = "user";
$pass = "";
$db_name = "db";
//create connection
$connection = mysqli_connect($host, $user, $pass, $db_name);
//test if connection failed
if(mysqli_connect_errno()){
die("connection failed: "
	 . mysqli_connect_error()
	 . " (" . mysqli_connect_errno()
	 . ")");
}
//get results from database
$result = mysqli_query($connection,"SELECT * FROM test");
$all_property = array(); //declare an array for saving property
//showing property
echo '<table class="data-table">
	 <tr class="data-heading">'; //initialize table tag
while ($property = mysqli_fetch_field($result)) {
echo '<td>' . $property->name . '</td>'; //get field name for header
array_push($all_property, $property->name); //save those to array
}
echo '</tr>'; //end tr tag
//showing all data
while ($row = mysqli_fetch_array($result)) {
echo "<tr>";
foreach ($all_property as $item) {
	 echo '<td>' . $row[$item] . '</td>'; //get items using property value
}
echo '</tr>';
}
echo "</table>";
?>


Apoi am incercat ceva modificari dupá cum am zis mai sus și arată cam așa

<?php
$host = "localhost";
$user = "user";
$pass = "";
$db_name = "db";
//create connection
$connection = mysqli_connect($host, $user, $pass, $db_name);
//test if connection failed
if(mysqli_connect_errno()){
die("connection failed: "
	 . mysqli_connect_error()
	 . " (" . mysqli_connect_errno()
	 . ")");
}
//get results from database
$result = mysqli_query($connection,"SELECT * FROM test");
$all_property = array(); //declare an array for saving property
$thead=array();
$tbody=array();
// Set Properties
$all_property = array('id','first','sec','school','data'); 
$thead=sprintf('<tr>%s</tr>',implode('',$all_property)); // implode & put into a proper row
// Get Data
while ($row = mysqli_fetch_array($result)) {
	 $tr=array();
	 foreach ($all_property as $item) {
		 // Here is a solution: Make id clickable
			 if($item=='id')
				 $tr[]=sprintf('<th><a href="details.php?id=%s">%s</a></th>',$item,$item);
			 else $tr[]=sprintf('<td>%s</td>');
	 }
	 $tbody[]=sprintf('<tr>%s</tr>',implode('',$tr));
}
?>


<table class="">
<thead>
	 <?php print $thead; ?>
</thead>
<tbody>
	 <?php print $tbody; ?>
<tbody>
</table>


Însă primesc eroare pentru fiecare coloana de la sprintf.

Edited by adi94, 12 March 2017 - 15:38.


#7
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,273
  • Înscris: 24.02.2007
sprintf('<td>%s</td>') aici nu-i dai nici un parametru

#8
adi94

adi94

    Junior Member

  • Grup: Members
  • Posts: 190
  • Înscris: 06.11.2011
Da asta era, însă am mai rămas cu o eroare la lina 48 pentru tbody..
[ https://i.imgur.com/ECy1yr0.png - Pentru incarcare in pagina (embed) Click aici ]

#9
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,273
  • Înscris: 24.02.2007
Mesajul de eroare e foarte sugestiv. $tbody al tau e array, nu string.

#10
adi94

adi94

    Junior Member

  • Grup: Members
  • Posts: 190
  • Înscris: 06.11.2011
Am  scăpat de eroare după ce am băgat într-un for însă tot nu funcționează cum ar trebui...
<?php
  for($i = 0; $i < count($tbody); ++$i) {
   print ($tbody[$i]); }
?>


În pagina principala îmi afișează pentru fiecare rand datele de aici
$all_property = array('id','first','sec','school','data');

în locul celor din db iar pe detailes.php îmi spune că thead nu e definită. Se pare că nu vrea să-mi dea pace așa ușor.

Edited by adi94, 12 March 2017 - 16:39.


#11
adi94

adi94

    Junior Member

  • Grup: Members
  • Posts: 190
  • Înscris: 06.11.2011
Am rezolvat pana la urma. Multumesc :)

Anunturi

Chirurgia spinală minim invazivă Chirurgia spinală minim invazivă

Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical.

Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale.

www.neurohope.ro

1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate