integrare php/mysql con pagine html/css

vash1981

Nuovo Utente
22 Feb 2013
6
0
0
Ciao ragazzi sono nuovo del forum e prima di postare ho cercato in altre discussioni ma non sono riuscito a risolvere il mio problema.
Veniamo al dunque: sto studiando php/mysql da qualche mese e qualche giorno fà mi sono imbattuto in un tutorial per costruire un blog(preso proprio da questo sito). Il tutto funziona molto bene anche l'integrazione con mysql. Avevo deciso quindi di scaricare un semplicissimo template html/css e farlo interagire con il mio script. Il problema è che purtroppo non ci sono riuscito. Ho unito le 2 pagine e ho messo codice php dove c'era il template ma nada. Scusate so che non sono stato chiarissimo ma davvero non so come spiegarvelo meglio. Domanda, si può fare questa cosa, o esistono metodi più semplici ? Grazie mille :byebye:
 
ciao
un piccolo dubbio
hai preso un template html e ci hai inserito dentro il codice php (cosa fattibilissima), però devi stare attento a quando salvi la pagina perchè se la salvi
(metto un nome a caso)
template.html
quando vai a visualizzarla, diciamo, che vedi un ca..no.
devi salvare la pagina
template.php
(oppure salvala pure .html, ma poi rinominala .php)
 
si si poi salvato il tutto .php. La cosa funziona in parte. Se agisco in un modo mi visualizza tutti i post ma sballa l'impaginazione cioè nn rispetta i div della pagina. Se invece metto codice php nei tag html mi visualizza in modo corretto ma mi estrae solo un post dal db......vorrei capire qual'è e se c'è un modo corretto......
 
questa è la mia index.php con il primo post con i tag php e altri 2 post di template. Così com'e mi visualizza solo un post dal db e non mi funziona il link alla pagina dell'intero articolo:
PHP:
 <?php include('blocks/header.php');?>	 
	<!-- end #header -->
	
	 <div id="page">
		<div id="content">
		<?
// includiamo il file di configurazione
@include "config.php";

// includiamo la pagina contenente il codice per la creazione delle anteprime
@require "anteprima.php";

// estraiamo i dati relativi agli articoli dalla tabella
$sql = "SELECT * FROM articoli ORDER BY art_data DESC";
$query = @mysql_query($sql) or die (mysql_error());

//verifichiamo che siano presenti records
if(mysql_num_rows($query) > 0){
  // se la tabella contiene records mostriamo tutti gli articoli attraverso un ciclo
  while($row = mysql_fetch_array($query)){
    $art_id = $row['art_id'];
    $autore = stripslashes($row['art_autore']);
    $titolo = stripslashes($row['art_titolo']);
    $data = $row['art_data'];
    $articolo = stripslashes($row['art_articolo']);
   
    //valorizziamo una variabili con il link all'intero articolo
    $link = " ..<br><a href=\"articolo.php?id=$art_id\">Leggi tutto</a>";

    //echo "<h2>".$titolo."</h2>";
   
    // creaimo l'anteprima che mostra le prime 30 parole di ogni singolo articolo
    // per farlo utilizzo una funzione che vi presenterò più avanti
    //echo @anteprima($articolo, 30, $link); 
    //echo "<br><br>";
   
    // formattiamo la data nel formato europeo
    $data = preg_replace('/^(.{4})-(.{2})-(.{2})$/','$3-$2-$1', $data);

    // stampiamo una serie di informazioni
    //echo  "Scritto da <b>". $autore . "</b>";
    //echo  "| Articolo postato il <b>" . $data . "</b>";
    //echo  "| Commenti: "; 
  
    // mostriamo il numero di commenti relativi ad ogni articolo
    $conta = "SELECT COUNT(com_id) as conta from commenti WHERE com_art = '$art_id'";
    $conto = @mysql_query ($conta);
    $tot = @mysql_fetch_array ($conto);
    //echo $sum2 = $tot['conta'];
    //echo "<hr style='overflow:hidden;margin-botton:30px; border-bottom: 1px outset #E7EBED;'>";
     
  } 
}else{
  // se in tabella non ci sono records...
  //echo "Nessun articolo presente.";
}

?>
 
			<div class="post">
				<h2 class="title"><a href="index.php"><?php print $titolo; ?> </a></h2>
				<p class="meta"><span class="date"><?php print $data; ?></span><span class="posted">Posted by <a href="#"><?php print $autore; ?></a></span></p>
				<div style="clear: both;">&nbsp;</div>
				<div class="entry">
					<p><?php print @anteprima($articolo, 50, $link);  ?></p>
					<p class="links"><a href="#" class="more">Read More</a><a href="articolo.php?id=$art_id" title="b0x" class="comments">Comments<?php print $sum2; ?></a></p>
				</div>
			</div>
			<div class="post">
				<h2 class="title"><a href="#">Lorem ipsum sed aliquam</a></h2>
				<p class="meta"><span class="date">August 20, 2012</span><span class="posted">Posted by <a href="#">Someone</a></span></p>
				<div style="clear: both;">&nbsp;</div>
				<div class="entry">
					<p>Sed lacus. Donec lectus. Nullam pretium nibh ut turpis. Nam bibendum. In nulla tortor, elementum vel, tempor at, varius non, purus. Mauris vitae nisl nec metus placerat consectetuer. Donec ipsum. Proin imperdiet est. Phasellus <a href="#">dapibus semper urna</a>. Pellentesque ornare, orci in consectetuer hendrerit, urna elit eleifend nunc, ut consectetuer nisl felis ac diam. Etiam non felis. Donec ut ante. In id eros. Suspendisse lacus turpis, cursus egestas at sem.  Mauris quam enim, molestie in, rhoncus ut, lobortis a, est.</p>
					<p class="links"><a href="#" class="more">Read More</a><a href="#" title="b0x" class="comments">Comments</a></p>
				</div>
			</div>
			 
			<div style="clear: both;">&nbsp;</div>
		</div>
		<!-- end #content -->
	<?php include('blocks/sidebar.php');?>	 
		<!-- end #sidebar -->
	<?php include('blocks/footer.php');?>	 	
