Aller au contenu

Bouton radio pour plusieures bases de données


Sujets conseillés

Posté

Salutation,

J'ai installé un meme script trois (03) fois dans mon site. Donc, en tout j'ai 03 meme moteurs de recherches et 03 meme bases de données.

1- Recherche locale

2- Annuaire

3- Musique

J'aimerais regrouper les 03 moteurs de recherches dans un meme et unique moteur grace à des boutons de type radio.

Comment faire pour appeller chaque base de donnée via un bouton radio?

Merci d'avance pour vos réponse.

Bien cordialement.

Posté (modifié)

Salut

pourquoi pas comme ça tout simplement ?:

<form action="page.php" method="post">
<p>Recherche Locale:<input type="radio" name="radio" value="recherche_locale" /></p>
<p>Annuaire:<input type="radio" name="radio" value="annuaire" /></p>
<p>Musique: <input type="radio" name="radio" value="musique" /></p>
<p><input type="submit" name="soumission" value="Soumettre" />
</form>

et

$MySQL['host'] = 'localhost';
$MySQL['user'] = 'root';
$MySQL['pass'] = '';
$MySQL['connection'] = _AT_mysql_connect($MySQL['host'], $MySQL['user'], $MySQL['pass']) or die(mysql_error()); // connection au serveur

switch($_POST['radio']) {
case 'recherche_locale': {
 $MySQL['base'] = 'rechrch'; // base pour recherche locale
}
case 'annuaire': {
 $MySQL['base'] = 'annu'; // base pour annuaire
}
case 'musique': {
 $MySQL['base'] = musik'; // base pour musique
}
}
$MySQL['selection'] = _AT_mysql_select_db($MySQL['base'], $MySQL['connection']) or die(mysql_error()); // Selection finale

... pas testé, dis-moi si cela marche ;)

Modifié par MS-DOS_1991
Posté

Re et merci MS-DOS_1991 ... c'est pas que je n'ai pas testé ... mais ... Un forum est fait pour avoir de l'aide et non pour se faire faire son boulot ;)

So :huh: ... je me suis battu avec durant toute la nuit ... et ça donne ça :blush:

Access denied for user 'root'@'honshu.inside.globat.com' (using password: NO)

Le manuel MuSQL dit "si vous obtenez une erreur qui contient Using password: NO , cela signifie que vous avez essayé de vous connecter sans mot de passe." Pourtant, j'ai introduit mon "pass" et j'ai mis le meme pass pour tout les bases .. mais le message revient tjrs :wacko:

Au fait, vous avez oublié un ' dans:

case 'musique': {
$MySQL['base'] = musik'; // base pour musique
}

Merci encore pour votre aide.

Bien cordialement;

NB: globat.com c'est mon hebergeur... evident

Posté

Edites les variables juste avant la commande mysql_connect. Tu verras si elles sont bien initialisées.

Fais attention notamment aux fautes d'orthographe (ben oui, ca arrive),

