Problema news sotto tipolo

  • Creatore Discussione Creatore Discussione danilob
  • Data di inizio Data di inizio

danilob

Utente Attivo
3 Feb 2007
124
0
0
ciao a tutti, ho un problemino che non riesco a risolvere..

Ho inserito un sistema di news nel mio sito e all'interno della stessa pagina se clicco sulla news questa mi compare sotto l'elenco delle 5 news che ho deciso di mettere. Ora io vorrei fare in modo che la news mi corrispondesse sotto a quella cliccata e non in fondo all'elenco.. Mi spiego con un esempio:

______________________
questo è quello che vorrei
______________________

- News n. 1
_news 2
-news 3
l a news 3 contiene questo testo ecc..........................................
...........................................................................................
-news4
-news 5
______________________
questo è quello che sono riuscito a fare
______________________

- News n. 1
_news 2
-news 3
-news4
-news 5

news 3 contiene questo testo ecc..........................................
...........................................................................................
 
Faccio 2 estrazioni, penso si potrebbe semplificare e inoltre mi estrae le gare nel 2 metodo....

______________________________________


<?
session_start();
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Boves Run</title>
<link href="css/SetCss.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
.Stile1 {font-size: large}
-->
</style>
</head>

<body>

<table width="780" border="0" align="center" cellpadding="0" cellspacing="0" class="sfondotabella2">
<tr>
<td colspan="3"><?
include 'alto.php';?></td>
</tr>
<tr>
<td colspan="3" class="Testo_Maiuscolo_tabelle Stile1"><div align="center">Prossime gare in programma </div></td>
</tr>
<tr>
<td colspan="3"><span class="Testo_news">
<?

include "config/connessione.php";

//numero massimo di record da stampare per pagina
$max_row=5;

//contiamo i record
$contatore = @mysql_query("SELECT COUNT(*) FROM gare") or die (mysql_error());
$n_row = @mysql_fetch_array($contatore) or die (mysql_error());

//in caso di assenza di record..
if ($n_row[0] == '0')
{
echo "Non sono state ancora inserite news.";
@exit;
}else{

//calcolo delle pagine da stampare

$pagine_totali = ceil($n_row[0]/$max_row);
if (!isset($_GET['n_pagina']))
{
$pag_visualizzata = 1;
}else{
$pag_visualizzata = (int)$_GET['n_pagina'];
}
$show = ($pag_visualizzata - 1) * $max_row;
}
echo "<ul>";

$query = @mysql_query("SELECT * FROM gare ORDER BY data desc LIMIT $show,$max_row") or die (mysql_error());
while ($fetch=@mysql_fetch_array($query))
{
$id_gare = stripslashes($fetch['id']);
$data_gara=stripslashes($fetch['data']);
$nome_gara=stripslashes($fetch['nome_evento']);
$luogo_gara=stripslashes($fetch['luogo']);
$regione_gara=stripslashes($fetch['regione']);
$provincia_gara=stripslashes($fetch['provincia']);
$tipologia_gara=stripslashes($fetch['tipologia']);
$distanza_gara=stripslashes($fetch['distanza']);
$orario_gara=stripslashes($fetch['orario']);
$indirizzo_gara=stripslashes($fetch['indirizzo']);
$telefono_gara=stripslashes($fetch['telefono']);
$sito_gara=stripslashes($fetch['sito_web']);
$email_gara=stripslashes($fetch['email']);
$costo_gara=stripslashes($fetch['costo']);
$scadenza_iscr_gara=stripslashes($fetch['termine_iscrizione']);
$note_gara=stripslashes($fetch['news_titolo']);
//modifichiamo la data nel formato europeo dd mm yyyy
$data_gara = preg_replace('/^(.{4})-(.{2})-(.{2})$/','$3-$2-$1', stripslashes($fetch['data']));

//stampa dei record
echo "<li><a href=\"all_visual_gare2.php?id=" .$id_gare. "\" class=Testo_news> ".$data_gara ." &nbsp; ". $nome_gara. "</a></li></span><br>";
}


$pag = '';
for($n_pagina = 1; $n_pagina <= $pagine_totali; $n_pagina++) {
if($n_pagina == $pag_visualizzata) {
$pag.= "<span class=Testo_news><strong>$n_pagina</strong></span>";
}else{
$pag.= "<a href=\"?n_pagina=$n_pagina\">$n_pagina</a> ";

}
}
include("config/navigazione.php");


