(php) encore un bug... merci de votre regard.

Fermé
simbadzemarin - 16 juil. 2007 à 12:13
simbadzemarin Messages postés 31 Date d'inscription samedi 30 juin 2007 Statut Membre Dernière intervention 17 mars 2008 - 16 juil. 2007 à 22:15
Bonjour,
voila, le problème de la prog c'est que le nez dans le guidon, on voit plus les conneries... j'esperes que vous aurez le recul (et l'experience) bien superieur au mien...

voici une fonciton qui fonctionne (parce qu'utiliser ailleurs):
function f_liste($table, $champs, $order, $where)
{
// information pour la connection à le DB
$host = 'localhost';
$user = 'XXXXXXXX';
$pass = 'XXXXXXX';
$db = 'XXXXXXXX';

// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());

// la requete sql
$select = 'SELECT '.$champs.' FROM '.$table.' ORDER BY '.$order.' '.$where;
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );

//il faut fermer la base close

return ($result);

}

et voici un code php qui devrait fonctionner :

<?php
//quelque est le type_num de l'enregistrement : Recueil de nouvelles ?
//PARTIE 1
$result = f_liste("Types", "Type_num, Type_nom", "Type_nom", "WHERE Type_nom LIKE "%Recueil%"");
$row = mysql_fetch_array($result);
$type = $row['Type_num'];
echo $type.' '.$row['Type_nom'];
//FIN PARTIE 1
//selectionner tous les livres dont le livre_type = type_num trouvé
//PARTIE 2
$result = f_liste("Livres", "Livre_num, Livre_titre, Livre_type", "Livre_titre", "WHERE Livre_type =$type");
//FIN PARTIE 2
?>

Partez du principe que la table Types contient type_num, type_nom, type_note
que Livres contient livre_num, livre_titre, livre_type (un n° normallement lié à type_num).
Et ben figurer vous que ça marche pas ! :D
2 erreurs : la premiere vient de la partie 1, qui ne me donne pas l'enregistrement souhaité...
la deuxième vient de l'appel de la partie 2... un probleme de "" ou de ' ' certainement mais impossible de les retrouver...

Merci à quiconque prendra 5 mn de son temps !
A voir également:

12 réponses

simbadzemarin Messages postés 31 Date d'inscription samedi 30 juin 2007 Statut Membre Dernière intervention 17 mars 2008
16 juil. 2007 à 12:36
tant que j'y suis, pouvez vous me dire ou trouver des infos sur <select></select>... Je cherche coté CSS pour limiter le nombre d'enregistrement visible d'une liste et d'avoir ensuite la jolie barre d'ascenceur.
Merci encore !
0
sfel Messages postés 1640 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 15 juillet 2009 430
16 juil. 2007 à 13:58
bonjour,

alors ici
//PARTIE 1
$result = f_liste("Types", "Type_num, Type_nom", "Type_nom", "WHERE Type_nom LIKE "%Recueil%"");

et ici
//PARTIE 2
$result = f_liste("Livres", "Livre_num, Livre_titre, Livre_type", "Livre_titre", "WHERE Livre_type


essaye de bien mettre de cote autour des champs (cad ce qui est séparé par les virgules)
//PARTIE 1
$result = f_liste("Types", "Type_num", "Type_nom", "Type_nom", "WHERE Type_nom LIKE "%Recueil%"");

//PARTIE 2
$result = f_liste("Livres", "Livre_num", "Livre_titre", "Livre_type", "Livre_titre", "WHERE Livre_type


sinon pour le select, l'attribut est "size"

<SELECT name="Nom_de_la_selection" size="5" multiple>

l'attribut multiple, est si tu veux autoriser plusieurs choix.
par défaut, size = "1"
0
Bonjour,

A mon avis il doit y avoir une reeur à ce niveau:

"WHERE Type_nom LIKE "%Recueil%""

essaye avec 'WHERE Type_nom LIKE "%Recueil%"'

car tes doubles cotes au milieu referment avant celles de la fin.

Dans la construction de la requette de la fct je mettrai aussi:

 $select = "SELECT "'.$champs."' FROM '".$table.'"ORDER BY '".$order.'" " '.$where."'";


essaye de mettre un echo dans ta fonction pour afficher ton $select pour voir ce qui cloche.
0
simbadzemarin
16 juil. 2007 à 14:17
Heuu...
reponse a etudier, mais je crois que je me suis mal fait comprendre...

pour <select size=5> ça marche, mais c'est pas ce que je voulais dire... moi j'aimerais un menu deroulant normal, c'est a dire avec 1 valeur visible, son petit bouton triangle a coté, que quand je clique dessus m'apparaissent les 5 premiers choix et la barre de defilement sur le coté... Je sais pas si c'est plus claire...

pour le probleme principale,
les arguments de ma fonction sont :
$table : qui est la table en question
$champs : qui sont TOUS les champs que l'on souhaite voir
Donc je ne peux pas faire l'appel comme tu me l'indiques... Ou alors j'ai vraiment rien compris !!!

Un debut de solution ? :
$result = f_liste("Livres", "Livre_num, Livre_titre, Livre_type", "Livre_titre", "WHERE Livre_type =
'.$type.'");
Serais l'appel dans la partie 2. Les ' et " sont remis en place et ça semble fonctionner.

Par contre dans la partie 1, je n'arrive pas a trouver le hic...
Si j'ecrivais l'ensemble du code, sans passer par ma fonction, pour rechercher cette fameuse valeur j'optiendrais type_num=3. Or ici, c'est 7 ! Les deux non rien a voir (c'est pas l'enregistrement juste avant ou juste apres, les champs type_nom sont tottalement different...).
Ca doit encore etre une histoire de " et ' qui m'emmerde prodigieusement ceux là !!! :D

Mais quand même un merci a toi pour t'etre pencher dessus.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
simbadzemarin
16 juil. 2007 à 14:23
reponse en retard...
Donc la bonne reponse vient de Alain42. C'etait effectivement c'est .... de "" qui merdoyaient...
Merci a vous, on se sent moins seul dans la galere !!! :D

Reste que si vous savez pour mon select (et si je me suis bien fait comprendre...)

Merci encore
0
Oui c'est probablement un pb de simple et double quottes

Principe quand tu crée une chaine qui commence et finit par des ", tu ne peux pas en mettre à l'intérieur de ta chaine ou alors il faut les échapper par des \ ( par exemple "name=\"toto\"")
idem avec les simples quotes et si tu as des apostrophes
'je suis d\'içi'

Fais un echo "Requette: ".$select; dans ta fonction juste après:
 $select = 'SELECT '.$champs.' FROM '.$table.' ORDER BY '.$order.' '.$where;


Pour la balise <select:

L'attribut SIZE de la balise HTML SELECT, permet de définir le nombre d'options visible.
<SELECT SIZE="3"> </SELECT>

Vas voir ce site: http://www.aliasdmc.fr/balise/zone_html_select.html
0
La chuis au taf, donc je fouille pas trop le lien que tu m'as donné, mais dès ce soir je planche dessus. Pour l'instant j'ai pas vu ce que je cherchais...
J'ai trouvé l'exemple de ce que je voudrais faire... tres con... la barre d'adresse de l'exploreur internet !!! un menu deroulant, 1 adresse visible, la liste des adresses accessibles avec la barre de defilement.

Merci encore ! :D
0
sfel Messages postés 1640 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 15 juillet 2009 430
16 juil. 2007 à 18:57
tu veux faire ca par exemple

https://www.rue-montgallet.com/prix/comparer,cartes-graphiques,109,1,4,2

la sélection des marques




edit : 19h00

en tregardant le code source, c'est
<select name="mq" class="filtres">


et d'après le style.css
http://www.rue-montgallet.com/style.css

c'est
/* filtres */
.filtres{width:240px;}
.filtres-ope{width:86px;}
.filtres-nume{width:150px;}


0
voila... c'est exactement ça que je veux ! :D
mais heu... je devrais pas te repondre et travailler... zut ! Ici je sais pas si on peut voir le code source (ça m'etonnerais d'ailleurs) facilement.
Mais ton exemple est bon ! :D
0
sfel Messages postés 1640 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 15 juillet 2009 430
16 juil. 2007 à 19:08
si j'ai fait un edit.
0
pardon... avait pas vu la fin de ton message...
j'essaie ça ce soir en rentrant. Merci, je vous tiens au courant !
0
simbadzemarin Messages postés 31 Date d'inscription samedi 30 juin 2007 Statut Membre Dernière intervention 17 mars 2008
16 juil. 2007 à 22:15
ben.. je crois qu'on s'est fourvoyé...

les .form du css determine les tailles des differents menus déroulants : tu noteras qu'ils ont tous la meme taille sauf 2... et voila tes 3 .form !!!

mais merci qd même, j'epluche cette page pour me trouver eventuellement un indice. Si une gentille ame passer par là pour me dire si ça vaut le coup de chercher dans cette direction ou non... Genre en CSS on fait tout ?

Merci !
0