Fais attention aux espaces ici ou là (avant ou après la variable,

Fais attention à bien pointer vers le bon serveur sql. En général, c'est localhost, mais parfois ce n'est pas lui !

Bref, postes le morceau que tu as mis, on y verra plus clair.

Changes bien les login/pass par ### par exemple, mais ne touches pas au reste.

Posté

Là ... je crois que je suis completement perdu :whistling: ...

je vous donne le shema complet des liens.

Page INDEX :

...
<?php
   include("http://www.****.com/modules/frames_header_menu.php");
?>

<?php
   include("http://www.****.com/modules/frames_header_sherch.php");
?>

<table border="0" width="780" bottommargin="0" leftmargin="0" rightmargin="0" marginheight="0" marginwidth="0" topmargin="0" cellspacing="0" cellpadding="0" align="center" background="/banner.gif">
<tr>.... suite etc etc

Page frames_header_sherch.php: (Formulaire HTML)

<?php
//affichage du formulaire pour le moteur de recherche

$mots = isset($_REQUEST['mots']) ? $_REQUEST['mots'] : '';

if (empty($mots))
{
$value = "";
$erase = " onfocus=\"if (!erased_annuaire)this.value = ''; erased_annuaire = true;\"";
}
else
{
$value = stripslashes(htmlspecialchars($mots));
$erase = "";
}
//formulaire pour afficher le moteur de recherche
?>
<center>
<table width="780" border="0" cellspacing="0" cellpadding="0" align="center"  background="/images/plan_cherche.gif">
<tr height="55" valign="middle">
 <td width="760">
<center>
<form action="/search.php" method="post">
<input type="hidden" name="action" value="seek"><font class="BIG">Recherche</font>   
<input type="text" name="mots" size=25 maxlength=200 value="<?php echo $value; ?>"<?php echo $erase; ?> class="recherche">
   
<input type="image" border="0" name="envoyer" src="/images/chercher.gif"  width="80" height="20" alt="Valider la recherche" align="middle">
<br>
<span class="">

<input type="radio" name="radio" value="recherche_locale" checked>Locale 
<input type="radio" name="radio" value="musique">Musique 
<input type="radio" name="radio" value="annuaire">Annuaire
  
Résultats par page :
<select name="nb_results2show" class="">
<option value=10>10</option>
<option value=20>20</option>
<option value=50>50</option>
</select>
   
<input type="radio" value="AND" name="booleen" checked>Tous les mots
<input type="radio" value="OR" name="booleen">Au moins un
</span>
</center>
</td><td width="20"></form></td></tr></table>
</center>

Page search.php: (page d'action du FORM du formulaire)

<?php
//moteur de recherche
include("data_bd.php"); //variables de la base de donnée
include("functions.php"); //fonctions du script

$mots = isset($_REQUEST['mots']) ? $_REQUEST['mots'] : '';
$mots = trim($mots);
$page = isset($_GET['page']) ? (int)$_GET['page'] : 0;
if($page < 0)
exit;
.... suite etc etc

Page data_bd.php: (variables des bases de données)

<?php
/********* ADMINISTRATION **************/
//nom des tables pour la BD, les changer en cas d'installation multiples dans une même BD !
$T_admins = "admins_annuaire"; //table des administrateurs
$T_categories = "categories_annuaire"; //table des categoires
$T_commentaires = "commentaires_sites_annuaire"; //table des commentaires
$T_infos = "infos_annuaire"; //table pour le infos (anciennement admin_annuaire)
$T_sessions = "sessions_annuaire"; //table pour les sessions des administrateurs
$T_sites = "sites_annuaire"; //table pour les sites et liens
$T_sites_in_wait = "sites_in_wait_annuaire"; //table pour les sites et liens en attentes
/***************************************/

//données pour la connexion à la base de données
$db_server = "honshu.inside.globat.com"; //adresse du serveur MySQL
$db_name = "cherche"; //nom de la base de données
$db_user_login = "cherche"; //nom d'utilisateur pour la BD
$db_user_pass = "########"; //mot de passe pour la BD

$db_server = "honshu.inside.globat.com"; //adresse du serveur MySQL
$db_name = "musique"; //nom de la base de données
$db_user_login = "musique"; //nom d'utilisateur pour la BD
$db_user_pass = "########"; //mot de passe pour la BD

$db_server = "honshu.inside.globat.com"; //adresse du serveur MySQL
$db_name = "annuaire"; //nom de la base de données
$db_user_login = "annuaire"; //nom d'utilisateur pour la BD
$db_user_pass = "########"; //mot de passe pour la BD

$MySQL['host'] = 'localhost';
$MySQL['user'] = 'root';
$MySQL['pass'] = '########';
$MySQL['connection'] = _AT_mysql_connect($MySQL['honshu.inside.globat.com'], $MySQL['cherche'], $MySQL['#######']) or die(mysql_error()); // connection au serveur

switch($_POST['radio']) {
case 'recherche_locale': {
$MySQL['base'] = 'cherche'; // base pour recherche locale
}
case 'annuaire': {
$MySQL['base'] = 'annuaire'; // base pour annuaire
}
case 'musique': {
$MySQL['base'] = 'musique'; // base pour musique
}
}
$MySQL['selection'] = _AT_mysql_select_db($MySQL['base'], $MySQL['connection']) or die(mysql_error()); // Selection finale

?>

Page functions.php: (Partie BD de la page des fonctions generales du script)

/********* FONCTIONS POUR LA BD **************/

function connection_BD()
{
global $db_server, $db_user_login, $db_user_pass, $db_name;
//connexion au serveur
$linkid = _AT_mysql_connect($db_server,$db_user_login,$db_user_pass) or die ("Erreur lors de la connection au serveur MySQL !");
//selection de la BD
@mysql_select_db($db_name,$linkid) or die("Impossible de sélectionner la base de données\n<br>\nVoici l'erreur renvoyée par le serveur MySQL :\n<br>\n".mysql_error());
return $linkid;
}

function send_sql($sql,$message)
//envoi la requete $sql a la base et affiche un message si il y a eu un probleme sinon on rend le resultat
{
if(!$res = _AT_mysql_query($sql))
{
 $message_erreur = "<font color=\"#ff0000\">\n";
 $message_erreur .= "Impossible d'effectuer la requête pour $message\n";
 $message_erreur .= "<br><br>\n";
//  $message_erreur .= "Voici la requête : \n<br>\n";
//  $message_erreur .= "$sql\n";
//  $message_erreur .= "<br><br>\n";
 $message_erreur .= "Voici le message d'erreur renvoyé par la base de données :\n<br>\n";
 die("$message_erreur".mysql_errno()." : ".mysql_error()."</font>\n");
}
return $res;
}

/**********************************/

Désolé pour les erreurs GRAVES car je suis completement :wacko: ....

Merci d'avance pour votre aide.

Bien cordialement.

Posté

vu ton code de data_db.php et tes fonctions pour lancer les requetes SQL,

les variables de connexions sont: $db_server,$db_name,$db_user_login et

$db_user_pass et non pas $MySQL... Fais donc ton switch pour initiliser ces variables...

je pense que l'erreur qu'il te retourne vient de cette ligne:

$MySQL['connection'] = _AT_mysql_connect($MySQL['honshu.inside.globat.com'], $MySQL['cherche'], $MySQL['#######']) or die(mysql_error()); // connection au serveur

qui est un peu farfelu :fou: . En effet tu essayes de te connecter à rien (valeur de $MySQL['honshu.inside.globat.com'] est '') avec l'utilisateur rien (valeur de $MySQL['cherche'] est '') en utilisant un mot de passe vide (valeur de $MySQL['#######'] est '').

à priori tu confonds valeur et clé d'un tableau. En php quand tu utlises [] apres une variable, c'est pour referencer un tableau ($variable['cle']='valeur')

revoit un peu l'initialisation de tes variables de connexions.

Posté

Je commance a comprendre le systeme de fonctionnement du SQL :hypocrite: merci l'equipe ... Voila, j'ai renommé les variables:

Voir en haut pour connaitre la fonction des fichiers data_bd.php et fonctions.php B)

Fichier data_bd.php

<?php

//nom des tables pour la BD, si vous voulez les changer... par exemple en cas d'installation multiples dans une même BD !
$T_admins = "admins_annuaire"; //table des administrateurs
$T_categories = "categories_annuaire"; //table des categoires
$T_commentaires = "commentaires_sites_annuaire"; //table des commentaires
$T_infos = "infos_annuaire"; //table pour le infos (anciennement admin_annuaire)
$T_sessions = "sessions_annuaire"; //table pour les sessions des administrateurs
$T_sites = "sites_annuaire"; //table pour les sites et liens
$T_sites_in_wait = "sites_in_wait_annuaire"; //table pour les sites et liens en attentes


//données pour la connexion à la base de données
$db_server = "honshu.inside.globat.com"; //adresse du serveur MySQL
$db_name = "cherche"; //nom de la base de données
$db_user_login = "cherche"; //nom d'utilisateur pour la BD
$db_user_pass = "######"; //mot de passe pour la BD

$db_server = "honshu.inside.globat.com"; //adresse du serveur MySQL
$db_name = "musique"; //nom de la base de données
$db_user_login = "musique"; //nom d'utilisateur pour la BD
$db_user_pass = "######"; //mot de passe pour la BD

$db_server = "honshu.inside.globat.com"; //adresse du serveur MySQL
$db_name = "annuaire"; //nom de la base de données
$db_user_login = "annuaire"; //nom d'utilisateur pour la BD
$db_user_pass = "######"; //mot de passe pour la BD

?>

La partie BD du fichier fonctions.php :

/******** FONCTIONS POUR LA BD ***********/

function connection_BD()
{
global $db_server, $db_user_login, $db_user_pass, $db_name;
//connexion au serveur
$linkid = _AT_mysql_connect($db_server,$db_user_login,$db_user_pass) or die ("Erreur lors de la connection au serveur MySQL !");
//selection de la BD
@mysql_select_db($db_name,$linkid) or die("Impossible de sélectionner la base de données\n<br>\nVoici l'erreur renvoyée par le serveur MySQL :\n<br>\n".mysql_error());
return $linkid;
}

/***** DEBUT DU SWITCH *****/
$db_server['host'] = 'localhost';
$db_name['user'] = 'root';
$db_user_login['pass'] = '';
$db_user_pass['connection'] = _AT_mysql_connect($db_server,$db_user_login,$db_user_pass) or die("Erreur lors de la connection au serveur MySQL !"); // connection au serveur

switch($_POST['radio']) {
case 'recherche_locale': {
$db_name['base'] = 'cherche'; // base pour recherche locale
}
case 'annuaire': {
$db_name['base'] = 'annuaire'; // base pour annuaire
}
case 'musique': {
$db_name['base'] = 'musique'; // base pour musique
}
}
$$db_name['selection'] = _AT_mysql_select_db($$db_name['base'], $db_user_pass['connection'] ) or die("Impossible de sélectionner la base de données\n<br>\nVoici l'erreur renvoyée par le serveur MySQL :\n<br>\n".mysql_error()); // Selection finale

/***** FIN DU SWITCH *****/

function send_sql($sql,$message)
//envoi la requete $sql a la base et affiche un message si il y a eu un probleme sinon on rend le resultat
{
if(!$res = _AT_mysql_query($sql))
{
 $message_erreur = "<font color=\"#ff0000\">\n";
 $message_erreur .= "Impossible d'effectuer la requête pour $message\n";
 $message_erreur .= "<br><br>\n";
//  $message_erreur .= "Voici la requête : \n<br>\n";
//  $message_erreur .= "$sql\n";
//  $message_erreur .= "<br><br>\n";
 $message_erreur .= "Voici le message d'erreur renvoyé par la base de données :\n<br>\n";
 die("$message_erreur".mysql_errno()." : ".mysql_error()."</font>\n");
}
return $res;
}

/******************/

Merci pour vos précisions parce que ça marche tjrs pas :(.

Voici le Lien (j'ai desactivé le switch car ça donne comme message : "Erreur lors de la connection au serveur MySQL !" )

Merci d'avance;

Bien cordialement

Posté (modifié)

Re :)

//données pour la connexion à la base de données

$db_server = "honshu.inside.globat.com"; //adresse du serveur MySQL

$db_name = "cherche"; //nom de la base de données

$db_user_login = "cherche"; //nom d'utilisateur pour la BD

$db_user_pass = "######"; //mot de passe pour la BD

$db_server = "honshu.inside.globat.com"; //adresse du serveur MySQL

$db_name = "musique"; //nom de la base de données

$db_user_login = "musique"; //nom d'utilisateur pour la BD

$db_user_pass = "######"; //mot de passe pour la BD

$db_server = "honshu.inside.globat.com"; //adresse du serveur MySQL

$db_name = "annuaire"; //nom de la base de données

$db_user_login = "annuaire"; //nom d'utilisateur pour la BD

$db_user_pass = "######"; //mot de passe pour la BD

$db_name va tour a tour prendre les valeurs cherche puis musique puis annuaire

La variable utilisée plus bas dans ton script sera donc forcément 'annuaire' :huh:

Meme chose pour les autres variables

$$db_name['selection'] = _AT_mysql_select_db($$db_name['base'], $db_user_pass['connection'])

Met plutôt cela (sans les doubles dollars) ;)

$db_name['selection'] = _AT_mysql_select_db($db_name['base'], $db_user_pass['connection']);

... et réactive le switch :whistling:

Modifié par MS-DOS_1991
Posté (modifié)

Rien à faire :boude: ...

Si ça marche pas via "jeu entre les bases de données" peut etre le faire par les fichiers search.php :unsure: car j'ai mis pour chaque script un fichier search.php:

Recherche dans "Local" ==> Racine "/"

Recherche dans "Annuaire" ==> Rep "/annuaire/"

Recherche dans "Musique" ==> Rep "/musique"

Page search.php: (page d'action du FORM du formulaire)

<?php
//moteur de recherche
include("data_bd.php"); //variables de la base de donnée
include("functions.php"); //fonctions du script

Et pour chaque lien un fichier data_bd.php et functions.php

donc :

fichier ../data_bd.php

//données pour la connexion à la base de données cherche
$db_server = "honshu.inside.globat.com"; //adresse du serveur MySQL
$db_name = "cherche"; //nom de la base de données
$db_user_login = "cherche"; //nom d'utilisateur pour la BD
$db_user_pass = "######"; //mot de passe pour la BD

fichier ../musique/data_bd.php

//données pour la connexion à la base de données musique
$db_server = "honshu.inside.globat.com"; //adresse du serveur MySQL
$db_name = "musique"; //nom de la base de données
$db_user_login = "musique"; //nom d'utilisateur pour la BD
$db_user_pass = "######"; //mot de passe pour la BD

fichier ../annuaire/data_bd.php

//données pour la connexion à la base de données annuaire
$db_server = "honshu.inside.globat.com"; //adresse du serveur MySQL
$db_name = "annuaire"; //nom de la base de données
$db_user_login = "annuaire"; //nom d'utilisateur pour la BD
$db_user_pass = "######"; //mot de passe pour la BD

Donc, en gros ... faire des boutons radio pour l'action du "FORM" des formulaire ... c'est possible?. :whistling:

Merci pour l'equipe..

:blush:

Modifié par moonwar

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...