Transmission de données via une URL

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

03 août 2005, 12:59

oui il ne doit pas reconnaitre $IdProduit

Pourquoi ? parceque IdProduit est une valeur récupérée par la requête SQL, dont les résultats sont placés dans le tableau $val

tu as bien affiché le nom du produit avec $val["NomProduit"], pourquoi ne fais-tu pas pareil avec IdProduit ?

$va["IdProduit"] existe, $IdProduit non
<a href="aff_discibases2.php?IdProduit=<?php print $val["IdProduit"]; ?>"><?php print ($val["NomProduit"]);?></a> 
par contre j'aimerais bien savoir pourquoi tu fais deux fois la même chose : 2 listes de produits, une fois avec mysql_fetch_array, une fois avec mysql_fetch_assoc :roll:

ton affichage n'est pas bizarre ? si je regarde bien tu affiches la liste des produits, et pour chacun tu réaffiches la liste des produits...

Eléphant du PHP | 179 Messages

03 août 2005, 13:08

YAHOO!!! Justement, j'étais en train de corriger ça quand tu m'as répondu! (Petite stisfaction du débutant qui traîne son problème depuis la semaine dernière...).

A propos des deux listes, c'est le seul moyen que j'ai trouvé pour alterner les couleurs.

La ligne de titre offre une couleur, la seconde ligne m'affichait la même que la troisième. Donc au lieu d'avoir: orange, jaune, orange, j'avais orange, jaune, jaune. Donc j'ai fait ce que j'ai pu étant donné mon niveau: j'ai bidouillé... :wink:
Petit à petit, on devient moins petit... mais qu'est-ce qu'on vieillit!

Eléphant du PHP | 179 Messages

03 août 2005, 13:55

:agenouille: :agenouille: MERCI, MERCI, pour ton aide. Je pense que je vous solliciterai encore les jours à venir...
Petit à petit, on devient moins petit... mais qu'est-ce qu'on vieillit!

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

03 août 2005, 14:04

A propos des deux listes, c'est le seul moyen que j'ai trouvé pour alterner les couleurs.

La ligne de titre offre une couleur, la seconde ligne m'affichait la même que la troisième. Donc au lieu d'avoir: orange, jaune, orange, j'avais orange, jaune, jaune. Donc j'ai fait ce que j'ai pu étant donné mon niveau: j'ai bidouillé... :wink:
il y a plus simple et plus optimisé.

Mais je ne comprends pas ce que tu souhaites exactement, et je ne vois pas trop à qoi doit ressembler la page

si tu as ton modulo qui sélectionne la couleur, pourquoi faire deux listes ?
il suffit de changer un peu le modulo si tu veux que l'alternance ne se fasse qu'1 fois sur 3, ou 4...

Eléphant du PHP | 179 Messages

03 août 2005, 14:17

Eh bien voilà, c'était du temps où je me plongeais réellement dans le php après moins d'une quinzaine d'heures d'apprentissage.

Je voulais une bête alternance des couleurs pour que mon tableau soit plus lisible. Je me doutais bien que je rallongeais la sauce pour rien, mais c'est le seul 'truc' qui fonctionnait.

Avec cette méthode, j'ai:

Ma première ligne (celle des titres colorée en orange):

Code : Tout sélectionner

<!-- titres--> <tr bgcolor="#ffcc00"> <td><b>Produit</b></td> <td><b>Disciplines des bases</b></td> </tr>
Mes lignes suivantes étaient traitées avec le modulo.

MAIS j'avais un souci: la seconde et la troisième lignes avaient la même couleur (le jaune). Donc pour contrer ça, j'ai traité spécifiquement la seconde ligne comme suit:
<tr bgcolor="#ffffe0">    
    
<td>
<a href="aff_discibases2.php?IdProduit=<?php print $IdProduit; ?>"><?php print ($val["NomProduit"]);?></a>
</td>

<td> <?php print ($val["DisciplinesBases"]);?> </td>
</tr> 
puis j'ai codé le reste comme suit:
<?php
$i = 0;
while ($data=mysql_fetch_assoc($result))
            {

if($i%2 == 0)
                {
$couleur = "#ffcc00";
                }
else
                {
$couleur = "#ffffe0";
                }
echo "<tr>";
echo "<td bgcolor= '$couleur'>";
?>

<a href="aff_discibases2.php?IdProduit=<?php print $IdProduit; ?>"><?php echo $data['NomProduit']; ?> </a>

<?php
echo "</td>";
echo "<td bgcolor=\"".$couleur."\">".$data['DisciplinesBases']."</td>";
echo "</tr>";
$i++;
            }
        }
    }