<!-- end #footer -->
</body>
</html>
 
Ultima modifica di un moderatore:
ciao
per forza ti mostra un solo post in pratica l'ultimo.
hai messo la visualizzazione fuori dal while.
non ho guardato tutto con attenzione ma ti faccio due piccoli esempi da cui immagino che capisca (uso il for ma il concetto è lo stesso)
PHP:
<?php
//tu fai così
for($k=0; $k<5;$k++){//questo rappresenta il while
	$stampa="stampo $k<br />";
}
echo $stampa;//unico output: stampo 4
?>
PHP:
<?php
//mentre dovresti fare
for($k=0; $k<5;$k++){//questo rappresenta il while
	$stampa="stampo $k<br />";
	echo $stampa;//5 output: stampo 0 stampo 1 ... stampo 4 (andando a capo s'intende)
}
?>

p.s.
usa l'ultima iconcina PHP, non CODE
 
Grazie del consiglio, l'avevo sottovalutato...ho provato a mettere i tag html nel codice php......ma credo ci sia qualche problema con i div, mi stampa tutti i post dal db come da template originale ma la sidebar mela mette tutta in basso.....qualche consiglio......e grazie ancora x l'interessamento.

PHP:
<?php include('blocks/header.php');?>	 
	<!-- end #header -->
	
	 <div id="page">
		<div id="content">
		<?
 
@include "config.php";
@require "anteprima.php";
$sql = "SELECT * FROM articoli ORDER BY art_data DESC";
$query = @mysql_query($sql) or die (mysql_error());
if(mysql_num_rows($query) > 0){
  // se la tabella contiene records mostriamo tutti gli articoli attraverso un ciclo
  while($row = mysql_fetch_array($query)){
    $art_id = $row['art_id'];
    $autore = stripslashes($row['art_autore']);
    $titolo = stripslashes($row['art_titolo']);
    $data = $row['art_data'];
    $articolo = stripslashes($row['art_articolo']);
   echo "<div class='post'>";
     
    $link = "<p class='links'><a href='articolo.php?id=$art_id' class='more'>Read More</a>";

     echo "<h2 class='title'><a href='articolo.php?id=$art_id'>$titolo</a></h2>";

      $ant = @anteprima($articolo, 30, $link); 
     
    echo "<div style='clear: both;'>&nbsp;</div>";
	echo "<div class='entry'>";
    echo "<div style='clear: both;'>&nbsp;</div><div class='entry'><p>$ant</p>";
   
    // formattiamo la data nel formato europeo
    $data = preg_replace('/^(.{4})-(.{2})-(.{2})$/','$3-$2-$1', $data);

     
    echo "<p><span class='posted'>Posted by $autore</a></span></p>";
    
    echo "<p class='meta'><span class='date'> $data </span>";
     
    echo "<p class='links' title='b0x' class='comments'>Comments</a></p>";
   
     
    $conta = "SELECT COUNT(com_id) as conta from commenti WHERE com_art = '$art_id'";
    $conto = @mysql_query ($conta);
    $tot = @mysql_fetch_array ($conto);
    echo $sum2 = $tot['conta'];
    
    echo "</div>";
	echo "</div>";
	echo "<div style='clear: both;'>&nbsp;</div>";
	echo "</div>";

} 
}else{
  // se in tabella non ci sono records...
  //echo "Nessun articolo presente.";
}

?>
 
		
		
		
		<!-- end #content -->
	<?php include('blocks/sidebar.php');?>	 
		<!-- end #sidebar -->
	<?php include('blocks/footer.php');?>	 	
<!-- end #footer -->
</body>
</html>

Per il "ps" che mi hai mandato intendevi di mettere in codice tra i tag php ?
 
ciao
fai uno scren e postalo per capire il problema, anche se poi la sezione adatta sarebbe html e css.
per il ps intendevo che quando posti il codice devi metterlo tra i tag (metto gli spazi per non farlo generare) [ PHP ] e [ / PHP ] come vedi racchiudendolo, oltre a facilitare la lettura, puo evidenziare anche qualche errore.
es se un echo viene rossa echo al posto di echo con molta probabilità ti sei dimenticato di chiudere un apice
 
Si hai ragione credo sia più un problema di front end perchè mi ritrovo la sidebar dopo i post in fondo alla pagina...:confused: Schermata 2013-02-22 a 17.20.25.png
 
Ultima modifica:

Discussioni simili