8721 sujets

Développement web côté serveur, CMS

Bonjour à tous j'essaye de transmettre une variable de ma page index vers une autre mais cela ne se fait pas.
Je m'explique, voici ma variable à faire balader
$film = new Film($title,$rating,$year,$imdb_url,$directors,$actors,$plot_simple,$poster);


et voici ma session de mon index.php
<?php 
include 'classfilm.php';
$_SESSION['variable'] = $film;
if(isset($_SESSION['variable'])) 
  echo '<h1>La variable "variable" existe';
?>


En trainant sur plusieurs site j'ai lu qu'il fallait utiliser serialize mais j'ai eut beau essayer plusieurs chose comme
$atransmettre = serialize($film)

ca ne fonctionne pas et ma page n'affiche plus rien.

De plus, j'ajoute le fait que je passe de ma page index à ma page2 en cliquant sur le titre du film, donc chaque page2 a son contenu dépendant de chaque film voici le code qui provient de ma classe film
	function poster(){
        if(empty($this->poster)){
            echo $this->title;
            return false;
        }else{
            echo '<a href="pagefilms.php?id='.$this->title.'"><img src="'.$this->poster.'" class="img-rounded"></a>';
            return true;
        }		
 	}


Je vous remercie d'avance de votre aide car grâce à ceci mon site sera quasi fini Smiley lol
"Bonjour à tous j'essaye de transmettre une variable de ma page index vers une autre mais cela ne se fait pas."