else
{
echo "<center><h2>Il n'y a pas de résultat<h2></center><br />";
}
mysql_close($lien);
?>
Il y a probablement un moyen d'optimiser tout ça. Mais j'avoue que c'était ma toute première victoire... :wink: Le reste, je connaissais déjà un peu.
Petit à petit, on devient moins petit... mais qu'est-ce qu'on vieillit!

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

03 août 2005, 14:28

et avec ça :
<?php
$couleur1 = '#ffcc00';
$couleur2 = '#ffffe0';
?>
<tr bgcolor="<?php echo $couleur1; ?>">
    <td><b>Produit</b></td>
    <td><b>Disciplines des bases</b></td>
</tr> 
<?php
// ici on récupère la valeur sélectionnée dans le formulaire précédent
$DisciplinesBases = $_POST['DisciplinesBases'];

$lien = mysql_connect("xx","xx","xx");
mysql_select_db("xx", $lien);

// requête de sélection des produits qui correspondent au paramètre "discipline"

$requete="SELECT IdProduit, NomProduit, DisciplinesBases FROM produits WHERE DisciplinesBases= '".$DisciplinesBases."'";
$result=mysql_query($requete);

// tant qu'il y a des produits à afficher, on les affiche
$cptCouleur = 1;
if (mysql_num_rows($result)) {
    while ($val=mysql_fetch_array($result)) {
    	$couleur = ($cptCouleur % 2 == 0)?$couleur1:$couleur2;
		?> 
		<tr bgcolor="<?php echo $couleur; ?>">
			<td>
				<a href="aff_discibases2.php?IdProduit=<?php print $val["IdProduit"]; ?>"><?php print ($val["NomProduit"]);?></a>
			</td>
			<td>
				<?php print ($val["DisciplinesBases"]);?>
			</td>
		</tr>
		<?php
		$cptCouleur++;
	}
} else {
	echo "<center><h2>Il n'y a pas de résultat<h2></center><br />";
}
mysql_close($lien);
?>
à 2/3 bricoles près (je ne peux pas tester) cela doit t'alterner les couleurs, avec une seule boucle ;)

si tu veux que la première ligne de produit soit de la même couleur que la ligne de titre, il suffit d'inverser les couleurs 1 et 2 dans cette ligne :
$couleur = ($cptCouleur % 2 == 0)?$couleur1:$couleur2;

Eléphant du PHP | 179 Messages

03 août 2005, 14:46

Je testerai ça ce soir, et je te dirai ce qu'il en est.

Ah, une dernière question, si je crée un moteur de recherche, je dois faire une table index: où dois-je la créer? Dans ma base sous MyAdmin au même titre que mes autres bases? Est-ce que je dois avoir coché une option fulltext ou index pour les champs dans lesquels je veux qu'il y ait une recherche en texte intégral?

p.s.: Il faudra me donner tes initiales en message privé: je pourrais faire une mention spéciale dans mon mémoire de stage... :agenouille: :agenouille: :lol:
Petit à petit, on devient moins petit... mais qu'est-ce qu'on vieillit!

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

03 août 2005, 14:54

non pas une table index, mais un index :)

je ne sais pas sur quoi tu veux faire des recherches

mais reprenons l'exemple des articles, voici la table :

Code : Tout sélectionner

Articles -------- id_article titre contenu
tu veux faire une recherche full-text sur le titre ET le contenu

donc tu vas rajouter un index :

Code : Tout sélectionner

ALTER TABLE `articles` ADD FULLTEXT ( `titre`,`contenu` )
et donc ensuite tu feras ta recherches sur ces champs, puisqu'ils seront indexés

Code : Tout sélectionner

SELECT id_article, titre FROM articles WHERE MATCH(titre, contenu) AGAINST ('mot_clé')
je t'invite à lire ce petit cours : MYSQL et la recherche textuelle

et pour plus d'indications => forum "Base de données" et nouveau sujet ;)

pour le mémoire : y'a mon site perso dans mon profil :ordi: :lol:

Eléphant du PHP | 147 Messages

03 août 2005, 16:16

Salut

tu peux m'expliquer l'interet de la recherche en full text j'ai pas vraiment bien compris

Merci

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

03 août 2005, 16:29

tu peux m'expliquer l'interet de la recherche en full text j'ai pas vraiment bien compris
oui, mais ici alors :Base de données ;)