webForumDet fria alternativet

Info visning

11 svar · 488 visningar · startad av Cypher

CypherMedlem sedan mars 200622 inlägg
#1

Hejsan, jag har en sida jag jobbar på där det finns ett antal personer som har en del information som ska visas.
Jag vill ha det så att när man trycker på ett namn så kommer infon upp om denna person
Och när jag trycker på ett annat namn ska förre personens info försvinna och näste persons komma upp.
Jag vill ha det så att detta händer på en och samma sida. inga länkar till andra sidor då dessa personer ofta byts ut eller tillkommer nya. Länkning skulle betyda mycket arbete vid personbyte.

När man trycker på "Cypher" ska infon komma upp. När man sedan trycker på nästa person i listan, "Neela" ska infon om Cypher försvinna och Neela komma upp under namnet. Just nu ligger deras info uppe hela tiden.

Detta har jag än så länge:


<td height="25">
Cypher<br>

<?php
/* Display requested user information */

$req_user_info = $database->getUserInfo(cypher);
?>
<table class="content-div" border="0" cellpadding="0" cellspacing="0">
    <tr>
       <td width="141" height="20" valign="top">
          <!-- Name -->
          <b>Name:</b>
       </td>
       <td valign="top">
          <?php echo $req_user_info['name'] ?>
       </td>
    </tr>
    <tr>
        <td height="20" valign="top">
	   <!-- Year of Birth -->
	   <b>Year of Birth:</b>
        </td>
        <td valign="top">
	    <?php echo $req_user_info['birthday'] ?>
        </td>
   </tr>
</table>

Neela<br>
<?php
/* Display requested user information */
$req_user_info = $database->getUserInfo(neela);
?>
<table class="content-div" border="0" cellpadding="0" cellspacing="0">
    <tr>
       <td width="141" height="20" valign="top">
          <?php /* Name */
          echo "<b>Name:</b>"?>
       </td>
       <td valign="top">
          <?php echo $req_user_info['name'] ?>
       </td>
    </tr>
    <tr>
        <td height="20" valign="top">
	   <?php /* Year of Birth */
	   echo "<b>Year of Birth:</b>" ?>
        </td>
        <td valign="top">
	    <?php echo $req_user_info['birthday'] ?>
        </td>
   </tr>
</table>

</td>
CompusaMedlem sedan jan. 20023 327 inlägg
#2

Använd dig av querystrings. Då kan du ha en länk som ser ut så här:
http://www.minsida.se/personer.php?name=cypher

I din lista med personer kan du ha en if-sats där du kollar värdet på name och om det är samma som cypher då visar du denna info. Denna koll får du göra för varje person men det blir inte så jobbigt om du skriver ut personerna i en loop.

Har inte tid att skriva kod just nu, men hoppas du löser det ändå, annars finns det säkert någon annan som hinner..

UrMeMedlem sedan apr. 2001762 inlägg
#3

En lösning är att skapa ett lager för varje person när sidan laddas, sedan något javascript som döljer/visar lagren beroende på vart man klickar.

Har dock ingen kod att visa.

Edit: Fick för mig att du inte ville ladda om sidan alls, om det funkar så gör som ovanstående person skrev, går nog snabbast.

Edit2:

Om vi säger att sidan heter personer.php så gör som Compusa skrev.
Länkarna blir personer.php?name=Neela t.ex

I koden ovan ändrar du bara till:

<?php
/* Display requested user information */
$name = $_GET["name"];

$req_user_info = $database->getUserInfo($name);
?>
<table class="content-div" border="0" cellpadding="0" cellspacing="0">
    <tr>
       <td width="141" height="20" valign="top">
          <!-- Name -->
          <b>Name:</b>
       </td>
       <td valign="top">
          <?php echo $req_user_info['name'] ?>
       </td>
    </tr>
    <tr>
        <td height="20" valign="top">
       <!-- Year of Birth -->
       <b>Year of Birth:</b>
        </td>
        <td valign="top">
        <?php echo $req_user_info['birthday'] ?>
        </td>
   </tr>
</table>
CompusaMedlem sedan jan. 20023 327 inlägg
#4

Börja med att göra om detta så att du skriver ut det med hjälp av loop. Dvs hämta alla personerna från din tabell i databasen och loopa ut informationen. Sedan är det bara att göra så som jag skrev i mitt inlägg ovan för att välja vilken information som ska skrivas ut och när den ska göra det.

<td height="25">
Cypher<br>

<?php
/* Display requested user information */

