funzione javascript all'interno di un codice php

  • Creatore Discussione Creatore Discussione fabio97
  • Data di inizio Data di inizio

fabio97

Nuovo Utente
19 Giu 2013
24
0
0
Buongiorno! Volevo creare un forum in cui alcuni utenti inseriscono domande e altri utenti possono rispondere.
In particolare l'utente inserisce titolo e testo di una domanda e viene riportato in una pagina in cui visualizza il suo nome, titolo e ora di cui ha scritto la domanda.
Ad esempio.
L'utente di nome Giuseppe scrive in due text box:
Titolo: prova
Testo: sto facendo una prova
Poi clicca su invia (submit) e viene reindirizzato a una pagina in cui visualizza:
Nome: Giuseppe Titolo: prova Data e ora: 19-06-13 18:23:30

Fin qui tutto bene ma poi iniziano i problemi..
Prova è un link (< a href = "….">prova</a>) quindi se l'utente clicca su prova dovrebbe venire rimandato in una pagina in cui visualizza il titolo e il testo e in questa stessa pagina altri utenti possono rispondere alla domanda.
Ma non accade questo in quanto la pagina che visualizza è bianca.. quindi ho sicuramente sbagliato qualcosa nel codice (ho utilizzato anche le sessioni e funzioni javascript) ma non riesco a capire cose c'è che non funziona.