c'est pas très explicite... c'est une variable js, php, elle vient d'ou, etc....
Je suppose que c'est php et que c'est le client qui le génère.
Bah c'est le principe d'une requete POST (bien que tu puisse également utiliser GET)
Après il y a les sessions (et je pense que c'est ce qui vas te convenir)
met
session_start();

tout en haut de TOUTES tes pages php
puis pour la stocker en session :
$_SESSION['film']=$film;


et tu accederas à cette variable sur l'autre page ainsi :
echo $_SESSION['film'];



Rien de plus simple Smiley cligne
en effet c'est bien une variable php.
Et je dois pas faire bien cela car ca ne marche pas vraiment Smiley decu voir meme pas du tout
voici la session de ma page index :
<?php
session_start();
include 'classfilm.php';
$_SESSION['film']=$film;
?>


et voici le code php du reste du fichier :
<?php
                            include('classFilm.php');
                            $film;
							function enleveExtension($inc, $ext){
								return basename($inc, $ext);
							}
    						$base = mysql_connect ('localhost', 'maxime', 'sg7f3d3') or die("Impossible de se connecter : " . mysql_error());
    						//connexion à la base de donnée
    						mysql_select_db ('db_mediatomb', $base);
    						$query = "SELECT dc_title FROM mt_cds_object WHERE ((location_hash >= 1) AND (dc_title like '%.mkv'))";
    						$result = mysql_query($query) or die('Erreur SQL !<br>'.$query.'</br>'.mysql_error());
    						// on fait une boucle qui va faire un tour pour chaque enregistrement 
    						echo '<ul class="thumbnails">';
    							while(($data = mysql_fetch_assoc($result))){
    								//on enleve l'extension du fichier
    								$titre = enleveExtension($data['dc_title'], ".mkv");
    								//on remplace les espaces par des + pour la recherche imdb
    								$IMDBSearch = ereg_replace('\ ','+',$titre);
    								//on utilise l'api allocine pour recuperer les données de chaque film
                                    $doc ="http://imdbapi.org/?title='.$IMDBSearch.'&type=xml&plot=simple&episode=0&limit=1&yg=0&lang=fr-FR&offset=&aka=simple&release=simple";
                                    $xml = new SimpleXmlElement($doc, 0, true);
    								$title = $xml->item->title;
                                    $rating = $xml->item->rating;
                                    $year = $xml->item->year;
                                    $imdb_url = $xml->item->imdb_url;
                                    $directors= $xml->item->directors;
                                    $actors = $xml->item->actors;
                                    $plot_simple = $xml->item->plot_simple;
                                    $poster = $xml->item->poster;
                                    //on créé l'objet film et on l'initialise
                                    $film = new Film($title,$rating,$year,$imdb_url,$directors,$actors,$plot_simple,$poster);
                                    //on affiche chaque film
                                    echo '<li class="span2 text-center">
    								 	<div class="thumbnail">';
                                            echo $film->poster();
                                            echo $titre;
    							    	echo'</div>
    							    </li>';
    							}
    						echo '</ul>';
    						mysql_close(); 
						?>


donc jusque là comme tu as dit.
ensuite voici la session de ma page2
<?php 
include 'classfilm.php';
$_SESSION['variable'] = $film;?>

et j'ai beau mettre l'echo, rien de s'affiche
je précise que j'ai bien mi la session avant le doctype dans chaque fichier
Modifié par max02100 (07 Mar 2013 - 18:05)
manque un session_start(); dans le deuxième fichier
a écrit :
met

session_start();


tout en haut de TOUTES tes pages php
puis pour la stocker en session :


Tu pourras pas dire que je l'avais pas dis Smiley cligne
Me revoila apres mes examens Smiley lol
Bon pour en revenir au problème, le soucis n'est pas réglé meme apres avoir BIEN mit session_start(); en haut de la 2 eme page ^^

voici ma session de page 1 :

<?php
   session_start();
   require 'classfilm.php';
   $film = New Film("toto");
   $_SESSION['film'] = serialize($film);
?>


mon code php de la meme page

<?php
							function enleveExtension($inc, $ext){
								return basename($inc, $ext);
							}
    						$base = mysql_connect ('localhost', 'maxime', 'sg7f3d3') or die("Impossible de se connecter : " . mysql_error());
    						//connexion à la base de donnée
    						mysql_select_db ('db_mediatomb', $base);
    						$query = "SELECT dc_title FROM mt_cds_object WHERE ((location_hash >= 1) AND (dc_title like '%.mkv'))";
    						$result = mysql_query($query) or die('Erreur SQL !<br>'.$query.'</br>'.mysql_error());
    						// on fait une boucle qui va faire un tour pour chaque enregistrement 
    						echo '<ul class="thumbnails">';
    							while(($data = mysql_fetch_assoc($result))){
    								//on enleve l'extension du fichier
    								$titre = enleveExtension($data['dc_title'], ".mkv");
                                    $verif = "SELECT title FROM films_fait WHERE(title='".$titre."')";
                                    $reponse = mysql_query($query) or die('Erreur SQL !<br>'.$query.'</br>'.mysql_error());
                                    if(mysql_num_rows($reponse) < 1){
        								//on remplace les espaces par des + pour la recherche imdb
        								$IMDBSearch = ereg_replace('\ ','+',$titre);
        								//on utilise l'api allocine pour recuperer les données de chaque film
                                        $doc ="http://imdbapi.org/?title='.$IMDBSearch.'&type=xml&plot=simple&episode=0&limit=1&yg=0&lang=fr-FR&offset=&aka=simple&release=simple";
                                        $xml = new SimpleXmlElement($doc, 0, true);
        								$title = $xml->item->title;
                                        $rating = $xml->item->rating;
                                        $year = $xml->item->year;
                                        $imdb_url = $xml->item->imdb_url;
                                        //on créé l'objet film et on l'initialise
                                        /*$film = new Film($title,$rating,$year/*,$imdb_url,$directors,$actors,$plot_simple)*/;
                                        $insertBDD = "INSERT INTO films_fait(title,rating,year,imdb_url) VALUES ('".$title."','".$rating."','".$year."','".$imdb_url."')";
                                        mysql_query($insertBDD) or die('Erreur SQL !<br>'.$query.'</br>'.mysql_error());
                                    }
                                    //on affiche chaque film
                                    echo '<li class="span2 text-center">
    								 	<div class="thumbnail">';
                                            echo $film->title();
    							    	echo'</div>
    							    </li>';
    							}
    						echo '</ul>';
mysql_close(); 
?> 


et voici ma session de 2eme page

<?php 
session_start();
include 'classfilm.php';
$_SESSION['variable'] = $film;
?>


Encore merci de votre aide
Modifié par max02100 (22 Mar 2013 - 17:00)
jb_gfx j'ai mi ce que tu m'as donné dans le session mais le soucis vient du fait que ma page 1 ne se charge pas du tout ca me met ca upload/48669-Capturedu2.png
alors que quand je change ma session de la page 1 de cette maniere

<?php
session_start();
include 'classfilm.php';
/*$film = New Film("toto");
$_SESSION['film'] = serialize($film);*/
?>


Ca charge mais bien sur ca n'affiche rien concernant le php
Salut,

La fonction serialize peut échouer dans certain rare cas.

J'ai eu un échec une fois avec une classe de zend qui utilisait une fonctionnalité récente de php si je passais l'argument d'une certaine façon ça plantait comme toi.

heureusement le message d'erreur m'a permis de trouver la marche a suivre sur le web.

essai de mettre un die apres le serialize et de voir si tu ne vois pas une erreur apparaitre.

Si tu n'arrives pas a afficher l'erreur sur ta page, va voir les logs apache.
ils ne sont pas illisible. Tu rafraichis ta page en erreur et tu vas voir la dernière entrée en bas de ton fichier. il y a souvent l'explication.

par exemple sous wamp tu peux y acceder via clic sur l'icone wamp->apache->apache error log.

Bonne chance.
CPascal, j'ai donc etait voir le error.log et en effet il y en a
/var/log/apache2$ tail -f error.log
[Sat Mar 23 05:00:36 2013] Smiley error [client 192.168.0.11] PHP Warning: include(): Failed opening 'classfilm.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/bootstrap/index.php on line 3
[Sat Mar 23 05:00:36 2013] Smiley error [client 192.168.0.11] PHP Notice: Undefined variable: rec in /var/www/bootstrap/index.php on line 50
[Sat Mar 23 05:00:36 2013] Smiley error [client 192.168.0.11] PHP Notice: Undefined index: film in /var/www/bootstrap/index.php on line 98
[Sat Mar 23 05:00:36 2013] Smiley error [client 192.168.0.11] PHP Fatal error: Call to a member function title() on a non-object in /var/www/bootstrap/index.php on line 98

Par contre je ne sais pas comment tu fais pour afficher tes erreurs php sur ton navigateur Smiley confus