PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 28-07-2010 07:38:46

allhambra
Membre
Lieu : Pau (64)
Inscription : 10-09-2009
Messages : 75
Site Web

recuperation de variable d'une page à l'autre

coucou la communauté,

J'ai un gros problème avec la récupération de variables.
J'ai une table "vidéo" qui contient un champ "id_mot"où il peut y avoir plusieurs ids et une table motscle qui contient également "id_mot" mais unique.

Sur ma première page (plan-webtv.php) je fais une requête pour afficher les mots clé et je fais un lien vers la deuxième page (webtv-thematique.php) :

echo '<li><a href="webtv-thematique.php?'.$row[nom_mot].'">'.$row["alias"].'</a></li>';

sur la page "webtv-thematique.php" ma requête porte sur les videos dont qui contiennent l'id_mot de la première page.
mais, il semblerai que cette variable ne soit pas récupérée. pourtant, je ne fais pas de uset sur la première page.

j'ai testé un echo pour voir

$_GET['nom_mot']
//echo 'Bienvenue sur cette page, ' . $nom_mot ;

, mais ça me donne un

Parse error: syntax error, unexpected T_ECHO in webtv-thematique.php  on line 15

de plus, quand je met WHERE nom_mot='nom_mot'"; j'ai le message : Parse error: syntax error, unexpected T_VARIABLE in /homez.346 webtv-thematique.php  on line 17 ( ligne du select).

$_GET['nom_mot']
//echo 'Bienvenue sur cette page, ' . $nom_mot ;

$sql = "SELECT nom_mot FROM video WHERE nom_mot='nom_mot'";
//"SELECT * FROM video WHERE `id_mot` LIKE '%id_mot%'";
$result = mysql_query($sql) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);
if($total) {
     while($row = mysql_fetch_array($result)) {  
/* indiquer $dest_file qui correspond au répertoire de destination */
  $dest_file="/video/";
  $dest_page="/video.php?";
  $ext1="flv";
  $ext2="jpg";
/* enlève un "\"  */
$nom = "$row[nom]";
  $source_file=("$nom");
 
  $link = ("$URL_site$dest_page$nom");
  $mediacontent = ("$URL_site$dest_file$source_file.$ext1");
  $mediathumbnail = ("$URL_site$dest_file$source_file.$ext2");

?>
       <table border="0" align="center" cellpadding="5" cellspacing="5">
      <tr align="left">
        <td rowspan="2" align="left" width="155px">
        <a href="video.php?<?php echo $row[nom]; ?>">
        <img src="<?php echo $mediathumbnail ?>" align="left" /></a></td>
        <td align="left"><a href="video.php?<?php echo $nom; ?>"><font size="+1"><?php echo $row[title]; ?></font><br/>  Mis en ligne le <?php echo $row[publication]; ?></a></td>
      </tr>
      <tr align="left">
        <td align="left"><?php echo $row[description]; ?></td>
      </tr>
</table>
    <br/>
       <?php }}?>

je pédale dans la choucroute et à force d'avoir le nez dessus, je ne vois plus rien et mes lunettes chauffent, lol.
J'ai besoin d'un regard expérimente s'il vous plait.

Hors ligne

#2 28-07-2010 08:18:07

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : recuperation de variable d'une page à l'autre

Première ligne ne sert à rien car elle ne fait rien, et l'erreur vient de là car il n'y a pas de point virgule à la fin.

Hors ligne

#3 28-07-2010 08:42:00

allhambra
Membre
Lieu : Pau (64)
Inscription : 10-09-2009
Messages : 75
Site Web

Re : recuperation de variable d'une page à l'autre

coucou xTG,
merci de ta réponse, tu va passer sauveur officiel smile.

J'ai un peu modifié mon code pour faire une pagination.
J'ai un peu de mal à savoir quand mettre des doubles ou simples cotes.

$premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire

$retour_messages=mysql_query('SELECT * FROM video WHERE nom_mot='nom_mot'  LIMIT '.$premiereEntree.', '.$messagesParPage.'');

