case e file_get_contents

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

danilob

Utente Attivo
3 Feb 2007
124
0
0
PHP:
<?
	
    $query = @mysql_query("SELECT * FROM articoli ORDER BY data desc limit 4") or die (mysql_error());
  while($fetch = @mysql_fetch_array($query))
   {
	   
  $news_id_list = stripslashes($fetch['id_articoli']);
  $news_titolo_list = stripslashes($fetch['titolo_articolo']);
  $news_testo_list = stripslashes($fetch['news_testo']);
  $id_admin_est = stripslashes($fetch['id_admin_est']);
  
 
//modifichiamo la data nel formato europeo dd mm yyyy
  $news_data_list = preg_replace('/^(.{4})-(.{2})-(.{2})$/','$3-$2-$1', stripslashes($fetch['data']));
  
//i titoli delle notizie in home page
		 // echo "<li><a href=\"/Articoli/visual_articoli.php?id_articoli=" .$news_id_list. "\">" .$news_titolo_list. "</a></li>";
	
	
   
   
   ?>
   
   
       <li><a href="?pagina=articoli"><? echo"$news_titolo_list"; ?> </a></li> 
        
	<?
	}
	$pagina = $_GET['pagina'] or $_POST['pagina'] ;

switch($pagina)

{
case 'orari': include('orari_corsi.php');

 break;
 
case 'promozioni': include('Promozioni.php');
 break;
 
case 'Submit': include('login.php');
 break;
 
 case 'articoli': $miastringa = file_get_contents('http://www.newbodycenter.it/Articoli/visual_articoli.php?id_articoli=8');
echo"$miastringa";
 
 
 //include('/Articoli/prova.php');
  //echo "<li><a href=\"/Articoli/visual_articoli.php?id_articoli=" .$news_id_list. "\">" .$news_titolo_list. "</a></li>";
  break;
 
default: include('content2.php');
}

sapet dirmi dove sbaglio...

Non mi passa la variabile $news_id_list:crying:
 