PHP:
<div class="domande">
		<p style="text-align: center"><b><u>Domande? Chiedi ogni cosa! <a href="http://localhost:8888/indice/topic.php">Clicca qui!</a></u></b></p>
		
		
		<?php
		
		//crerare sessione
		session_start();
				
		//controllo se nel database sono presenti delle domande
		$conn=mysql_connect('localhost', 'root', 'root') or die (mysql_error());
		mysql_select_db('topic', $conn) or die (mysql_error());
		$controlloconta=mysql_query("SELECT * FROM topic ") or die (mysql_error());
		
		//creo funzione onclick javascript
		?>
		<script type="application/x-javascript"><![CDATA[
			function memorizzazione () {
				$_SESSION['memoria'] = $row[titolo];
				return $_SESSION['memoria'];
			}
		//]]>
		</script>	
			
		<?php
		if($controlloconta>0){
		
			while($row=mysql_fetch_array($controlloconta)) 
			{
				echo "<b><br>Nome: </b>".$row[nome];
				echo "<b> Titolo: </b>"."<a href = 'http://localhost:8888/indice/arearispostetopic.php' title = '$row[titolo]' onclick = 'javascript: memorizzazione ()'>".$row[titolo]."</a>";
				echo "<b> Data e ora: </b>".$row[ora];
			}
			
		}
		?>
	</div>

PHP:
<div class="arearisposte">
            <?php
                
                session_start();
                
                //prendo titolo dal database	
		$conn=mysql_connect('localhost', 'root', 'root') or die (mysql_error());
		mysql_select_db('topic', $conn) or die (mysql_error());
                $memoria = memorizzazione ();
		$controlloconta=mysql_query("SELECT id,titolo,testo,ora FROM topic WHERE titolo = $memoria") or die (mysql_error());
		
		if ($controlloconta>0) {
		
			while($row=mysql_fetch_array($controlloconta)) 
			{
				echo "<b> Titolo: </b>".$row[titolo];
                                echo "Testo: ".$row[testo];
			}
			
		}
		?>
		<p style="text-align: center"> </p>
		
		
	</div>
 
ciao
non ho guardato bene, ma prima di tutto ricordati che la session_start deve essere la prima istruzione, prima di qualsiasi output html
e per uotput si intende anche uno spazio. correggi così
PHP:
<?php
session_start();
?>
<!-- eccetera altro html e/o php-->
<!DOCTYPE html>
<!-- eccetera altro html e/o php-->
 
Ho corretto come mi hai detto ma ora visualizzo lo stesso la pagina in bianco e non il titolo e il testo della domanda dell'utente.
 
Ho provato a mettere il codice su altervista e mi dà il seguente errore:
Fatal error: Call to undefined function memorizzazione() in /membri/photovideomovie/php/NuovaCartella/sito/arearispostetopic.php on line 123
Quindi significa che la funzione memorizzazione () non è specificata, ma il fatto è che tale funzione è specificata in un altro file php.
Perciò come devo fare per richiamare una funzione da un file php che ho scritto in un altro file php??
Grazie!
 
ciao
guarda che php NON legge js
php viene interpretato sul server e cerca la
PHP:
<?php
function memorizzazione (){
    //..........
}
?>
non trovandola ti da quell'errore
 
ciao
a che ne so io non puoi, salvo forse ricorrendo a ajax e/o jquery ma di cui non so dirti.
e se ci pensi è logico che sia così, php è lato server, js lato client
cioè puoi passare del php a js, ma non js a php
 
Ah ok grazie e non si può creare una funzione php ma che viene richiamata con un onclcick?
Intendo una funzione onclick ma in php e non js
 
Ho provato a modificare i due file utilizzando Jquery e Ajax.
Mi potreste, gentilmente e per favore, aiutare a mettere a posto i seguenti codici? Grazie

Codice seziondedomande.php
PHP:
<html>
<head>
	<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
	<title>Sezione domande</title>
</head>
<body>
        <div class="domande">
		<p style="text-align: center"><b><u>Domande? Chiedi ogni cosa! <a href="http://localhost:8888/indice/topic.php">Clicca qui!</a>   </u></b></p>
		
		
		<?php
				
		//controllo se nel database sono presenti delle domande
		$conn=mysql_connect('localhost', 'root', 'root') or die (mysql_error());
		mysql_select_db('topic', $conn) or die (mysql_error());
		$controlloconta=mysql_query("SELECT * FROM topic ") or die (mysql_error());
		
		if($controlloconta>0){
		
			while($row=mysql_fetch_array($controlloconta)) 
			{
				echo "<b><br>Nome: </b>".$row[nome];
				echo "<b> Titolo: </b>"."<a href = 'http://localhost:8888/indice/arearispostetopic.php' name = 'title' title = '$row[titolo]'>".$row[titolo]."</a>";
				echo "<b> Data e ora: </b>".$row[ora];
			}
			
		}
		?>
	</div>
</body>
</html>
Codice arearipostetopic.php
PHP:
<html>
<head>
        <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
        <div class="arearisposte">
            <script type="application/x-javascript"><![CDATA[
		$(document).ready(function() {
                    $("#a").click(function(){
                        $.ajax ({
                            url: 'http://localhost:8888/indiceseziondedomande.php',
                            success: function (data) {
                                $memoria = val(data);
                            }
                        });
                    });
		});
	    //]]>
	    </script>
            
            <?php                
                //prendo titolo dal database	
		$conn=mysql_connect('localhost', 'root', 'root') or die (mysql_error());
		mysql_select_db('topic', $conn) or die (mysql_error());
                //$memoria = memorizzazione ();
		$controlloconta=mysql_query("SELECT id,titolo,testo,ora FROM topic WHERE titolo = $memoria") or die (mysql_error());
		
		if ($controlloconta>0) {
		
			while($row=mysql_fetch_array($controlloconta)) 
			{
				echo "<b> Titolo: </b>".$row[titolo];
                                echo "Testo: ".$row[testo];
			}
			
		}
		?>		
		
	</div>
</body>
</html>
 
cioè io non capisco dove sia il tuo problema? il titolo nome data e ora devono essere della persona che ha messo in memoria i dati nel db? Oppure nome titolo ora e data deve essere visibile a tutti cliccando un link? Io non ho capito bene quello che vuoi fare... Te lo chiedo perchè ho l'impressione che tu ti stia fasciando la testa. (perchè vuoi usare js che è una programmazione lato client con il php lato server?)
 
Ultima modifica:
No allora mi sono spiegato male io..
Ho due pagine php: una è quella con <div class = "domande">...</div>
L'altra con <div class = "arearisposte"> ... </div>
All'interno della prima TUTTI devono visualizzare nome titolo ora
Poi se un utente clicca su titolo (è un link! <a href="http://........">titolo</a> viene rimandato nella seconda pagina in cui visualizza il testo della domanda con il titolo a cui a cliccato!
Quindi per fare ciò volevo usare js in quanto ho bisogno di creare un evento onclick poichè l'utente viene rimandato nell'altra pagina solo quando clicca su titolo!
 
io vedrei una cosa cosi lancio l'idea:

where prendo tutti i valori nel db delle domande già risposte dentro al ciclo metterei <a href=secondapagina.php?id=valore della domanda> titolo</a> eccetera


se clicca titolo nella seconda pagina avrai un $_GET[id] con un valore che associato se lo passi in modo corretto va a pescarsi la domanda nel db

spero di esserti stato utile fammi sapere... ciao
 
Ah potrei provare solo che l'ID è autoincrhement quindi come faccio ad assocciare l'id giusto ad ogni nuova domanda?
oppure se utilizzo una funzione jquery e ajax tipo la seguente?
HTML:
<div class="arearisposte"> 
            <script type="application/x-javascript"><![CDATA[ 
        $(document).ready(function() { 
                    $("#a").click(function(){ 
                        $.ajax ({ 
                            url: 'http://localhost:8888/indiceseziondedomande.php', 
                            success: function (data) { 
                                $memoria = val(data); 
                            } 
                        }); 
                    }); 
        }); 
        //]]> 
        </script>
 
Ultima modifica:
per associarla alla domanda puoi usare esempio $_GET[titolo] cioe quello che voglio dirti non ti serve js basta che crei un link esempio <a href="secondapag.php?titolo=valore">titolo</a> che una volta richiamata la seconda pagina avrai un valore $_GET[titolo] da utilizzare esempio in una quey per effettuare il select ed estrarre la domanda... mi spiego sappimi dire ciao
 
Ok grazie provo a sistemare il codice e poi lo posto in modo da fartelo vedere ;) Grazie mille!
 
Sono riuscito a sistemare quel pezzo di codice ma mi trovo in difficoltà con un altro codice in quanto se un altro utente che è registrato visualizza la domanda ha la possibilità di rispondere. Volevo chiedervi come posso fare per far si che la risposta dell'utente venga scritta direttamente nella pagina con un redirect senza memorizzarla prima in un database. Grazie!
PHP:
<html>
<title>Area topic</title>
    </head>
    <body>
        <form action="#" name="topic" method="post">
            <p class="title"><b><u>Benvenuto nell'area risposte!</u></b></p>
        
            <p class="questiontext"><b>Risposta: </b></p>
            <textarea  name="answertext" id="answertext" cols="150" rows="27" style="margin-left: 30px">
            
            </textarea>
        
            <p class="answersubmit">
                <b>Invia risposta: <input type="submit" name="inviarisposta" value="INVIA"</b><br>
                <b>Annulla risposta: <input type="reset" name="annullarisposta" value="ANNULLA"</b>
            </p>
            <?php
                if($_POST['inviarisposta']) {
                    //prendo testo e lo metto in db name = risposta
                    //ricarico pagina arearisposte
                    
                    $testo=$_POST["questiontext"];
                    
                    //sistemare codice per risposta
                    
                    header("Location: http://localhost:8888/indice/arearisposte.php");
                }
                
            ?>
        </form>
        
           
    </body>
</html>
 
Sono riuscito a sistemare quel pezzo di codice ma mi trovo in difficoltà con un altro codice in quanto se un altro utente che è registrato visualizza la domanda ha la possibilità di rispondere. Volevo chiedervi come posso fare per far si che la risposta dell'utente venga scritta direttamente nella pagina con un redirect senza memorizzarla prima in un database. Grazie!
PHP:
<html>
<title>Area topic</title>
    </head>
    <body>
        <form action="#" name="topic" method="post">
            <p class="title"><b><u>Benvenuto nell'area risposte!</u></b></p>
        
            <p class="questiontext"><b>Risposta: </b></p>
            <textarea  name="answertext" id="answertext" cols="150" rows="27" style="margin-left: 30px">
            
            </textarea>
        
            <p class="answersubmit">
                <b>Invia risposta: <input type="submit" name="inviarisposta" value="INVIA"</b><br>
                <b>Annulla risposta: <input type="reset" name="annullarisposta" value="ANNULLA"</b>
            </p>
            <?php
                if($_POST['inviarisposta']) {
                    //prendo testo e lo metto in db name = risposta
                    //ricarico pagina arearisposte
                    
                    $testo=$_POST["questiontext"];
                    
                    //sistemare codice per risposta
                    
                    header("Location: http://localhost:8888/indice/arearisposte.php");
                }
                
            ?>
        </form>// non lo vedo giusto qui il form il php lo puoi scrivere fuori dal html
        
           
    </body>
</html>
io proverei scriverlo così...
PHP:
<?php
                if($_POST['inviarisposta']) {
                    //prendo testo e lo metto in db name = risposta
                    //ricarico pagina arearisposte
                    
                    $testo=$_POST["questiontext"];
                    
                    //sistemare codice per risposta
                    
                    header("Location: http://localhost:8888/indice/arearisposte.php?testo=".$testo);// prova a scriverlo cosi
                }
                
            ?>
// qui sotto metti pure l'html

mi dai l'indirizzo del tuo sito mi piacerebbe vederlo
 
provato ma non va (non fa nemmeno il redirect)
Comunque il sito è ancora in locale quindi non lo potresti vedere
 

Discussioni simili