IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Récupération de variables entre deux blocs


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2013
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 226
    Par défaut Récupération de variables entre deux blocs
    Bonsoir,

    J'aurais besoin, dans une instruction conditionnelle, de récupérer la valeur de deux variables qui, dans le bloc actuel, ne sont plus disponibles.
    Il s'agît des variables $row['frenchTitle'] et que j'essaye de réutiliser dans la section "Première diffusion".

    J'obtiens l"erreur suivante:
    Warning: Trying to access array offset on value of type null in /var/www/worksite/series/fiche.php on line 67
    J'utilise pourtant session_start() dans la page principale et cela fonctionne pour le reste.

    Voici mon code:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    <?php
    	require('queries.php');
    	$title = $_GET['series'];
    ?>
     
    <section class="series accueilContainer col-10">
     
    <?php
    	$row = $titleResult->fetch_assoc();
    	if ($row['frenchTitle'] == $row['seriesTitle']) {
    		echo '<h1 class="seriesTitle">'.strtoupper($row['frenchTitle']).'</h1>';
    	} else {
    		echo '<h1 class="seriesTitle">'.strtoupper($row['frenchTitle']).' ('.$row['seriesTitle'].')</h1>';
    	}
    ?>
     
    <h2 class="seriesSubtitles">PRODUCTION</h2>
    <div>
    	<?php
    		while ($row = $compResult->fetch_assoc()) {
                    	echo '<p class="castAndCrew">'.$row['companyName'].'</p>';
    		}
    	?>
      </div>
     
    <h2 class="seriesSubtitles">PRODUCTEUR EXECUTIF</h2>
    <div>
     
    <?php 
    	while ($row = $prodResult->fetch_assoc()) {
            	echo '<p class="castAndCrew">'.$row['personName'].'</p>';
    	}
    ?>
     </div>
     
    <h2 class="seriesSubtitles">REALISATEURS</h2>
    <div>
        <?php
    		while ($row = $dirResult->fetch_assoc()) {
    	        	echo '<p class="castAndCrew">'.$row['personName'].'</p>';
    		}
       ?>
    </div>
     
    <h2 class="seriesSubtitles">DISTRIBUTION</h2>
    <div>
         <?php 
    		$cast = []; // Tableau associatif de tableaux [personnage => [acteurs]]
                    while ($row = $castResult->fetch_assoc()) {
                        $cast[$row['charName']][] = $row['personName'];
                    }
     
                    foreach ($cast as $char => $persons) {
                        echo '<p class="castAndCrew">', implode(' remplacé par ', $persons), " : {$char}</p>";
                   }
    	?>   	
    </div>
     <h2 class="seriesSubtitles">PREMIERE DIFFUSION</h2>
     <div>
     	<?php
    		if ($row['frenchTitle'] == $row['seriesTitle']) {
             		$row = $airedResult->fetch_assoc();
    	  		echo '<p class="castAndCrew">France : '.$row['channelName'].' - '.$row['releaseYear'].'</p>';  				
      		} else {
    	  		$row = $airedResult->fetch_assoc();
    	  		echo '<p class="castAndCrew">'.$row['countryName'].' : '.$row['channelName'].' - '.$row['releaseYear'].'</p>';
    	  		$row = $frAiredResult->fetch_assoc();
    	  		echo '<p class="castAndCrew">France : '.$row['channelName'].' - '.$row['frenchReleaseYear'].'</p>';
    	 	}
      	?>
    </div>
     
    <div class="retour">
     	<span><?php echo "<a href=\"javascript:history.go(-1)\">" ?>RETOUR</a></span>
     </div>
    </section>

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 721
    Par défaut
    Et $airedResult, il est défini où dans ce code ? Nulle part.
    Le message d'erreur est explicite. Donc $row ne vaut rien non plus. Je ne vois pas le rapport avec session_start.

    Même remarque pour $prodResult, $dirResult etc. Ce code ne montre pas comment sont assignées ces variables.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2013
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 226
    Par défaut
    Bonjour,

    Toutes ces variables sont définies dans un fichier "queries.php".

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    <?php
    	//Title Query
    	$titleQuery = $conn->prepare('SELECT TW.seriesTitle AS frenchTitle, S.seriesTitle AS seriesTitle FROM testview AS TW
    							LEFT JOIN SERIES AS S ON S.seriesId = TW.seriesId
    							WHERE TW.seriesTitle LIKE "'.$_GET['series'].'"');
    	$titleQuery->execute();
    	$titleResult = $titleQuery->get_result();
     
     
    	//Company Name Query	
    	$companyQuery = $conn->prepare('SELECT companyName AS companyName FROM COMPANY AS C 
    								LEFT JOIN PRODUCTION AS P ON P.companyId = C.companyId
    								LEFT JOIN SERIES AS S ON S.seriesId = P.seriesId
    								WHERE S.seriesTitle LIKE "'.$_GET['series'].'"');
    	$companyQuery->execute();
    	$compResult = $companyQuery->get_result();
     
     
    	//Producer Name Query	
    	$producerQuery = $conn->prepare('SELECT personName AS personName FROM PERSON AS P
    								LEFT JOIN CREW AS C ON C.personId = P.personId
    								LEFT JOIN ROLE AS R ON R.roleId = C.roleId
    								LEFT JOIN SERIES AS S ON S.seriesId = C.seriesId
    								WHERE S.seriesTitle LIKE "'.$_GET['series'].'"
    								AND R.roleType LIKE "Producteur exécutif"');
    	$producerQuery->execute();
    	$prodResult = $producerQuery->get_result();
     
     
    	// Director Name Query	
    	$directorQuery = $conn->prepare('SELECT personName AS personName FROM PERSON AS P
    							      LEFT JOIN CREW AS C ON C.personId = P.personId
    							      LEFT JOIN ROLE AS R ON R.roleId = C.roleId
    							      LEFT JOIN SERIES AS S ON S.seriesId = C.seriesId
    							      WHERE S.seriesTitle LIKE "'.$_GET['series'].'"
    							      AND R.roleType LIKE "Réalisateur"');
    	$directorQuery->execute();
    	$dirResult = $directorQuery->get_result();
     
     
    	//Cast Query
    	$castQuery = $conn->prepare('SELECT seriesTitle, characterName AS charName, personName, appearanceOrder AS appOrder FROM CASTING AS C
    							JOIN SERIES AS S ON S.seriesId = C.seriesId
    							JOIN PERSON AS P ON P.personId = C.personId
    							JOIN CHAR_PLAYED AS CP ON CP.characterId = C.characterId 
    							WHERE seriesTitle LIKE "'.$_GET['series'].'"
    							ORDER BY appearanceOrder');
    	$castQuery->execute();
    	$castResult = $castQuery->get_result();
     
     
    	// First Aired Queries
    	// Foreign First Aired
    	$airedQuery = $conn->prepare('SELECT TW.seriesId, CY.countryName, CH.channelName, S.releaseYear FROM CHANNEL as CH
    							  LEFT JOIN SERIES AS S ON S.channelId = CH.channelId
    							  LEFT JOIN testview AS TW ON TW.seriesId = S.seriesId
    							  LEFT JOIN FOREIGN_SERIES AS FS ON FS.seriesId = S.seriesId
    							  LEFT JOIN COUNTRY AS CY ON CY.countryId = FS.countryId
    							  WHERE TW.seriesTitle LIKE "'.$_GET['series'].'"');
    	$airedQuery->execute();
    	$airedResult = $airedQuery->get_result();
     
    	// French Aired
    	$frAiredQuery = $conn->prepare('SELECT TW.seriesId, CH.channelName, FS.frenchReleaseYear FROM FOREIGN_SERIES as FS
    							    JOIN CHANNEL AS CH ON CH.channelId = FS.channelId
     							    JOIN testview AS TW ON TW.seriesId = FS.seriesId
    							    WHERE TW.seriesTitle LIKE "'.$_GET['series'].'"');
    	$frAiredQuery->execute();
    	$frAiredResult = $frAiredQuery->get_result();
     
    	?>

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2013
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 226
    Par défaut
    Bonjour,

    On ne cherche jamais assez avant de venir demander de l'aide.

    J'ai trouvé une solution à mon problème.

    Je remplace la condition ci-dessus par une autre, basée sur une requête qui n'affiche que les séries françaises:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
        $row = $isFrenchResult->fetch_assoc();  // On récupère le résultat de la requête sur les séries françaises
        if (isset($row['seriesId'] )) {  //  Si la série est françaises, alors on affiche France puis la chaîne et l'année de première diffusion
            $row = $airedResult->fetch_assoc();
    	echo '<p class="castAndCrew">France : '.$row['channelName'].' - '.$row['releaseYear'].'</p>';  				
        } else {  //  S'il s'agit d'une série étrangère, on affiche le pays d'origine, ainsi que la chaîne et l'année de première diffusion, et la même chose pour la France
    	$row = $airedResult->fetch_assoc();
    	echo '<p class="castAndCrew">'.$row['countryName'].' : '.$row['channelName'].' - '.$row['releaseYear'].'</p>';
    	$row = $frAiredResult->fetch_assoc();
    	echo '<p class="castAndCrew">France : '.$row['channelName'].' - '.$row['frenchReleaseYear'].'</p>';
        }
    ?>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/09/2011, 10h53
  2. passage de variable entre deux swf
    Par scorpion.os dans le forum Flash
    Réponses: 6
    Dernier message: 29/01/2007, 13h32
  3. variable entre deux champs
    Par valaidnew dans le forum ASP
    Réponses: 6
    Dernier message: 09/02/2006, 11h39
  4. [vector] Partager une même variable entre deux objets.
    Par Ekinoks dans le forum SL & STL
    Réponses: 18
    Dernier message: 25/08/2005, 20h40
  5. Passer une variable entre deux fenêtres
    Par DeezerD dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/08/2005, 09h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo