Affichage provenant de 2 tables PHP/MYSQL

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Affichage provenant de 2 tables PHP/MYSQL

par rickyboy » 07 août 2008, 15:12

VOIR PLUS BAS POUR UN AUTRE SOUCIS SUREMENT UNE NIAISERIE ENCORE LOL

ahhhhhhh tu as bien raison

connard que je suis loll j'ai omis de mettre id dans le select.

Tout fonctionne maintenant

Dire que ça fait des jours que je cherche et tout ça à cause d'un petit oublit comme ça, tu vois sur les autres pages ou le script fonctionne j'avais mit * au lieu de les détaillés.



Merci infiniment pour ta réponse et ta patience

Voilà je me sert d'un systeme d'affichage avec 24 données par pages et ont peux cliquer sur page suivante pour acceder a l'autre page mais j'ai de la misere encore avec ma requête:

voici le code :

<?php
}

echo '<br>';

// how many rows we have in database
$query   = "SELECT COUNT(*) AS numrows FROM groupes UNION SELECT COUNT(*) AS numrows FROM artistes";

$result  = mysql_query($query) or die('Error, query failed');
$row     = mysql_fetch_array($result, MYSQL_ASSOC);
$numrows = $row['numrows'];

// how many pages we have when using paging?
$maxPage = ceil($numrows/$rowsPerPage);

$self = $_SERVER['PHP_SELF'];

// creating 'previous' and 'next' link
// plus 'first page' and 'last page' link

// print 'previous' link only if we're not
// on page one
if ($pageNum > 1)
{
	$page = $pageNum - 1;
	$prev = " <a href=\"$self?page=$page\">[Précédente]</a> ";
	
	$first = " <a href=\"$self?page=1\">[Première Page]</a> ";
} 
else
{
	$prev  = ' [Précédente] ';       // we're on page one, don't enable 'previous' link
	$first = ' [Première Page] '; // nor 'first page' link
}

// print 'next' link only if we're not
// on the last page
if ($pageNum < $maxPage)
{
	$page = $pageNum + 1;
	$next = " <a href=\"$self?page=$page\">[Suivante]</a> ";
	
	$last = " <a href=\"$self?page=$maxPage\">[Dernière Page]</a> ";
} 
else
{
	$next = ' [Suivante] ';      // we're on the last page, don't enable 'next' link
	$last = ' [Dernière Page] '; // nor 'last page' link
}

// print the page navigation link
echo $first . $prev . " <strong>Page $pageNum de $maxPage</strong> " . $next . $last;
?>
le query ne fonctionne pas et normalent quand je travaille avec juste une table ça va bien mais là avec 2 tables je suis très nouveau.

S'il vous plaît pouvez vous m'indiquer comment je peux faire. Entout cas chose certaine je vais me souvenir de ce script lolll

Merci d'avance

Je viens d'essayer ceci:
$query   = "SELECT COUNT(*) AS numrows FROM groupes WHERE genres LIKE '%$h%' UNION SELECT COUNT(*) AS numrows FROM artistes WHERE genres LIKE '%$h%'";
dans la premiere page tout est ok ça me donne juste le genre demandé mais dans la page suivante ça me sort tous les genres disponibles. Je devrais pourtant avoir juste ceux du genre demandé.

par guilt92 » 07 août 2008, 12:46

Admettons que tu puisses garder le meme nom, effectivement l'image te donne des img_x et img_y donc le img restera la bonne valeur.

Le probleme, c'est qu'elle est vide :

Array ( [img_x] => 37 [img_y] => 19 [img] => )

tu vois que la valeur img est vide.

Donc le probleme vient de la page du formulaire et plus particulièrement de la valeur
$id = $donnees['id']; 
Et vu que id n'apparait pas dans ton select, c'est pas anormal que cela soit vide.

par rickyboy » 06 août 2008, 16:33

daccord,

mais quand je récupère la variable img elle est sensée me donner les détails en fonction de l'images cliquée.

Je suis un peu perdu franchement, et pour dire vrai désespéré. Je galère depuis des heures sur ce code et je n'y arrive pas :(

si tu pouvais me donner plus de détails sur le code j'apprécierais car là je ne sais vraiment plus quoi faire

Je me sert du meme script ailleurs et il fonctionne nickel avec les deux variables img. En ce qui concerne celui çi je suis certain que c'est le fait qu'il aille fouiller dans 2 tables au lieu d'une seule.

Merci d'avance

par guilt92 » 06 août 2008, 16:20

Code : Tout sélectionner

<input type="image" border="0" value="Submit" src="<?php echo "$images_tn"; ?>" name="img" border="0"> <input type="hidden" name="img" value="<?php echo "$id"; ?>">
Tu as deux éléments qui ont le même nom (name="img")...

Ca va pas faciliter la tache pour récupérer $_POST["img"]... En l occurence il récupère le 1er des deux, les coordonnées de l image, mais pas la valeur du hidden.... change le nom de l un des deux (et adapte si tu changes celui que tu veux récupérer...)

par rickyboy » 06 août 2008, 15:19

Merci guilt92

bon avec ce que tu me dis j'ai changer mon code sur la deuxieme page avec le print et j'ai ajouté le mysql error au bout de me requête et ça me donne ce message :

Array ( [img_x] => 37 [img_y] => 19 [img] => )

1


alors il semble qu'il ne ramasse pas la variable, donc le problème viendrait de la premiere page ?

voici le code de la première page :
 <?php
$h = $_POST['name'];

  // how many rows to show per page
    $rowsPerPage = 24;
    
    // by default we show first page
    $pageNum = 1;
    
    // if $_GET['page'] defined, use it as page number
if(isset($_GET['page']))
{
	$pageNum = $_GET['page'];
}

// counting the offset
$offset = ($pageNum - 1) * $rowsPerPage;


    
    $requete = mysql_query("SELECT nom,genres,origine,images_tn FROM groupes WHERE genres LIKE '%$h%' UNION SELECT nom,genres,origine,images_tn FROM artistes WHERE genres LIKE '%$h%' ORDER BY nom LIMIT $offset, $rowsPerPage");
 
    
    while($donnees = mysql_fetch_array($requete)) 
    { // boucle parcours des resultats
    $id = $donnees['id'];
    $nom = $donnees['nom'];
    $quand = $donnees['quand'];
	$lieu = $donnees['lieu'];
    $ville = $donnees['ville'];
	$origine = $donnees['origine'];
	$genres = $donnees['genres'];
    $images = $donnees['images']; 
	$images_tn = $donnees['images_tn'];  
    ?>
      </p>
  <p>
<p>
<p>
<center>
  <table align="center" width="450" border="0" cellpadding="0">
    <tr>
    <td width="52" valign="middle"><form method="post" action="genres_details.php">
              <input type="image" border="0" value="Submit" src="<?php echo "$images_tn"; ?>" name="img" border="0">
              <input type="hidden" name="img" value="<?php echo "$id"; ?>">
      </form></td>
    <td width="133" valign="middle" class="Style23"><?php echo "$nom"; ?></td>
    <td width="133" valign="middle" class="Style23"><?php echo "$genres"; ?></td>
	<td width="133" valign="middle" class="Style23"><?php echo "$origine"; ?></td>
  </tr>
</table>
On y est presque stp file moi un coup de main :)

Je tiens à dire que les scripts de ces 2 pages fonctionne très bien ailleurs mais ailleur je fais la requête sur une seule table alors que là je fais le requête sur 2 tables.

par guilt92 » 06 août 2008, 10:43

Bonjour,

Le problème peut venir de la variable $pict.

En effet tu testes la valeur de l existence de $_POST['img'] mais même si elle n'existe pas tu executes quand meme la requete, ce qui est un probleme... Tu devrais étendre ton if(isset...) à tout ton code ou au moins jusqu a la requete.

Ensuite, as tu testé la valeur de $_POST['img'] avec un simple echo ou encore
echo "<pre>".print_r($_POST)."</pre>";
?
qu'est ce que cela donne ?

Je te conseille de toujours terminer tes myslq_query par or die(mysql_error()), comme ca tu auras les erreurs SQL éventuelles de tes requetes :
$reponse = mysql_query("SELECT * FROM groupes WHERE id=$pict UNION SELECT * FROM artistes WHERE id=$pict") or die(mysql_error()); 

Affichage provenant de 2 tables PHP/MYSQL

par rickyboy » 05 août 2008, 21:01

Bonjour,

normalement je me débrouille tout seul mais là vraiment je me cherche. Je vous explique :

j'ai 2 tables soit genres et artistes
la page 1 je fait afficher toutes les données avec ce code :
 <?php
$h = $_POST['name'];

  // how many rows to show per page
    $rowsPerPage = 24;

    // by default we show first page
    $pageNum = 1;

    // if $_GET['page'] defined, use it as page number
if(isset($_GET['page']))
{
	$pageNum = $_GET['page'];
}

// counting the offset
$offset = ($pageNum - 1) * $rowsPerPage;



    $requete = mysql_query("SELECT nom,genres,origine,images_tn FROM groupes WHERE genres LIKE '%$h%' UNION SELECT nom,genres,origine,images_tn FROM artistes WHERE genres LIKE '%$h%' ORDER BY nom LIMIT $offset, $rowsPerPage");


    while($donnees = mysql_fetch_array($requete)) 
    { // boucle parcours des resultats
    $id = $donnees['id'];
    $nom = $donnees['nom'];
    $quand = $donnees['quand'];
	$lieu = $donnees['lieu'];
    $ville = $donnees['ville'];
	$origine = $donnees['origine'];
	$genres = $donnees['genres'];
    $images = $donnees['images']; 
	$images_tn = $donnees['images_tn'];  
    ?>
Jusqu'ici tout va bien les données des 2 tables s'affichent très bien.

Mon problème est quand je clique sur une images de cette page il m'envoie sur la page genres_details.php

Le problème est que je ne suis pas capable de faire afficher les données sur cette page, il me donne un message d'erreur Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home2/nb3390/public_html/zonespectacle/genres_details.php on line 13

voici mon code pour la page genres_details.php
<?php
if (isset($_POST['img'])) // Si la variable existe
{
$pict = $_POST['img'];

}
include ("connexion.php");

$reponse = mysql_query("SELECT * FROM groupes WHERE id=$pict UNION SELECT * FROM artistes WHERE id=$pict"); // Requête SQL

// On fait une boucle pour lister tout ce que contient la table :

while ($donnees = mysql_fetch_array($reponse) )

{ // boucle parcours des resultats


?>
<div id="donnees">
<p align="center" class="Style29"><?php echo $donnees['nom']; ?><br />
<br />
<p align="center" class="Style23"><img src="<?php echo $donnees['images']; ?>"/><br />
<br />
<br />
<p align="center" class="Style23"><?php echo $donnees['quand']; ?><br />

<p align="center" class="Style23"><?php echo $donnees['lieu']; ?><br />
<p align="center" class="Style23"><?php echo $donnees['ville']; ?><br />
</div>



Si quelqu'un pouvait m'éclairer j'en serais ravi car je cherche depuis longtemps et je ne trouve pas le problème. À noter que l'erreur est pour cette ligne :
while ($donnees = mysql_fetch_array($reponse) )

Donc c'est forcément ma requête de la page genres_details.php qui n'est pas bonne.

Merci d'avance pour l'aide.