$req_user_info = $database->getUserInfo(cypher);
?>
<table class="content-div" border="0" cellpadding="0" cellspacing="0">
    <tr>
       <td width="141" height="20" valign="top">
          <!-- Name -->
          <b>Name:</b>
       </td>
       <td valign="top">
          <?php echo $req_user_info['name'] ?>
       </td>
    </tr>
    <tr>
        <td height="20" valign="top">
       <!-- Year of Birth -->
       <b>Year of Birth:</b>
        </td>
        <td valign="top">
        <?php echo $req_user_info['birthday'] ?>
        </td>
   </tr>
</table>

Neela<br>
<?php
/* Display requested user information */
$req_user_info = $database->getUserInfo(neela);
?>
<table class="content-div" border="0" cellpadding="0" cellspacing="0">
    <tr>
       <td width="141" height="20" valign="top">
          <?php /* Name */
          echo "<b>Name:</b>"?>
       </td>
       <td valign="top">
          <?php echo $req_user_info['name'] ?>
       </td>
    </tr>
    <tr>
        <td height="20" valign="top">
       <?php /* Year of Birth */
       echo "<b>Year of Birth:</b>" ?>
        </td>
        <td valign="top">
        <?php echo $req_user_info['birthday'] ?>
        </td>
   </tr>
</table>

</td>
CompusaMedlem sedan jan. 20023 327 inlägg
#5

UrMe's lösning bör fungera perfa om det var så du menade? Jag tänkte att du ville ha enligt följande:

// När man klickat på Hans
Hans
-- Mer info
Berry
Bertil
Micke

// När man klickat på Bertil
Hans
Berry
Bertil
-- Mer info
Micke

CypherMedlem sedan mars 200622 inlägg
#6

Det var som Compusa beskriver..
Jag är ganska ny inom php men ska kolla om jag kan lösa detta :)

CypherMedlem sedan mars 200622 inlägg
#7

Okej, har testat mig fram men får det fortfarande inte att fungera. Är nog någonting jag missuppfattat.
Skulle jag göra en if-sats och i så fall kan du ge exempel? som sagt är jag ny inom php.

Det jag gjort hittils:

<td height="25">
   <a href="members.php?name=cypher">Cypher</a><br>
   <?php
      /* Display requested user information */
     $name = $_GET["cypher"];
     $req_user_info = $database->getUserInfo($cypher);
   ?>
<table class="content-div" border="0" cellpadding="0" cellspacing="0">
    <tr>
       <td width="141" height="20" valign="top">
       <b>Name:</b>
       </td>
       <td valign="top">
          <?php echo $req_user_info['name'] ?>
       </td>
    </tr>
    <tr>
        <td height="20" valign="top">
       <!-- Year of Birth -->
       <b>Year of Birth:</b>
        </td>
        <td valign="top">
        <?php echo $req_user_info['birthday'] ?>
        </td>
   </tr>
</table>

Neela<br>
   <a href="members.php?name=neela">Neela</a><br>
   <?php
      /* Display requested user information */
     $name = $_GET["neela"];
     $req_user_info = $database->getUserInfo($neela);
   ?>
<table class="content-div" border="0" cellpadding="0" cellspacing="0">
    <tr>
       <td width="141" height="20" valign="top">
          <b>Name:</b>
       </td>
       <td valign="top">
          <?php echo $req_user_info['name'] ?>
       </td>
    </tr>
    <tr>
        <td height="20" valign="top">
        <b>Year of Birth:</b>
        </td>
        <td valign="top">
        <?php echo $req_user_info['birthday'] ?>
        </td>
   </tr>
</table>

</td>

Nu visas alla tabeller men ingen information.

Jag är tacksam för hjälpen jag kan få.

**EDIT1**
Efter lite sömn jobbar jag fram detta:

<td height="25">
   <a href="members.php?name=Cypher">Cypher</a><br>
   <?php
      /* Display requested user information */
      if($user = ($_GET['user'])){
      $req_user_info = $database->getUserInfo(Cypher);
   ?>
<table class="content-div" border="0" cellpadding="0" cellspacing="0">
    <tr>
       <td width="141" height="20" valign="top">
       <b>Name:</b>
       </td>
       <td valign="top">
          <?php echo $req_user_info['name'] ?>
       </td>
    </tr>
    <tr>
        <td height="20" valign="top">
       <!-- Year of Birth -->
       <b>Year of Birth:</b>
        </td>
        <td valign="top">
        <?php echo $req_user_info['birthday'] ?>
        </td>
   </tr>
</table>
<?php
};
?>
Neela<br>
   <a href="members.php?name=Neela">Neela</a><br>
   <?php
      /* Display requested user information */
      if($user = ($_GET['user'])){
      $req_user_info = $database->getUserInfo(Neela);
   ?>
<table class="content-div" border="0" cellpadding="0" cellspacing="0">
    <tr>
       <td width="141" height="20" valign="top">
          <b>Name:</b>
       </td>
       <td valign="top">
          <?php echo $req_user_info['name'] ?>
       </td>
    </tr>
    <tr>
        <td height="20" valign="top">
        <b>Year of Birth:</b>
        </td>
        <td valign="top">
        <?php echo $req_user_info['birthday'] ?>
        </td>
   </tr>
</table>
<?php
};
?>
</td>

