Vous n'êtes pas identifié(e).
Pages :: 1
J'ai comme idée que c'est de même que ça se passe pour afficher seulement les articles de cette catégorie :
?>
<form>
<select name="lechamp" onchange="this.options[this.selectedIndex].value,">
<option selected value="<?php echo $lechamp="noart"; ?>">No Article</option>
<option selected value="<?php echo $lechamp="nocat"; ?>">Catégorie</option>
</select>
</form>
<?php
$req = mysql_query("SELECT * FROM produits ORDER BY $lechamp ASC LIMIT $limit_start,$pagination",$db) or die(mysql_error());
Je pense que je suis dans l'erreur.
Salutations
Hors ligne
Déjà :
C'est pas bon ça, dans ton cas voici ce qu'il fallait si $lechamp est le tableau retourné par ta requête :
Cependant je n'ai pas compris ta question.
Veux-tu lister les catégories sans leurs articles ?
Veux-tu lister les catégories avec leurs articles rangés en dessous ?
Hors ligne
J'ai refais en fonction du tuto d'ici :
$db = mysql_connect('localhost', 'root', 'root') or die(mysql_error());
mysql_select_db('cristauxphil', $db) or die(mysql_error());
$select = mysql_query ("SELECT COUNT(*) FROM produits");
$row = mysql_fetch_row($select);
$req = mysql_query("SELECT * FROM produits ORDER BY noart ASC LIMIT $limit_start,$pagination",$db) or die(mysql_error());
//***
$rowcat = mysql_fetch_row($select);
if ( !$rowcat[0] ) {
echo '<option>Aucun genre</option>';
} else {
while ( $rowcat = mysql_fetch_array($db)) {
echo '<option value="'.$rowcat['nocat'].'">'.$rowcat['nocat'].'</option>';
}
}
je pense que je n'y suis pas.
Mon but est d'afficher que les champs qui contiennent seulement mes catégories..
Dernière modification par dan4 (29-03-2010 14:07:58)
Salutations
Hors ligne
Déjà :
<?php echo $lechamp="nocat"; ?>C'est pas bon ça, dans ton cas voici ce qu'il fallait si $lechamp est le tableau retourné par ta requête :
<?php echo $lechamp['nocat']; ?>Cependant je n'ai pas compris ta question.
Veux-tu lister les catégories sans leurs articles ?
Veux-tu lister les catégories avec leurs articles rangés en dessous ?
Faire ressortir les catégorie.
sélectionner que les pommes et ne voir que les pommes.
Salutations
Hors ligne
J'ai tenté ceci :
$wherenocat = "WHERE nocat ='Amétis'";
$req = mysql_query("SELECT * FROM produits $wherenocat ORDER BY noart ASC LIMIT $limit_start,$pagination",$db) or die(mysql_error());
$rowcat = mysql_fetch_row($select);
if ( !$rowcat[0] )
{
echo '<option>Aucun genre</option>';
}
else
{
while ( $rowcat = mysql_fetch_array($db)) {
echo '<option value="'.$wherenocat.'">'.$wherenocat.'</option>';
}
}
//***
Je suis bloqué rendu là.
Ce qu'il faut comme résultat :
Afficher toute la liste si je choisi par défaut "tout" ou bien si je choisi une catégorie, afficher la catégorie. cependant, il faut que lorsque j'affiche par page, que cela continue à afficher par page la catégorie choisie.
Salutations
Hors ligne
Une nouvelle manière que je pensais mais qui ne fonctionne pas :
?>
<form>
<select size="1">
<option value="">Tous</option>
<option value="<?php echo $whereoption= "WHERE nocat = 'ametis'"; ?>">ametis</option>
<option value="<?php echo $whereoption= "WHERE nocat = 'zzz'"; ?>">zzz</option>
</select>
<input type="submit" value="Submit">
</form>
<?php
echo $whereoption;
/**/
$req = mysql_query("SELECT * FROM produits $whereoption ORDER BY noart ASC LIMIT $limit_start,$pagination",$db) or die(mysql_error());
Salutations
Hors ligne
Ta dernière méthode est déjà mieux mais...
Si tu souhaites récupérer quelques chose pourquoi ne nommes-tu pas ton champs select ?
Et pourquoi ne remplis-tu pas ton champ form ?
Ensuite voilà la marche à suivre en plus propre pour récupérer la valeur :
Hors ligne
Merci de m'avoir répondu.
Malheureusement, ça ne fonctionne pas.
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in E:\winfolders\EasyPHP5.2.10\www\produits\affiche_select.php on line 135
Je vais essayer qqchose d'autre.
C'est comme si le script n'était pas capable de reconnaitre par défaut la requête. Sans la condition, la requête seule marche mais je ne peux pas faire un choix par catégorie. Même si ça marcherait, il ne conservera peut-etre pas la préférence qui est de trier par catégorie lorsque je cliquerait sur précédent et suivant.
Dernière modification par dan4 (30-03-2010 15:27:39)
Salutations
Hors ligne
Laisses moi deviner. Ton mysql_fetch_array() se trouve en dehors de mon if non ? ^^
Dans ce cas PHP te dit la vérité, si on ne rentre pas dans la boucle (car on ne demande aucun affiche) la requête n'existe pas ce qui est normal, alors pouruoi vouloir afficher ?
Hors ligne
Je pense que rendu ici, ça me prendrait un tutorial sur le sujet.
Etre en mesure de sélectionner selon une rubrique.
Je fais des recherche et je trouve rien qui soit simple.
"Ton mysql_fetch_array()" je pense bien que oui.. j'ai eu le temps de tester
pas mal d'autre chose entre-temps.
Dans nocat qui contient les rubriques, je dois pouvoir afficher par rubriques.
Ce n'est pas obligé d'utiliser FORM mais ça peut-être sous forme de menu qui serait
plus flexible.
A date, ce qui se passe, le contenu de la rubrique s'affiche dans le menu déroulant
mais je peux rien faire avec ce menu déroulant.
Je montre en image :
La notion de WHERE, je la comprends bien. Mais lorsqu'on doit mettre une variable
en utilisant un formulaire, la, je suis perdu. Un bon tutorial serait pas un refus.
Dernière modification par dan4 (30-03-2010 19:08:10)
Salutations
Hors ligne
Ce qui serait un peu ennuyeux serait que je duplique la page affiche.php pour chaque Catégorie et la seule chose qui changerait dans la page c'est
WHERE nocat = 'lacategorie'
ça serait plate de faire cela.
J'essais de voir pour des tutos et je trouve rien et dans les forums, pas grand chose la dessus.
Je mets mon code complet de AFFICHE.PHP au cas que quelqu'un aurait une idée qui marcherait.
/*thum*/
.htrans:hover{
filter:alpha(opacity=50);
opacity: 0.5;
-moz-opacity:0.5;
}
.thumbnail{
position: relative;
z-index: 0;
}
.thumbnail:hover{
background-color: transparent;
z-index: 50;
}
.thumbnail span{
position: absolute;
background-color: lightyellow;
padding: 5px;
left: -1000px;
border: 1px dashed gray;
visibility: hidden;
color: black;
text-decoration: none;
}
.thumbnail span img{
border-width: 0;
padding: 2px;
}
.thumbnail:hover span{
visibility: visible;
top: -50px;
left: 60px;
}
/*pagination*/
.pagination {
line-height:2em;
text-align:center;
}
.pagination a,
.pagination span {
padding:0.2em 0.5em;
}
.pagination a {
border:1px solid #9AAFE5;
color:#105CB6;
text-decoration:none;
}
.pagination a:hover {
border:1px solid #296BB5;
color:#000031;
}
.pagination .prevnext {
font-weight:bold;
}
.pagination span.disabled {
border:1px solid #DDDDDD;
color:#999999;
}
.pagination span.current {
border:1px solid #2E6AB1;
background-color:#2E6AB1;
color:#ffffff;
font-weight:bold;
}
-->
</style>
<?php
include 'functions.inc.php';
//Numero de page (1 par défaut)
if( isset($_GET['page']) && is_numeric($_GET['page']) )
$page = $_GET['page'];
else
$page = 1;
//saut de page
$pagination = 3;
$limit_start = ($page - 1) * $pagination;
$db = mysql_connect('localhost', 'root', 'root') or die(mysql_error());
mysql_select_db('cristauxphil', $db) or die(mysql_error());
$select = mysql_query ("SELECT COUNT(*) FROM produits");
$row = mysql_fetch_row($select);
$req = mysql_query("SELECT * FROM produits ORDER BY noart ASC LIMIT $limit_start,$pagination",$db) or die(mysql_error());
echo '<h5 style="text-align:center">Présentement, il y\'a ['.$row[0].'] items disponibles en ligne.</h5>';
echo '<table width="100%" align="center"><tr><td width="100%" align=center>';
echo '<table>
<tr>
<th><h5>Photo</h5></th>
<th><h5>Catégorie</h5></th>
<th><h5>Numéro</h5></th>
<th><h5>Article</h5></th>
<th><h5>Taille</h5></th>
<th><h5>Stock</h5></th>
<th><h5>Prix</h5></th>
</tr>';
while($data = mysql_fetch_array($req))
{
if (file_exists('imgart/'.$data['image'])) {
$source = "imgart/". $data['image'];
$taillemax=50;
$img = getimagesize($source);
$x=$img[0];
$y=$img[1];
if ($x > $y)
{
$y=$y*(($taillemax)/$x);
$x=$taillemax;
}
if ($y > $x)
{
$x=$x*(($taillemax)/$y);
$y=$taillemax;
}
if ($y == $x)
{
$x=$taillemax;
$y=$taillemax;
}
} else { $source = 'imgart/none.png'; }
echo '<tr>';
?>
<td><a class="thumbnail" href="#thumb"><img class="htrans" src="<?php echo $source; ?>" width="<?php echo $x; ?>" height="<?php echo $y; ?>" border="0"><span><img src="<?php echo $source; ?>" /></span></a></td>
<?php
echo '<td><p>'. $data['nocat'] . '</p></td>';
echo '<td><p>'. $data['noart'] . '</p></td>';
echo '<td><p>' . $data['article'] . '</p></td>';
echo '<td><p>' . $data['taille'] . '</p></td>';
echo '<td><p>'. $data['stock'] . '</p></td>';
echo '<td><p style="background:#ffffab; font-size:14px;">' . $data['prix'] . '</p></td>';
echo '</tr>';
echo '<tr>';
echo '<td style="background-color:#ffffef; text-align:left; border-bottom: 3px inset #FF9900;" colspan="7"><p><b>Détails :</b> ' . $data['details'] . '</p></td>';
echo '</tr>';
}
echo '</table>';
// Nb d'enregistrement total
$nb_total = mysql_query('SELECT COUNT(*) AS nb_total FROM produits');
$nb_total = mysql_fetch_array($nb_total);
$nb_total = $nb_total['nb_total'];
// Pagination
$nb_pages = ceil($nb_total / $pagination);
// Affichage
echo '<p class="pagination">' . pagination($page, $nb_pages) . '</p>';
echo '</td></tr></table>';
mysql_close();
?>
Un moment donné faut que je passe à autre chose si je ne trouve pas de solution.
Merci à vous deux de m'avoir aider. XTG et Pierro.
Salutations
Hors ligne
Dans ce cas voici un code que tu pourras adapter :
Avec ce code si tu n'utilises pas de formulaire tu affiches tout.
Si tu sélectionnes une catégorie tu n'auras que la catégorie.
N'hésites pas à demander ce que tu ne comprends pas.
Hors ligne
Dans ce cas voici un code que tu pourras adapter :
if( !empty($_POST['nocat']) )
{
if( $_POST['nocat'] == "nocat" ) // On sélectionne tout
$sql = "SELECT id, nom FROM produits ORDER BY noart ASC LIMIT $limit_start,$pagination";
else // Seulement une catégorie
$sql = "SELECT id, nom FROM produits WHERE noart={$_POST['noart']} ORDER BY noart ASC LIMIT $limit_start,$pagination";
}
else
$sql = "SELECT id, nom FROM produits ORDER BY noart LIMIT $limit_start,$pagination";
$req = mysql_query($sql,$db) or die(mysql_error());
Avec ce code si tu n'utilises pas de formulaire tu affiches tout.
Si tu sélectionnes une catégorie tu n'auras que la catégorie.
N'hésites pas à demander ce que tu ne comprends pas.
M-E-R-C-I
Là, je pense que c'est dans mon formulaire le problème :
noart : contient les articles.
nocat : est la catégorie.
- ametis : est une sous-catégorie.
- zzz : est aussi une sous-catégorie.
name="ici" irait avec le WHERE
j'écris cela pour se démêler un peu.
if(!empty($_POST['nocat']))
{
if( $_POST['nocat'] == "nocat" ) // On sélectionne tout
{
$sql = "SELECT * FROM produits ORDER BY noart ASC LIMIT $limit_start,$pagination";
}
else // Seulement une catégorie
{
$sql = "SELECT * FROM produits WHERE noart={$_POST['ici']} ORDER BY noart ASC LIMIT $limit_start,$pagination";
}
}
else
{
$sql = "SELECT * FROM produits ORDER BY noart LIMIT $limit_start,$pagination";
}
$req = mysql_query($sql,$db) or die(mysql_error());
Dernière modification par dan4 (31-03-2010 16:06:10)
Salutations
Hors ligne
Un option ne porte pas de name car c'est le select qui le renseigne.
Mais si je comprend bien tu as un select par catégorie ? Quel est l'intérêt ?
Tu peux tout mettre dans un seul select avec un typage de ce genre pour différencier à la réception :
Ensuite à la réception il suffit de faire un explode() sur le "|" et vérifier les deux valeurs pour construire la requête.
Hors ligne
En faite, mon problème est de choisir un élément comme ceci :
dans le champs catalogue, afficher que les "zzz" ou bien "ametis" ou bien "...".
"zzz" dans menu déroulant va mettre à WHERE nocat = 'zzz' mais je dois remplacer zzz par une variable. tout ce dont j'ai essayé à date, ne fonctionne pas. Si je mets directement WHERE nocat = 'zzz', oui ça marche.. mais avec le menu, non.
J'ai essayé avec <input type="text"> ça semblé fonctionner... mais j'ai pas remarqué si ça marchais dans toutes les conditions vu ta dernière portion de script..
ha oui, les noms des champs :
CREATE TABLE produits
(id INT (11) not null AUTO_INCREMENT,
nocat VARCHAR (12) not null ,
noart VARCHAR (12) not null ,
article VARCHAR (66) not null ,
taille VARCHAR (12) not null ,
stock VARCHAR (12) not null ,
prix VARCHAR (12) not null ,
details TEXT (112) not null ,
PRIMARY KEY (id), INDEX (id), UNIQUE (id))
si je clique sur suivant à page 2:
http://127.0.0.1/produits/affiche_selec … php?page=2
Si je clique sur menu ça me donne :
http://127.0.0.1/produits/affiche_selec … ocat=nocat
mon formulaire corrigé avec le traitement :
...
<form>
<select name="nocat">
<option value="nocat">nocat</option>
<option value="nocat|zzz">zzz</option>
<option value="nocat|ametis">ametis</option>
</select>
<input type="submit" value="Envoyer">
</form>
<?php
if(!empty($_POST['nocat']))
{
if( $_POST['nocat'] == "nocat" ) // On sélectionne tout
{
$sql = "SELECT * FROM produits ORDER BY noart ASC LIMIT $limit_start,$pagination";
}
else // Seulement une catégorie
{
$sql = "SELECT * FROM produits WHERE nocat={$_POST['nocat']} ORDER BY noart ASC LIMIT $limit_start,$pagination";
}
}
else
{
$sql = "SELECT * FROM produits ORDER BY noart LIMIT $limit_start,$pagination";
}
$req = mysql_query($sql,$db) or die(mysql_error());
...
Le formulaire ne donne aucun choix.
Afin de mieux m'aider et vous permettre de mieux faire les choses, voici le .zip contenant tout :
Je suis rendu à un point de ne plus vouloir continuer malgré les efforts que j'y mets, le succès ne cours pas après moi comme c'est la.
Merci de votre attention.
Dernière modification par dan4 (03-04-2010 16:28:35)
Salutations
Hors ligne
Si tu ne souhaites pas continuer c'est bien dommage.
Mais ce qui est aussi dommage c'est que tu ne prend en compte que la moitié de mes messages à chaque fois donc je dirai que c'est normal que tu ais des soucis.
Hors ligne
bon, j'ai réussi avec INPUT mais SELECT OPTION, j'ai laissé tombé pour fin de tests.
si je tappe un mot qui a plus de 3 enregistrements, il va afficher que 3 puisque le page par page est seulement de 3. Je dois absolument supprimer le page par page pour le critère. voici le code:
note, si je laissais le page par page, lorsque je clique sur suivant, il ne va plus afficher mon critère. C'est pour ça que j'ai été obligé de supprimer le page par page lorsque je fais un critère.. j'aurais voulu réussi à 100%... mais bon...
<form method="POST">
<input type="text" name="nocat"> <input type="submit" value="Envoyer">
</form>
<?php
if (isset($_POST['nocat']))
{
if($_POST['nocat'] != '')
{
{ $req = mysql_query("SELECT * FROM produits WHERE nocat = '". $_POST['nocat'] ."' ORDER BY noart ASC LIMIT $limit_start,$pagination",$db) or die(mysql_error()); }
}
else
{ $req = mysql_query("SELECT * FROM produits ORDER BY noart ASC LIMIT $limit_start,$pagination",$db) or die(mysql_error()); }
}
else
{ $req = mysql_query("SELECT * FROM produits ORDER BY noart ASC LIMIT $limit_start,$pagination",$db) or die(mysql_error()); }
Dernière modification par dan4 (02-04-2010 23:38:52)
Salutations
Hors ligne
Pour information la récupération d'une valeur d'un champs input revient au même que pour un champs select.
équivaut à :
<select name="mon_champ">
<option value="valeur_1">valeur 1</option>
<option value="valeur_2">valeur 2</option>
</select>
C'est juste qu'on peut mettre n'importe quelle valeur dans le input alors que le select ne laissera que deux choix : $_POST['mon_champ']
Hors ligne
Pour information la récupération d'une valeur d'un champs input revient au même que pour un champs select.
<input type="text" name="mon_champ"/>équivaut à :
<select name="mon_champ">
<option value="valeur_1">valeur 1</option>
<option value="valeur_2">valeur 2</option>
</select>C'est juste qu'on peut mettre n'importe quelle valeur dans le input alors que le select ne laissera que deux choix : $_POST['mon_champ']
J'ai résolu l'ensemble des problèmes que j'avais.
Cependant, vu que j'utilise les speudo-frame, la méthode du tuto d'ici, ça pose un conflit avec ma page d'affichage.
Incapable d'aller chercher dans un répertoire avec ?page=1 étant donné qu'il faut que je définisse les pages autorisées.
Votre code que j'ai utilisé avant de faire ma page de donnée :
// On teste que le paramètre d'url existe et qu'il est bien autorisé
// -----------------------------------------------------------------
if ( (isset($_GET['page'])) && (isset($pageOK[$_GET['page']])) ) {
include($pageOK[$_GET['page']]); // Nous appelons le contenu central de la page
} else {
include('accueil.php'); // Page par défaut quant elle n'existe pas dans le tableau
}
Un autre que j'ai testé et adapté mais sur certains hébergeurs, conflit aussi :
// la page par defaut, si les valeurs fournies sont incorrect :
$page_defaut = 'accueil';
// on recupere la valeur passé dans l'url :
if(isset($_GET["page"]))
$page=$_GET["page"];
else
$page=$page_defaut;
//Enlevons les caractères html
$page=htmlentities($page, ENT_QUOTES);
//Si on a des répertoires que l'on ne veut pas accéder, un les liste ici :
$repProteger=array('include', 'libs', 'admin');
$temp=split('/',$page);
if(in_array($temp[0],$repProteger)){ $page=$page_defaut; }
//Si jamais qq tente de penetre dans le serveur en utilisant des ./ ou :/
if(eregi("(:/)|(./)",$page)){ $page=$page_defaut; }
//Testons si la page demandé existe bien en local
if(file_exists($_SERVER["DOCUMENT_ROOT"].$_chemin.'/'.$page.'.php'))
include($page.'.php');
elseif(file_exists($page_defaut.'.php'))
include($page_defaut.'.php');
else
exit("Erreur : La page par defaut n'existe pas.");
Les deux fonctionnent mais les deux ont quelque chose qui m'empêche d'utiliser ma page affichage.php?page=1 ....
j'essais d'être inventif. Créer une façon d'accepter un fichier existant qui se trouve dans un sous-répertoire et qui a comme format déjà ?page=
Mais, qui puisse accepter un site externe à certaine condition.... Les iframes règlerait mon problème, chose que j'ai toujours utilisé auparavant dans mes sites avant que je connaisse les speudo-iframe.
Pour le page par page, j'ai pas été capable de l'appliquer pour le triage ou les critères. Alors, le tout s'affiche dans une seule page. Peut-etre en modifiant la "function", je passe sur ça.
Je ferais un autre sujet. A part de certains aspect de sécurité et d'optimisation, le sujet est [REGLE].
Dernière modification par dan4 (03-04-2010 16:31:04)
Salutations
Hors ligne
Pages :: 1