Ultima modifica di un moderatore:
Ultima modifica:
ciao
dici che non ti passa la variabile $news_id_list, dove la usi? nella riga commentata (l'ho decommentata)?
poi non la legge o non la trasmette alla pag visual_articoli.php.
per prima cosa metti un var_dump e posta quello che riporta

PHP:
<?php
$query = mysql_query("SELECT * FROM articoli ORDER BY data desc limit 4") or die (mysql_error());
while($fetch = mysql_fetch_array($query)){
	$news_id_list = $fetch['id_articoli'];// se id è un intero non serve strip
	//****metti qui un var_dup che poi toglierai
	var_dump($fetch['id_articoli']);
	$news_titolo_list = stripslashes($fetch['titolo_articolo']);
	$news_testo_list = stripslashes($fetch['news_testo']);
	$id_admin_est = stripslashes($fetch['id_admin_est']);//id è un intero? se si anche qui non serve strip
	//modifichiamo la data nel formato europeo dd mm yyyy
	$news_data_list = preg_replace('/^(.{4})-(.{2})-(.{2})$/','$3-$2-$1', stripslashes($fetch['data']));
	//i titoli delle notizie in home page
	echo "<li><a href=\"../Articoli/visual_articoli.php?id_articoli=$news_id_list\">$news_titolo_list</a></li>";
	echo "<li><a href=\"?pagina=articoli\">$news_titolo_list</a></li>";
}
$pagina = $_REQUEST['pagina'];
switch($pagina){
	case 'orari': include('orari_corsi.php');
		break;
	case 'promozioni': include('Promozioni.php');
		break;
	case 'Submit': include('login.php');
		break;
	case 'articoli': $miastringa = file_get_contents('http://www.newbodycenter.it/Articoli/visual_articoli.php?id_articoli=8');
		echo"$miastringa";
		//include('/Articoli/prova.php');
		//echo "<li><a href=\"../Articoli/visual_articoli.php?id_articoli=" .$news_id_list. "\">" .$news_titolo_list. "</a></li>";
		break;
	default: include('content2.php');
		break;
} 
?>
p.s.
non usare lo short tag ma <?php
 
eco il risultato:

string(1) "6"
L'esercizio fisico cambia il DNA cellulare
string(1) "8"
Ad un passo dal filmare le proteine?
string(1) "9"
Ecco perchè la marijuana fa male alla memoria
 
inoltre il codice che io vorrei è:

case 'articoli': $miastringa = file_get_contents("http://www.newbodycenter.it/Articoli/visual_articoli.php?id_articoli=".$news_id_list."");
echo"$miastringa";
 
ciao
quindi è li che vorresti la variabile?
se è così metti quei var_dump(), ho un piccolo dubbio
per ora non toglier il primo var_dump
PHP:
<?php
//...................
        break; 
    case 'articoli':
		var_dump($pagina);
		var_dump($news_titolo_list);
		$miastringa = file_get_contents('http://www.newbodycenter.it/Articoli/visual_articoli.php?id_articoli=8'); 
        echo"$miastringa"; 
        //include('/Articoli/prova.php'); 
        //echo "<li><a href=\"../Articoli/visual_articoli.php?id_articoli=" .$news_id_list. "\">" .$news_titolo_list. "</a></li>"; 
        break; 
//...............
?>
e come il solito riporta il risultato
 
ma qui non devo mettere l'8 ma la variabile $news_id_list

mettendo così:

PHP:
case 'articoli':
        var_dump($pagina);
        var_dump($news_titolo_list);
        $miastringa = file_get_contents('http://www.newbodycenter.it/Articoli/visual_articoli.php?id_articoli="$news_id_list"'); 
        echo"$miastringa";

ottengo:
Codice:
string(8) "articoli" string(39) "Allergia e sport: un binomio possibile!"

Secondo me mi lascia l'ultimo id del ciclo while...
 
Ultima modifica di un moderatore:
ciao
scusa ho fatto un errore io nel copia incolla, volevo sapere del $news_id_list
sostituisci
var_dump($news_titolo_list);
con
var_dump($news_id_list);
 
ciao
il tuo ultimo post dopo averlo letto meglio, mi ha rinforzato il dubbio, fai questa prova
nel while metti
$news_id_list[] = $fetch['id_articoli'];
e
$news_titolo_list[] = stripslashes($fetch['titolo_articolo']);
poi nello switch
PHP:
<?php
//.....
case 'articoli':// $miastringa = file_get_contents('http://www.newbodycenter.it/Articoli/visual_articoli.php?id_articoli=8'); 
        //echo"$miastringa"; 
        include('/Articoli/prova.php'); 
		$quanti=count($news_id_list);
		for($k=0;$k<$quanti,$k++){
			echo "<li><a href=\"../Articoli/visual_articoli.php?id_articoli=" .$news_id_list[$k]. "\">" .$news_titolo_list[$k]. "</a></li>"; 
		}
        break; 

//....
?>
dovrebbe visualizzarti tutti gli id che hai estratto col while
 
ciao
hai ragione (non avevo ancora preso il caffè):crying:
correggi
for($k=0;$k<$quanti,$k++){
in
for($k=0;$k<$quanti;$k++){

verifica che non ce ne siano altri
 
riporto il codice completo.

PHP:
<?
include "config/config_db4.php";
include "config/function.inc";

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<head>
<title>newbodycenter.it</title>
<meta http-equiv="content-type"
    content="text/html; charset=utf-8" />
    
<link rel="stylesheet" type="text/css" href="/css/2col.css" />

</head>
<body>
<div id="header">
	<img src="/img_header/logo.jpg" width="76" height="100" alt="Stage &amp; Screen" class="logo" />
	<span class="strapline">newbodycenter.it</span>
</div>

<div id="nav">
	<ul>
    <?  //richiam la funzione per inserire pulsante home se la pagina è diversa da home
	echo pagina_attuale("<li>Torna in Homepage</li>");?>
		<li><a href="?pagina=orari">Orari</a> </li>
		<li><a href="#">Corsi</a></li>
		<li><a href="?pagina=promozioni">Promozioni</a></li>
		<li><a href="#">Newsletter</a></li>
		<li><a href="#">Contatti</a></li>
	</ul>
	<h2>Latest Reviews</h2>
	<ul>
     <!--articoli---------------------- -->
    <?
	
    $query = @mysql_query("SELECT * FROM articoli ORDER BY data desc limit 4") or die (mysql_error());
  while($fetch = @mysql_fetch_array($query))
   {
	$news_id_list = $fetch['id_articoli'];// se id è un intero non serve strip
    //****metti qui un var_dup che poi toglierai
    var_dump($fetch['id_articoli']);   
	 
 
  $news_titolo_list = stripslashes($fetch['titolo_articolo']);
  $news_testo_list = stripslashes($fetch['news_testo']);
  $id_admin_est = stripslashes($fetch['id_admin_est']);
  
 
//modifichiamo la data nel formato europeo dd mm yyyy
  $news_data_list = preg_replace('/^(.{4})-(.{2})-(.{2})$/','$3-$2-$1', stripslashes($fetch['data']));
  
//i titoli delle notizie in home page
	//	 echo "<li><a href=\"/Articoli/visual_articoli.php?id_articoli=" .$news_id_list. "\">" .$news_titolo_list. "</a></li>";
	
	
    
   ?>
   
   
       
         <li><a href="?pagina=articoli"><? echo"$news_titolo_list"; ?> </a></li> 
        
	<?
	
	   }
	?>	
  </ul>
   </div>
   <div id="side1">
	<form method="post" action="?pagina=Submit" id="searchform">
    <h3>Login</h3>
	
		<div>
          <p>
            <label for="password">Username:</label>
            <input type="text" name="Mod_Login" id="Mod_Login" class="txt" /><br /><br />
            <label for="password">Password:</label>
            <input type="password" name="Mod_Pass" id="Mod_Pass" class="txt" />
       
          <p align="center">
            <input type="submit" name="Submit" value="Submit" /></p>
         
		</div>
	</form>	
	<ul>
    <li><a href="#">About Us</a></li>
		<li><a href="#">Recipes</a></li>
		<li><a href="#">Articles</a></li>
		<li><a href="#">Buy Online</a></li>
		<li><a href="#">Contact Us</a></li>
	</ul>	
</div>
 <div id="content">
<?
$pagina = $_REQUEST['pagina']; 
$link= $_REQUEST["$news_id_list"]; 

switch($pagina.$link)

{
case 'orari': include('orari_corsi.php');

 break;
 
case 'promozioni': include('Promozioni.php');
 break;
 
case 'Submit': include('login.php');
 break;
 
//.....
case 'articoli':// $miastringa = file_get_contents('http://www.newbodycenter.it/Articoli/visual_articoli.php?id_articoli=8'); 
        //echo"$miastringa"; 
       
        $quanti=count($news_id_list);
        for($k=0;$k<$quanti;$k++){
            echo "<li><a href=\"../Articoli/visual_articoli.php?id_articoli=" .$news_id_list[$k]. "\">" .$news_titolo_list[$k]. "</a></li>"; 
        }
        break; 

//.... 
 
 
 //include('/Articoli/prova.php');
  //echo "<li><a href=\"/Articoli/visual_articoli.php?id_articoli=" .$news_id_list. "\">" .$news_titolo_list. "</a></li>";
  break;
 
default: include('content2.php');
}

?>	

</div>  
</body>
</html>
 
Ultima modifica di un moderatore:
ciao
scusa ma non capisco se funzia o no.
comunque quello che hai postato prima era il codice che stai usando?
se si ci sono un paio di cose:
1. non hai commentto il var_dump che può dare fastidio nella visualizzazione
2. non hai nel while reso le variabili array ($news_id_list deve diventare $news_id_list[]) che poi usi in seguito nel ciclo for, se nel ciclo for usi altre valore tratte dal while metti anche quelli in array)
PHP:
<?php
//......
while($fetch = @mysql_fetch_array($query)){
	$news_id_list[] = $fetch['id_articoli'];// QUI ARRAY
	//****metti qui un var_dup che poi toglierai
	//var_dump($fetch['id_articoli']);
	$news_titolo_list[] = stripslashes($fetch['titolo_articolo']);// QUI ARRAY
	$news_testo_list = stripslashes($fetch['news_testo']);
	$id_admin_est = stripslashes($fetch['id_admin_est']);
	//modifichiamo la data nel formato europeo dd mm yyyy
	$news_data_list = preg_replace('/^(.{4})-(.{2})-(.{2})$/','$3-$2-$1', stripslashes($fetch['data']));
	//i titoli delle notizie in home page
	//qui non puoi mettere l'array ti conviene ripetere il $fetch[]
	echo "<li><a href=\"/Articoli/visual_articoli.php?id_articoli=" .$fetch['id_articoli']. "\">" .stripslashes($fetch['titolo_articolo']). "</a></li>";
?>
<li><a href="?pagina=articoli"><? echo"$news_titolo_list"; ?> </a></li>
<?php
}
//....
?>
ancora delle piccole osservazioni
ho visto la tua index2.php non usare giustificato ma allinea a Sx è brutto vedere "parola 10 spazi altra parola" poi secondo me sarebbe meglio il size più piccolo.
poi per il forum: possibilmente non "sbrodolare" il codice in quel modo e racchiudilo negli appositi tag (seconda riga della barra di formattazione una delle ultime tre iconcine)
questo per facilitare la lettura
 
non funziona...

C'è un errore qui:

così mi stampa due volte i titoli dal databse e poi su uno mi riporta l'articolo in una nuova pagina (cosa che io non vorrei) sul'altro mi riporta un'altro lenco nel div di fianco ma io vorrei che mi riportasse l'articolo....

http://www.newbodycenter.it/index2.php
 
Facciamo un passo indietro e ricominciamo da capo. Ho sistemato il codice:
PHP:
<?php
require_once __DIR__ . 'config/config_db4.php';
require_once __DIR__ . 'config/function.inc';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
    <head>
        <title>newbodycenter.it</title>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <link rel="stylesheet" type="text/css" href="/css/2col.css" />
    </head>

    <body>
        <div id="header">
            <img src="/img_header/logo.jpg" width="76" height="100" alt="Stage &amp; Screen" class="logo" />
            <span class="strapline">newbodycenter.it</span>
        </div>

        <div id="nav">
            <ul>
                <?php
                echo pagina_attuale('<li>Torna in Homepage</li>');
                ?>
                <li><a href="?pagina=orari">Orari</a> </li>
                <li><a href="#">Corsi</a></li>
                <li><a href="?pagina=promozioni">Promozioni</a></li>
                <li><a href="#">Newsletter</a></li>
                <li><a href="#">Contatti</a></li>
            </ul>

            <h2>Latest Reviews</h2>
            <ul>
                <?php
                $query = mysql_query('SELECT * FROM articoli ORDER BY data DESC LIMIT 4') or die (mysql_error());

                while ($row = mysql_fetch_array($query)) {
                    $row = array_map('stripslashes', $row);
                    $row['data'] = preg_replace('/^(.{4})-(.{2})-(.{2})$/','$3-$2-$1', $row['data_articolo']);

                    echo "<li><a href=\"?pagina=articoli\">{$row['titolo_articolo']}</a></li>";
                }
                ?>
            </ul>
        </div>

        <div id="side1">
            <form method="post" action="?pagina=submit" id="searchform">
                <h3>Login</h3>
                <div>
                    <p>
                        <label for="password">Username:</label>
                        <input type="text" name="Mod_Login" id="Mod_Login" class="txt" />
                    </p>

                    <p>
                        <label for="password">Password:</label>
                        <input type="password" name="Mod_Pass" id="Mod_Pass" class="txt" />
                    </p>

                    <p align="center">
                        <input type="submit" name="Submit" value="Submit" />
                    </p>
                </div>
            </form>

            <ul>
                <li><a href="#">About Us</a></li>
                <li><a href="#">Recipes</a></li>
                <li><a href="#">Articles</a></li>
                <li><a href="#">Buy Online</a></li>
                <li><a href="#">Contact Us</a></li>
            </ul>
        </div>

        <div id="content">
            <?php
            // ...
            ?>
        </div>
    </body>
</html>
E ho scritto alcuni consigli per migliorare il codice:
  • Non mischiare PHP e HTML: usa un template engine.
  • Non usare l'abbreviazione <?.
  • Usa i singoli apici dove i doppi non sono necessari.
  • Indenta correttamente il codice.
  • Non usare @ per sopprimere gli errori.
  • Scrivi le keyword SQL in maiuscolo.
  • Non chiudere il tag PHP per inserire una sola riga di HTML.
  • Usa <p> invece di <br>.

Poi c'è una cosa che non capisco (ed è il motivo per cui ho eliminato il codice in content): nella pagina visualizzi una lista dei 4 ultimi articoli, e fai in modo che i titoli puntino al link ?pagina=articoli. Perché? Non dovrebbero puntare, invece, alla pagina in cui si visualizza l'articolo completo?
 
ciao Alessandro....

la pagina la trovi qui: http://www.newbodycenter.it/index2.php

Io vorrei che cliccando sull'articolo di sx questo comparisse del <DIV> di destra e non in una sngola pagina...

Il codice che mi hai riscritto non funziona verifica al link di cui sopra..

grazie
 
in pratica dopo il ciclo while non riesco a portarmi fino al cse la variabile $news_id_list
 
ho risistemato il codice ma alla fine mi riporta solo l'ultimo id nella pagina visual
_articoli.php
 

Discussioni simili