Då händer detta:

// När man klickat på Cypher
Cypher
-- Mer info
Neela
-- Mer info
Bertil
Micke

// När man klickat på Neela
Cypher
-- Mer info
Neela
-- Mer info
Bertil
Micke

aasahMedlem sedan mars 20034 471 inlägg
#8

Jag antar att dina namn finns i någon tabell i en databas? Låt oss kalla den för Namn rätt och slätt.

//Visserligen har du dbanropen i egen fil, men i princip:
<?php 
$sql = "SELECT user, info from Namn";
$res = mysql_query($sql) or die;
while ($row = mysql_fetch_array($res)) {
   echo '<td height="25">
                <a href="members.php?name='.$row["user"].'">'.$row["user"].'</a><br>';
   if (isSet($_GET['user']) && $_GET['user'] == $row["user"])
      echo $row["info"];
   echo '</tr>';
}

Då får du bara ut det namn du valt, om du valt något.

CypherMedlem sedan mars 200622 inlägg
#9

Var i min kod ska jag lägga in detta?
Blev bara väldigt fel när jag försökte..

CompusaMedlem sedan jan. 20023 327 inlägg
#10

Något sådant här kanske... (använder aasahs kod)

<table class="content-div" border="0" cellpadding="0" cellspacing="0">
<?php
$sql = "SELECT user, info from Namn";
$res = mysql_query($sql) or die;

// Loopa ut varje användare som finns i din db-tabell oc
while ($row = mysql_fetch_array($res)) {
   echo '<tr><td height="25">
                <a href="members.php?name='.$row["user"].'">'.$row["user"].'</a><br>';
   // Visa extra info om användaren har klickat på länken
   if (isSet($_GET['user']) && $_GET['user'] == $row["user"])
      echo $row["info"];
   echo '</tr>';
}
?>
</table>

Det du får ändra på är $sql så att denna stämmer överens med hur din databas-tabell ser ut samt $row["someName"] så att dessa mappas mot namnen på dina kolumner i tabellen.

aasahMedlem sedan mars 20034 471 inlägg
#11

Du har ju uppenbarligen en klass som $database refererar till på raden

$req_user_info = $database->getUserInfo(Cypher);

Eftersom du inte visade någon kod för hur den klassen ser ut, gick det inte att göra exemplet riktigt anpassat till din kod.

Du behöver antagligen en funktion i $database som returnerar alla användare i stället för en. Se till att den returnerar $res:t i mitt exempel. Och så ska resten av koden ligga i den fil där du vill ha tabellen.

Och OBS! Compusas råd:

Compusa skrev:

Det du får ändra på är $sql så att denna stämmer överens med hur din databas-tabell ser ut samt $row["someName"] så att dessa mappas mot namnen på dina kolumner i tabellen.

CypherMedlem sedan mars 200622 inlägg
#12

Tack för all hjälp. Men jag fick ett smidigt alternativ från ett annat forum

<?php

echo '<a href="'.$_SERVER['PHP_SELF'].'?cypher">Cypher</a>';
if(isset($_GET['cypher'])) {
echo '<b>Cypher</b><br>'
. '<table class="content-div" border="0" cellpadding="0" cellspacing="0">'
    .'<tr>'
       .'<td width="141" height="20" valign="top">'
          .'<b>Name:</b>'
       .'</td>'
       .'<td valign="top">'
           .$req_user_info['name']
       .'</td>'
    .'</tr>'
    .'<tr>'
        .'<td height="20" valign="top">'
        .'<b>Year of Birth:</b>'
        .'</td>'
        .'<td valign="top">'
        .$req_user_info['birthday']
        .'</td>'
   .'</tr>'
.'</table>';
}
echo '<br><a href="'.$_SERVER['PHP_SELF'].'?neela">Neela</a>';
if(isset($_GET['neela'])) {
echo '<b>Neela</b><br>';
. '<table class="content-div" border="0" cellpadding="0" cellspacing="0">
    .'<tr>'
       .'<td width="141" height="20" valign="top">'
          .'<b>Name:</b>'
       .'</td>'
       .'<td valign="top">'
           .$req_user_info['name']
       .'</td>'
    .'</tr>'
    .'<tr>'
        .'<td height="20" valign="top">'
        .'<b>Year of Birth:</b>'
        .'</td>'
        .'<td valign="top">'
        .$req_user_info['birthday']
        .'</td>'
   .'</tr>'
.'</table>';
}
?>
134 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)