lien en php

bob971
Invité n'ayant pas de compte PHPfrance

18 sept. 2011, 20:23

Bonjour,
je voudrais savoir comment rajouter les requêtes : $_GET['sujet'] et $_GET['corps'] dans le lien suivant en poo.
<a href="lien.php?id=<?php echo $donnees['id']; ?>"> mon lien </a>
Merci d’avance.

bob971
Invité n'ayant pas de compte PHPfrance

18 sept. 2011, 20:51

En fait ça serait plus : $donnees['sujet'] et $donnees['corps'].

ViPHP
AB
ViPHP | 5818 Messages

18 sept. 2011, 20:53

Heu ... avec ton lien on ne peux récupérer pour l'instant que $_GET['id'], si tu en veux plus il faut les rajouter :
<a href="lien.php?id=<?php echo $donnees['id']?>&sujet=<?php echo $donnees['sujet']?>&corps=<?php echo $donnees['corps']?> "> mon lien </a>
(en supposant que $donnees['sujet'] et $donnees['corps'] existent)

ViPHP
AB
ViPHP | 5818 Messages

18 sept. 2011, 20:58

Ah oui si tes données qui passent dans l'url peuvent contenir des caractères spéciaux tu peux utiliser en complément rawurlencode

bob971
Invité n'ayant pas de compte PHPfrance

18 sept. 2011, 21:09

Est-ce que je peux poster tout le code ?
Car j’ai un autre message d’erreur

Code : Tout sélectionner

rreur : SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE news id = '358' AND sujet = 'C\'est un rempart' AND corps <= '

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

18 sept. 2011, 23:43

Tu as une erreur dans la requête SQL que tu génères... à priori le problème se trouve avant le WHERE (mais tu as aussi une erreur après : " WHERE news id = '358' ")

Si news est le nom de ta table il devrait être entre le FROM et le WHERE et non après le WHERE
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

bob971
Invité n'ayant pas de compte PHPfrance

19 sept. 2011, 02:00

Comme j’ai 2 pages, j’avais oublié de mettre WHERE sur une des 2

Mais les erreurs se poursuivent. Que veux dire :
Notice: Undefined index: sujet in C:\wamp\www\moki\3.php on line 21

Notice: Undefined index: corps in C:\wamp\www\moki\3.php on line 21
Pour cette ligne:
{
        echo $donnees['sujet'] . ' '. $donnees['id'] . '<br/>' . $donnees['corps'];
    }

ViPHP
AB
ViPHP | 5818 Messages

19 sept. 2011, 02:42

cela veut dire que $donnees['sujet'] et $donnees['corps'] ne sont pas définies.

bob971
Invité n'ayant pas de compte PHPfrance

19 sept. 2011, 04:18

Je suis un débutant, peut-on me dire comment faire en sorte qu’ils soient définis et me donner un grand coup de pouce pour ce code.
Je mets tout le code, aidez moi s’il vous plait.

page.php
<?php
for($i = 'A'; $i != 'AA'; $i++){
 echo '<a href="page.php?lettre='.$i.'">'.$i.'</a> ';
} 
?>
<br /><br />
<?php
try
{
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=localhost;dbname=hymnes_louanges', 'root', '', $pdo_options);
    
    if(isset($_GET['lettre']))
{
   $reponse = $bdd->query('SELECT id, sujet FROM news WHERE sujet LIKE \''.$_GET['lettre'].'%\' ORDER BY sujet'); 
}
else
{
   $reponse = $bdd->query('SELECT id, sujet FROM news ORDER BY sujet'); 
} 
    
    while ($donnees = $reponse->fetch())
	
    { ?>
    
     <a href="3.php?id=<?php echo $donnees['id']?>&sujet=<?php echo $donnees['sujet']?>&corps=<?php echo $donnees['corps']?> "> <?php echo $donnees['sujet'] . ' ... ' . $donnees['id'] . ' <br /> '; ?></a>
      
   <?php }
 
    $reponse->closeCursor();
}
catch(Exception $e)
{
    die('Erreur : '.$e->getMessage());
}
?> 
  

3.php
<?php
if (isset($_GET['id'])) 
{

try
{
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=localhost;dbname=hymnes_louanges', 'root', '', $pdo_options);
    
    $req = $bdd->prepare('SELECT id FROM news WHERE id = ? AND sujet = ? AND corps <= ? ');
    $req->execute(array($_GET['id'],$_GET['sujet'], $_GET['corps']));
    
    while ($donnees = $req->fetch())
    {
        echo $donnees['sujet'] . ' '. $donnees['id'] . '<br/>' . $donnees['corps'];
    }
    
    
    $req->closeCursor();
}
catch(Exception $e)
{
    die('Erreur : '.$e->getMessage());
}
}
?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

19 sept. 2011, 19:44

Quand tu fait un SELECT id FROM news, MySQL va te retourner uniquement les valeurs pour le champ id. Du coup quand avec php tu demandes d'afficher les valeurs de sujet et corps, il te retourne un message d'avertissement pour te demander si tu te moque de lui, vu que tu lui demandes d'afficher des valeurs qu'il n'a pas ;)

Un "SELECT id, sujet, corps FROM news ..." devrait te permettre de résoudre le problème :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

bob971
Invité n'ayant pas de compte PHPfrance

20 sept. 2011, 01:02

Je n’ai plus de messages d’erreur, mais juste un petit souci. Quand le texte s’affiche dans le navigateur, j’ai toutes les balises <br/> </p> qui s’affiche a l‘intérieur de ce dernier.

Code : Tout sélectionner

Exemple : Lorem Ipsum <br/>is simply dummy text <br/>of the printing and typesetting <br/>industry</p>
Que dois je faire ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

20 sept. 2011, 14:34

C'est probablement parce qu'au moment où tu affiches tes données tu dois faire appel à htmlentities() ou a un équivalent. Du coup le code html contenu dans ta chaîne est transformé en texte et le navigateur l'affiche à l'écran au lieu de l'interpréter...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

bob971
Invité n'ayant pas de compte PHPfrance

20 sept. 2011, 19:42

Comment mettre htmlentities pour afficher le texte correctement ?

bob971
Invité n'ayant pas de compte PHPfrance

20 sept. 2011, 21:24

Oui tout fonctionne très bien maintenant. :D
Merci.
Je voudrai savoir si on peut mettre un lecteur mp3 qui joue en fonction de l’id.

ViPHP
AB
ViPHP | 5818 Messages

22 sept. 2011, 03:12

Ben oui si tu as un champs dans ta bdd qui correspond à un nom de fichier, tu peux le récupérer puis le passer à un lecteur mp3