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 :

Variable à X valeurs et problème de concaténation [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2012
    Messages : 17
    Points : 14
    Points
    14
    Par défaut Variable à X valeurs et problème de concaténation
    Bonjour à tous,

    Bon je sèche sur un soucis probablement bête et à mon avis c'est de la pure logique mais j'y arrive pas.

    Alors voilà, j'ai réussi à afficher plusieurs résultats (en l’occurrence ici des articles) de ma base de donnée ayant un "category_id" différent au travers de ma demande sql sur une même page.

    De ce côté, ça va !

    Sur mon site en temps normal, j'ai plusieurs catégories, avec pour chacune un "category_id", quand je clique sur une catégorie je récupère ce "category_id" et je m'en sers quand je clique sur le titre de mon article par concaténation pour afficher mon article ensuite.

    Sauf qu'en modifiant ma requête sql et en spécifiant les "category_id" pour afficher tout les articles de toutes les "category_id" sur mon index par exemple, ba du coup la concaténation me permettant d'accéder à mon article ne fonctionne pas.

    Et la je bloque !

    En gros en définissant manuellement mes id dans une variable, ba la concaténation dans l'url ne peut pas suivre lorsque je clique sur le titre de mon article par exemple, il m'envoit vers une page inconnue ce qui est normal. Ce que je souhaiterai mettre en place, c'est en définissant manuellement plusieurs id dans une variable que la concaténation prenne la bonne valeur de la variable pour que je puisse accéder au contenu de mon article.

    Voici mon code tout simple... A savoir qu'ici le $cid correspond en faite au "category_id".

    Ma deuxième ligne est fausse je le sais bien.

    Code : 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
    <?php
    $cid = "1,2" ;
    $sql2 = $bdd->query("SELECT * FROM topics WHERE category_id IN (1,2) ORDER BY topic_reply_date DESC");
     
    $topics = "";
    if ($sql2->rowcount() > 0)
    {
        while ($row = $sql2->fetch(PDO::FETCH_ASSOC))
        {
            $tid = $row['id'];
            $title = $row['topic_title'];
            $views = $row['topic_views'];
            $date = $row['topic_date'];
            $creator = $row['topic_creator'];
            $topics .=
                "<div class='post'>
                    <a href='view_topic.php?cid=".$cid." & tid=".$tid."'>".$title."</a>
                    <span>Poster by: ".$creator." on ".$date."</span>
                    <span>Nombre de vues ".$views."</span>
                </div>";
        }
        echo $topics;
    }
    ?>
    Merci beaucoup,

    AL

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    On pourrait voir le code de view_topic.php ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2012
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Désolé de tout ce retard voici ma page view_topic.php :

    Code : 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
    <?php session_start(); ?>
    <?php
    include_once("connect.php");
    ?>
    <!DOCTYPE html>
    <head>
    	<meta charset='utf-8' />
    	<title></title>
    	<meta name="author" content="">
    	<link rel="stylesheet" type="text/css" href="css/general.css">
    	<link rel="shortcut incon" type="text/css" href="images/favicon.ico">
    </head>
    <body>
    	<div class="mainbar">
    	</div>
    	<div id="form_co">
    		<h2>Sujets</h2>
     
    		<?php
    			if (!isset($_SESSION['uid']))
    			{
    				echo
    				"
    					<form action='login_parse.php' method='post'>
    					Username:<input type='text' name='username' />&nbsp;
    					Password:<input type='text' name='password' />&nbsp;
    					<input type='submit' name='submit' value='Log in' />
    				";
    			}
    			else
    			{
    				echo "Welcome ".$_SESSION['username']."; <a href='logout_parse.php'>Logout</a>; <a href='index.php'>Retour à l'index</a><hr/>";
    			}
    		?>
    	</div>
    	<div class="">
    	<?php
    		$cid = $_GET['cid'];
    		$tid = $_GET['tid'];
    		$sql = $bdd->query("SELECT * FROM topics WHERE category_id='".$cid."' AND id='".$tid."' LIMIT 1");
    		if ($sql->rowcount() == 1)
    		{
    			echo "";
    			if (isset($_SESSION['uid']))
    			{
    				echo "<input type='submit' value='Ajouter un commentaire' onClick=\"window.location = 'post_reply.php?cid=".$cid."&tid=".$tid."'\" />";	
    			}
    			else
    			{
    				echo "<td><p>Veuillez vous connecter pour ajouter un sujet</p></td>";
    			}
    				while ($row = $sql->fetch(PDO::FETCH_ASSOC))
    				{
    					$sql2 = $bdd->query("SELECT * FROM posts WHERE category_id='".$cid."' AND topic_id='".$tid."'");
    					while ($row2 = $sql2->fetch(PDO::FETCH_ASSOC)) 
    					{
    						echo "".$row['topic_title']." by ".$row2['post_creator']." - ".$row2['post_date']." ".$row2['post_content']."";
    					}
    					$old_views = $row['topic_views'];
    					$new_views = $old_views + 1;
     
    					$sql3 = $bdd->prepare("UPDATE topics SET topic_views='".$new_views."' WHERE category_id='".$cid."' AND id='".$tid."' LIMIT 1");
    					$sql3->execute(array($new_views, $cid, $tid));
    				}
    		}
    		else
    		{
    			echo "<p>Ce sujet n'existe pas</p>";
    		}
    	?>
    	</div>
    </body>
    </html>

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Je ne suis pas sûre de comprendre ce que tu veux faire : afficher un article en particulier en cliquant sur le lien de la liste, avec la liste alimentée à partir de plusieurs catégories ?
    En tout cas, la page d'affichage de l'article n'est pas prévue pour gérer les catégories multiples.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2012
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Bon je vais reprendre mon histoire, je voudrai mettre en place sur mon index, l'affichage de tout mes articles provenant de toutes mes catégories.

    Sauf que le soucis que je rencontrais, c'est qu'en définissant manuellement le $cid (Cf dans mon premier message, code), et en lui donnant plusieurs valeurs, je réussissais à afficher mes titres d'articles correctement, sauf que le lien qui était dedans et qui m'envoyait vers le contenu ne fonctionnait pas. Car dans ce lien j'utilisais de la concaténation avec le $cid et vue que celui-ci avait plusieurs valeurs, l'URL n'était pas bon.

    Si je peux être encore plus claire il faut me le dire !

    Merci en tout cas !

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Ah, ok, je crois que je vois le problème. Il te faut 2 variables : une pour la recherche et pour la construction du lien :
    Code : 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
    <?php
    $listCatId = "1,2" ; // liste des catégories à afficher
    $sql2 = $bdd->query("SELECT * FROM topics WHERE category_id IN (".$listCatId.") ORDER BY topic_reply_date DESC");
     
    $topics = "";
    if ($sql2->rowcount() > 0)
    {
        while ($row = $sql2->fetch(PDO::FETCH_ASSOC))
        {
            $tid = $row['id'];
           $cid= $row['category_id']; // catégorie de l'article
            $title = $row['topic_title'];
            $views = $row['topic_views'];
            $date = $row['topic_date'];
            $creator = $row['topic_creator'];
            $topics .=
                "<div class='post'>
                    <a href='view_topic.php?cid=".$cid." & tid=".$tid."'>".$title."</a>
                    <span>Poster by: ".$creator." on ".$date."</span>
                    <span>Nombre de vues ".$views."</span>
                </div>";
        }
        echo $topics;
    }
    ?>
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2012
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Un énorme grand merci Celira, tu me sauves la vie et je viens de découvrir quelque chose !

    Merci beaucoup !

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

Discussions similaires

  1. Problème de concaténation avec valeur numérique
    Par Freedolphin dans le forum Langage
    Réponses: 4
    Dernier message: 22/12/2011, 17h27
  2. Réponses: 3
    Dernier message: 04/04/2008, 17h54
  3. Problème de concaténation entre deux valeurs
    Par jeremie74 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 28/08/2007, 17h28
  4. Problème de concaténation de deux variables
    Par poissonsoluble dans le forum VB 6 et antérieur
    Réponses: 19
    Dernier message: 29/05/2007, 10h00
  5. [Tableaux] problème syntaxe concaténation variable
    Par mussara dans le forum Langage
    Réponses: 3
    Dernier message: 01/03/2006, 11h24

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