while($donnees_messages=mysql_fetch_assoc($retour_messages)) // On lit les entrées une à une grâce à une boucle
{

qui me donne Parse error: syntax error, unexpected T_STRING

ou

$retour_messages=mysql_query('SELECT * FROM video WHERE nom_mot="nom_mot"  LIMIT '.$premiereEntree.', '.$messagesParPage.'');

qui me donne "Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /webtv-thematique.php  on line 45"

la ligne 45 étant

while($donnees_messages=mysql_fetch_assoc($retour_messages))

je suis un peu larguée sur le coup

Hors ligne

#4 28-07-2010 12:43:22

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : recuperation de variable d'une page à l'autre

Le mieux pour la syntaxe est d'utiliser la chose suivante :

$query = sprintf("SELECT * FROM video WHERE nom_mot='nom_mot'  LIMIT %d, %d",$premiereEntree,$messagesParPage);
$retour_messages = mysql_query($query);

Ainsi pas de soucis avec les quotes.

%d pour un entier, %s pour une chaîne de caractère et les autres sont dans la documentation php.

Si tu as toujours la même erreur affiches tes deux variables et testes la requête avec les deux valeurs dans phpmyadmin.
Ta requête ne renvoie peut être rien tout simplement.

Hors ligne

#5 28-07-2010 14:13:47

allhambra
Membre
Lieu : Pau (64)
Inscription : 10-09-2009
Messages : 75
Site Web

Re : recuperation de variable d'une page à l'autre

coucou,
maintenant j'ai

$id_mot = ($_GET['id_mot']);
//echo $id_mot;
$premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire WHERE nom_mot="nom_mot"

//$retour_messages=mysql_query('SELECT * FROM video   LIMIT '.$premiereEntree.', '.$messagesParPage.'');
 
      $query = sprintf("SELECT * FROM video WHERE id_mot='id_mot'  LIMIT %d, %d",$premiereEntree,$messagesParPage);
      $retour_messages = mysql_query($query);

 49 while($donnees_messages=mysql_fetch_assoc($retour_messages)) // On lit les entrées une à une grâce à une boucle
{

qui me donne

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in webtv-thematique.php  on line 49

sad

Hors ligne

#6 28-07-2010 15:11:34

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : recuperation de variable d'une page à l'autre

Si tu as toujours la même erreur affiches tes deux variables et testes la requête avec les deux valeurs dans phpmyadmin.
Ta requête ne renvoie peut être rien tout simplement.

Hors ligne

#7 28-07-2010 15:54:05

allhambra
Membre
Lieu : Pau (64)
Inscription : 10-09-2009
Messages : 75
Site Web

Re : recuperation de variable d'une page à l'autre

ben normalement si, j'ai vérifier dans ma BDD.

Il récupère bien l'id

www.monsite.com/webtv-thematique.php?id_mot=1

mais je dois foirer ma requête.
C'est la clause WHERE qui le perturbe car quand je mets

$retour_messages=mysql_query('SELECT * FROM video   LIMIT '.$premiereEntree.', '.$messagesParPage.'');

while($donnees_messages=mysql_fetch_assoc($retour_messages)) // On lit les entrées une à une grâce à une boucle
{

il fonctionne parfaitement.

Je ne m'y prends peut être pas bien : je souhaite voir apparaitre sur cette page toutes les vidéo de ma bdd qui contiennent l'id du mot selectionné dans le champ id mot de la table vidéo. Est ce que le fait qu'il y ait plusieurs id_mot dans ce champ peut géner la requete ??

parce que du coup, ce n'est pas vraiment WHERE id_mot[large]=[/large]'id_mot' mais plutôt [large]contient[/large] id_mot

Dernière modification par allhambra (28-07-2010 15:54:29)

Hors ligne

#8 28-07-2010 16:18:31

allhambra
Membre
Lieu : Pau (64)
Inscription : 10-09-2009
Messages : 75
Site Web

Re : recuperation de variable d'une page à l'autre

Et je me demandais aussisi la requete de pagination pouvais gêner ??

$retour_total=mysql_query('SELECT COUNT(*) AS total FROM video'); //Nous récupérons le contenu de la requête dans $retour_total
$donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
$total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total.

sinon c'est peut être mes tables ?
Champs de ma table vidéo (id (cle primaire et auto incrément) et id_mot sont en INT 11
id   title  nom  contenu  description  publication  fin  etat  id_mot  id_organisateur  lieux

Champs de la table motscle (id_mot est en INT 11 avec auto incrément et clef primaire)
id_mot  nom_mot  etat  alias

serait il possible de faire un select sur les champs "id_mot" des deux tables WHERE id_mot = l'id récupéré ???

C'est l'avant dernière page du site et j'ai jusque demain soir pour tout boucler.
Peut être que demain à tête reposée j'y verrai plus clair

Hors ligne

#9 28-07-2010 18:35:57

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : recuperation de variable d'une page à l'autre

Si ce n'est pas la valeur exacte il ne faut en effet pas utiliser une égalité.
Il te faut utiliser la syntaxe LIKE.

Tu trouveras ton bonheur là bas à travers quelques exemples : http://dev.mysql.com/doc/refman/5.0/fr/ … tions.html

Hors ligne

#10 28-07-2010 19:19:55

allhambra
Membre
Lieu : Pau (64)
Inscription : 10-09-2009
Messages : 75
Site Web

Re : recuperation de variable d'une page à l'autre

oui, j'avais déjà testé, mais "LIKE'%$id_mot%' ne fait pas le tri et me renvoie tous les enregistrements sad

Hors ligne

#11 28-07-2010 21:03:07

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : recuperation de variable d'une page à l'autre

Quel tri ?
Montres nous un exemple car là je ne comprends rien...

En gros un = ne te renvoie rien et un like te renvoie de trop.

Hors ligne

#12 28-07-2010 21:15:38

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : recuperation de variable d'une page à l'autre

Bonjour,

Allhambra a écrit :

oui, j'avais déjà testé, mais "LIKE'%$id_mot%' ne fait pas le tri et me renvoie tous les enregistrements

Juste comme ça pour info, prenons  par exemple une table avec 10000 enregistrement et que sur TOUS les enregistrements la colonne col_x de type varchar le contenu commence par ART, et peu importe la suite du contenu de la colonne sur chaque enregistrement.

Si dans ta requete tu fait un WHERE col_x like '%ART*%'  : Ta requete te renverras les 10000 enregistrements en résultat. Si tu fait par contre un WHERE col_x like '%Beaucoup*%' elle ne te renverra aucun enregistrement. Un where col_x like '%*Beaucoup*%' te retournera tous les enregistrements qui contiennent le mot beaucoup dans ta colonne col_x.

Moralité : A toi donc de mettre un critère de recherche PERTINENT dans ton Like sachant se que contient la colonne sur laquelle tu établis ton critère de recherche.

J'espère que cela t'a aidé.

++

Dernière modification par Jc (28-07-2010 21:16:21)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#13 29-07-2010 08:44:27

allhambra
Membre
Lieu : Pau (64)
Inscription : 10-09-2009
Messages : 75
Site Web

Re : recuperation de variable d'une page à l'autre

Coucou,
merci pour vos réponses, je me sens moins seule smile
je suis désespérée et j'ai cogité toute la nuit.

- Je me suis dit que comme il y à plusiers "id_mot dans le champs, il fallait que je trouve un truc pour les séparer.
dans ma bdd, le champ contient par exemple : 1,21, je fais donc appel à $id_mot = str_replace(",", " ", $id_mot);  (est ce une bonne idée ??)

- j'ai affiché la requête pour voir ce qui ce passait il prend bien en compte l'id_mot et me retourne comme echo

La requete SQL execute est : select * from video where id_mot like "%1%" LIMIT 0, 3
$messagesParPage=3; //Nous allons afficher 3 messages par page.

//Une connexion SQL doit être ouverte avant cette ligne...
$retour_total=mysql_query('SELECT COUNT(*) AS total FROM video'); //Nous récupérons le contenu de la requête dans $retour_total
$donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
$total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total.

//Nous allons maintenant compter le nombre de pages.
$nombreDePages=ceil($total/$messagesParPage);

if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
{
     $pageActuelle=intval($_GET['page']);
     
     if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
     {
          $pageActuelle=$nombreDePages;
     }
}
else // Sinon
{
     $pageActuelle=1; // La page actuelle est la n°1    
}

$premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire WHERE nom_mot="nom_mot"


//$id_mot=$_GET['id_mot'];
$id_mot = str_replace(",", " ", $id_mot);                   // on remplace les , par des espaces
$tab=explode(" " , $id_mot);                                // on place les différents mots dans un tableau
$nb=count($tab);                                            // on compte le nbr d'élément du tableau.

$sql="select * from video where id_mot like \"%$tab[0]%\" LIMIT $premiereEntree, $messagesParPage";   //on prépare la requête SQL.
for($i=1 ; $i<$nb; $i++)
        {
        $sql.="$operateur id_mot like \"%$tab[$i]%\" ";       // on boucle pour integrer tous les mots dans la requête
        }
//mysql_connect($host,$user, $passwd);                    // on se connecte au serveur
$result = mysql_db_query($db,$sql);                     // on execute la requête SQL.
if($result)
        {
        if(mysql_num_rows($result)==0) echo "<center><b>Pas de Résultat</b></center>
"; //si il n'y a pas de résultats
        else
                {
                echo "<center><b>Résultat(s)</b></center><br>";
                while($row = mysql_fetch_array($result))
                        {
        $nom = $row["nom"];
        echo " | < a href=\"video.php?$nom\">$nom</a> ";     
                echo $row["title"];  echo $row["publication"];
        echo $row["description"];
               
                        }
        mysql_free_result($result);
                }
        }
echo "La requete SQL execute est : $sql" ;

echo' <br />';
    //J'ai rajouté des sauts à la ligne pour espacer les messages.  


echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages
for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
{
     //On va faire notre condition
     if($i==$pageActuelle) //Si il s'agit de la page actuelle...
     {
         echo ' [ '.$i.' ] ';
     } 
     else //Sinon...
     {
          echo ' <a href="webtv-thematique.php?page='.$i.'">'.$i.'</a> ';
     }
}
echo '</p>';
?>

pour tester
première page

Pau doit renvoyer 18 resultat selon phpmyadmin
Commerce en renvoi 6

Hors ligne

#14 29-07-2010 08:49:16

allhambra
Membre
Lieu : Pau (64)
Inscription : 10-09-2009
Messages : 75
Site Web

Re : recuperation de variable d'une page à l'autre

rectificatif
première page

Hors ligne

#15 29-07-2010 09:31:17

allhambra
Membre
Lieu : Pau (64)
Inscription : 10-09-2009
Messages : 75
Site Web

Re : recuperation de variable d'une page à l'autre

Alléluia !!!
Ca fonctionne enfin à force de triturer le code  big_smile

J'ai juste un dernier petit détail à régler concernant ma pagination car si je n'ai que 3 resultats (sport par exemple) ma pagination reste

Page : [ 1 ] 2  3  4  5  6  7  8  9  10  11  12  13

puisque je ne fais pas le trie sur

$retour_total=mysql_query('SELECT COUNT(*) AS total FROM video '); //Nous récupérons le contenu de la requête dans $retour_total
$donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
$total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total.

//Nous allons maintenant compter le nombre de pages.
$nombreDePages=ceil($total/$messagesParPage);

mais si j'applique le tri sur la pagination et ma requete, il me retourne

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in webtv-thematique.php  on line 13
$donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.

Hors ligne

#16 29-07-2010 16:21:37

moogli
Modérateur
Inscription : 08-05-2009
Messages : 336
Site Web

Re : recuperation de variable d'une page à l'autre

salut,

le message est généralemetn du au fait que la requete est foireuse, pour cela utilise le retour de la fonction mysql_query()

par exemple

<?php
$requete ='select truc from machin';
$ret = mysql_query($requete);
if ($ret === false) {
echo '<p class="erreursql">Erreur Sql : '. mysql_error().'<br /> Requete : '.$requete.'</p>';
}
else {
//traitement
}
?>

Tu pourra ainsi voir le problème de la requete SQL.

ceci dit le count (*) c'est moyen, le mieux étant de compter quelque chose de précis (une clef prmiaire par exemple).

@+


Il en faut peu pour être heureux pompompompompompompompompompompom

Hors ligne

#17 29-07-2010 16:28:59

allhambra
Membre
Lieu : Pau (64)
Inscription : 10-09-2009
Messages : 75
Site Web

Re : recuperation de variable d'une page à l'autre

coucou, moogli,

meric du tuyau;) je vais tester ça de suite !

Hors ligne

#18 29-07-2010 16:29:32

moogli
Modérateur
Inscription : 08-05-2009
Messages : 336
Site Web

Re : recuperation de variable d'une page à l'autre

de rien


Il en faut peu pour être heureux pompompompompompompompompompompom

Hors ligne

#19 29-07-2010 16:40:42

allhambra
Membre
Lieu : Pau (64)
Inscription : 10-09-2009
Messages : 75
Site Web

Re : recuperation de variable d'une page à l'autre

bon,


en modifiant le code comme indiqué

$retour_total='SELECT COUNT(*) AS total FROM video where id_mot like \"%$tab[0]%\" ';
//Nous récupérons le contenu de la requête dans $retour_total
$donnees_total=mysql_query($retour_total); //On range retour sous la forme d'un tableau.
$total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total.
//Nous allons maintenant compter le nombre de pages.
$nombreDePages=ceil($total/$messagesParPage);

je n'ai effectivement plus de message d'erreur, mais je n'ai plus la numérotation non plus sad

j'avais oublié comme c'est fastidieux de coder, lol

Hors ligne

#20 29-07-2010 17:01:22

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : recuperation de variable d'une page à l'autre

Enlèves les \ ils ne servent à rien et sont surement interprétés.
Et fais un count sur la clé primaire comme te l'a conseillé Moogli. ^_-

Hors ligne

#21 29-07-2010 17:06:55

allhambra
Membre
Lieu : Pau (64)
Inscription : 10-09-2009
Messages : 75
Site Web

Re : recuperation de variable d'une page à l'autre

salut xTG,

$retour_total=mysql_query('SELECT COUNT(id) AS total FROM video where id_mot like "%$tab[0]%" '); //Nous récupérons le contenu de la requête dans $retour_total
$donnees_total=mysql_query($retour_total); //On range retour sous la forme d'un tableau.
$total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total.

//Nous allons maintenant compter le nombre de pages.
$nombreDePages=ceil($total/$messagesParPage);

boubou bou, toujours pas de numerotation

Hors ligne

#22 29-07-2010 17:12:20

allhambra
Membre
Lieu : Pau (64)
Inscription : 10-09-2009
Messages : 75
Site Web

Re : recuperation de variable d'une page à l'autre

l'echo des erreur me renvoie

Erreur Sql : 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 'Resource id #3' at line 1 Requete : Resource id #3

et

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in webtv-thematique.php on line 116

il sort d'où ce #3 ???

Hors ligne

#23 29-07-2010 18:56:57

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : recuperation de variable d'une page à l'autre

Tu fais un mysql_query() dans un autre. Cette fonction retourne une ressource.

Hors ligne

#24 29-07-2010 19:45:56

moogli
Modérateur
Inscription : 08-05-2009
Messages : 336
Site Web

Re : recuperation de variable d'une page à l'autre

affiche la requête dans le message d'erreur, globalement ta requête est foireuse ^^

et si tu regarde bien ce que tu a mis (ou si tu fait un echo) tu verra que ce n'est pas le contenu tu tableau $tab index 0 qui est dans la chaine du like mais bien $tab[0] et comme mysql essai d'interpreter ce que tu lui demande il te dit que c'est pas bon d'ou l'erreur de ressource ..

Bref debuguer, debuguer et encore debuguer c'est le chemin de croix du codeur ^^

en gros

<?php
//Nous récupérons le contenu de la requête dans $retour_total
$requete = 'SELECT COUNT(id) AS total FROM video where id_mot like \'%'.$tab[0].'%\' '; // <= la deja c'est mieux
$retour_total=mysql_query($requete);
if ($retour_total === false) {
  echo '<p class="erreurSQL">ERREUR SQL : '.mysql_error().'<br /> Requete : '.$requete.'</p>';
  // si besoin est
  $nombreDePages= false; // et avant d'afficher le reste de la page tu teste si $nombreDePages === false
}
else {
  $donnees_total=mysql_query($retour_total); //On range retour sous la forme d'un tableau.
  $total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total.
  //Nous allons maintenant compter le nombre de pages.
  $nombreDePages=ceil($total/$messagesParPage);
}
?>

Il en faut peu pour être heureux pompompompompompompompompompompom

Hors ligne

#25 02-08-2010 13:37:13

allhambra
Membre
Lieu : Pau (64)
Inscription : 10-09-2009
Messages : 75
Site Web

Re : recuperation de variable d'une page à l'autre

bonjour a tous, j'espère que vous avez passé un bon week end.

un grand merci a vous tous, ça fonctionne parfaitement. smile
Allez, plus qu'une page à coder et le site sera terminé ( je pourrais enfin profiter de mes vacances) big_smile

Dernière modification par allhambra (02-08-2010 14:46:15)

Hors ligne

Pied de page des forums