if (isset($_GET['id']))
{
$id_gare = $_GET['id'];

//visualizziamo la news corrispondente all'id inviato
$query = @mysql_query("SELECT data,nome_evento,luogo, regione, provincia, tipologia, distanza, orario, indirizzo, telefono, sito_web, email, costo, termine_iscrizione, note FROM gare WHERE id='$id_gare'") or die (mysql_error());
$fetch = @mysql_fetch_array($query) or die (mysql_error());
$id_gare = stripslashes($fetch['id']);
$data_gara=stripslashes($fetch['data']);
$nome_gara=stripslashes($fetch['nome_evento']);
$luogo_gara=stripslashes($fetch['luogo']);
$regione_gara=stripslashes($fetch['regione']);
$provincia_gara=stripslashes($fetch['provincia']);
$tipologia_gara=stripslashes($fetch['tipologia']);
$distanza_gara=stripslashes($fetch['distanza']);
$orario_gara=stripslashes($fetch['orario']);
$indirizzo_gara=stripslashes($fetch['indirizzo']);
$telefono_gara=stripslashes($fetch['telefono']);
$sito_gara=stripslashes($fetch['sito_web']);
$email_gara=stripslashes($fetch['email']);
$costo_gara=stripslashes($fetch['costo']);
$scadenza_iscr_gara=stripslashes($fetch['termine_iscrizione']);
$note_gara=stripslashes($fetch['news_titolo']);
$news_titolo = stripslashes($fetch['note']);
//modifichiamo la data nel formato europeo dd mm yyyy
$data_gara = preg_replace('/^(.{4})-(.{2})-(.{2})$/','$3-$2-$1', stripslashes($fetch['data']));

//stampa dei record



?>
</span></td>
</tr>

<tr>
<td colspan="3" class="Testo_Maiuscolo_tabelle Stile1"><div align="center">DETTAGLIO GARA SELEZIONATA </div></td>
</tr>
<tr>
<td colspan="3" class="testo"><?
echo "<p align=center class=Titolo_Notizie>" .$nome_gara. "</p>";?></td>
</tr>
<tr>
<td width="130" class="testo"><div align="right">Data gara:: </div></td>
<td width="19">&nbsp;</td>
<td width="645"><?
echo "<p align=left class=testo>" .$data_gara. "</p>";?></td>
</tr>

<tr>
<td class="testo"><div align="right">Luogo:</div></td>
<td>&nbsp;</td>
<td><?
echo "<p align=left class=testo>" .$luogo_gara. "</p>";?></td>
</tr>
<tr>
<td class="testo"><div align="right">Regione:</div></td>
<td>&nbsp;</td>
<td><?
echo "<p align=left class=testo>" .$regione_gara. "</p>";?></td>
</tr>
<tr>
<td class="testo"><div align="right">Provincia:</div></td>
<td>&nbsp;</td>
<td><?
echo "<p align=left class=testo>" .$provincia_gara. "</p>";?></td>
</tr><tr>
<td class="testo"><div align="right">Tipologia:</div></td>
<td>&nbsp;</td>
<td><?
echo "<p align=left class=testo>" .$tipologia_gara. "</p>";?></td>
</tr><tr>
<td class="testo"><div align="right">Distanza:</div></td>
<td>&nbsp;</td>
<td><?
echo "<p align=left class=testo>" .$distanza_gara. "</p>";?></td>
</tr><tr>
<td class="testo"><div align="right">Orario:</div></td>
<td>&nbsp;</td>
<td><?
echo "<p align=left class=testo>" .$orario_gara. "</p>";?></td>
</tr><tr>
<td class="testo"><div align="right">Indirizzo:</div></td>
<td>&nbsp;</td>
<td><?
echo "<p align=left class=testo>" .$indirizzo_gara. "</p>";?></td>
</tr><tr>
<td class="testo"><div align="right">Telefono:</div></td>
<td>&nbsp;</td>
<td><?
echo "<p align=left class=testo>" .$telefono_gara. "</p>";?></td>
</tr>
<tr>
<td class="testo"><div align="right">Sito internet: </div></td>
<td>&nbsp;</td>
<td><?
echo "<p class=testoRientrato><b><a href=$sito_gara><b>$sito_gara</b></p></a></p>"?></td>
</tr>
<tr>
<td class="testo"><div align="right">Email:</div></td>
<td>&nbsp;</td>
<td><?
echo "<p class=testoRientrato><b><a href=mailto:$email_gara>$email_gara</a></b></p>"?></td>
</tr>
<tr>
<td class="testo"><div align="right">Costo:</div></td>
<td>&nbsp;</td>
<td><?
echo "<p align=left class=testo>" .$costo_gara. "</p>";?></td>
</tr> <tr>
<td class="testo"><div align="right">Scadenza iscrizione: </div></td>
<td>&nbsp;</td>
<td><?
echo "<p align=left class=testo>" .$scadenza_iscr_gara. "</p>";?></td>
</tr> <tr>
<td class="testo"><div align="right">Note:</div></td>
<td>&nbsp;</td>
<td><?
echo "<p align=left class=testo>" .$note_gara. "</p>";?></td>
</tr>
<tr>
<td> <div align="right"></div>
<td> </tr> <tr>
<td><div align="right"></div></td>
<td>&nbsp;</td>
<td><strong>
<?
echo "<div align=right><a href=javascript:history.go(-1) class=testo>Torna Indietro</a>";;?>
</strong></td>
</tr>
</table>
<?
}
?>
<p>&nbsp;</p>
</body>
</html>
 
Credo che il tuo problema sia facilmente risolvibile con un po' di JavaScript.

Potresti scrivere la news completa di testo, ma con il testo racchiuso, ad esempio, in un DIV con style="display: none;".
In questo modo si vedono solo i titoli delle notizie.

Il titolo lo fai diventare un link ad una funzione JavaScript che alterna lo stile del DIV contenente il testo della notizia da visibile a nascosto.

Questo è un breve esempio:

<html>
<head>
<title>Show/Hide onClick</title>

<script>
function toggleDisplay(anchor)
{
div = anchor.nextSibling.nextSibling.nextSibling;
//alert(div);
if(div.style.display == 'none')
div.style.display = '';
else
div.style.display = 'none';
}
</script>
</head>

<body>

<a href="#" onClick="toggleDisplay(this); return false;">Titolo notizia</a><br/>
<div style="display:none">
Testo notizia 1

</div>

<a href="#" onClick="toggleDisplay(this); return false;">Titolo notizia 2</a><br/>
<div style="display:none">
Testo notizia 2
</div>

</body>
</html>

Spero ti sia utile
 
io vorrei farlo in php anche xchè di java non sò nulla mentre di php qualcosa mastico e stò cercando di imparare...
 
Se provi a vedere i link della pagina che hai postato, noterai che puntano ad una funzione JavaScript... probabilmente molto simile all'esempio che ti ho riportato io.

Inoltre permettimi una considerazione personale:
quando qualche mese fa mi sono trovato a dover implementare questa funzionalità in un sito, anch'io come te ne sapevo ben poco di JavaScript (non Java, c'è una bella differenza...). Ho impiegato del tempo per fare una cosa in realtà molto semplice, ma non è stato tempo sprecato:

HO IMPARATO UNA COSA NUOVA!!!

Se vuoi provare la strada del JavaScript, posso commentarti un po' il codice, in modo da renderlo più chiaro.
 
te ne sarei grato xchè non sò veramente nulla di java anche se mi piacerebbe impararlo xchè mi rendo conto della sua potenza..
grazie
 
<html>
<head>
<title>Show/Hide onClick</title>

<script>
// Dichiarazione della funzione per visualizzare/nascondere il testo
// Quando la funzione viene chiamata cliccando sul titolo, viene passato
// come parametro 'this', che identifica l'elemento stesso (in questo caso
// il tag 'A'

function toggleDisplay(anchor)
{
// adesso effettuo la ricerca dell'elemento DIV che racchiude il testo
// della notizia. Per far questo parto dall'elemento 'anchor' passato
// come parametro e con nextSibling passo in rassegna i 'fratelli' fino
// ad arrivare al DIV
div = anchor.nextSibling.nextSibling.nextSibling;
// controllo se nello stile 'display' è settato a 'none' (e quindi il testo
// non è visibile)
if(div.style.display == 'none')
// lo svuoto in modo da visualizzare il testo
div.style.display = '';
// altrimenti
else
// lo imposto a 'none' in modo da nasconderlo
div.style.display = 'none';
}
</script>
</head>

<body>

// Sull'evento onClick di questo link viene richiamata la funzione
// JavaScript di cui sopra, passando come parametro la parola
// chiave 'this', che identifica l'elemento su cui ho cliccato.
<a href="#" onClick="toggleDisplay(this); return false;">Titolo notizia</a><br/>
<div style="display:none">
Testo notizia 1

</div>

<a href="#" onClick="toggleDisplay(this); return false;">Titolo notizia 2</a><br/>
<div style="display:none">
Testo notizia 2
</div>

</body>
</html>

Per quanto riguarda il DOM (che credo sia la parte più ostica), dai
un'occhiata qui.
 

Discussioni simili