Page 1 sur 1
possible ou pas ?
Posté : 23 juin 2007, 17:26
par kweb
Bonjour,
je souhaiterais savoir si ce que je souhaite faire est possible en php
j'ai une table "Test", qui contient 3 champs "domaine - url - pass"
j'ai créer un menu qui affiche tous les nom de "domaines" en utilisant une boucle while.
je voudrais que lorsque on clique sur un domaine (dans le menu) celui ci affiche les infos (url et pass) du domaine correspondant . l'emplacement des infos s'affichera toujours au meme endroit....
C'est assez difficile d'expliquer mais si vous avez compris quelques choses, pourriez vous me dire si cela est possible ?
Merci de votre aide
Posté : 23 juin 2007, 18:15
par AB
Oui c'est possible
En PHP seul: quand tu cliques sur la ligne correspondante, ça va chercher les infos que tu souhaites (par exemple en fonction de l'id ou de domaine de ta ligne) dans la bdd et les affiche dans la ligne réservée.
En PHP + JS : les infos peuvent être contenues dans un champ caché (type hidden), et la valeur du champs sera transmise dans ta ligne réservée sur un onclick
Posté : 23 juin 2007, 18:50
par kweb
Je souhaiterais le faire que en PHP, aurais tu un exemple ou des liens qui parle de ce sujet ?
merci pour ton aide.
Posté : 23 juin 2007, 20:53
par AB
Le mieux, comme c'est relativement simple, c'est de prendre ton code comme exemple.
Donc donnes nous le code PHP de ta requête, la structure de la table en question ainsi que la partie html où tu affiches tes résultats.
Avec ça nous pourrons te donner la solution.
Pour ma part, je vais sortir bientôt, donc je ne pourrai te répondre que demain. A bientôt
Posté : 24 juin 2007, 12:16
par kweb
Ok, donc voici la structure de ma table
Code : Tout sélectionner
--
-- Structure de la table `console`
--
CREATE TABLE `console` (
`id_console` tinyint(4) NOT NULL auto_increment,
`domaine_console` text NOT NULL,
`url_console` text NOT NULL,
`login_console` text NOT NULL,
`password_console` text NOT NULL,
KEY `id_console` (`id_console`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Voici mon menu
<div id="sectionLinks">
<?php
$console = "SELECT DISTINCT domaine_console FROM console ORDER BY domaine_console";
$console_retour = mysql_query ($console) or die (mysql_error());
while ($menu_affichage = mysql_fetch_array($console_retour) )
{
echo '<a href="#'.$menu_affichage['domaine_console'].'">'.ucfirst($menu_affichage['domaine_console']).'</a>';
};
?>
</div>
moi j'avais commencé a faire sa au niveau de l'affichage des données... mais ce que j'ai fais ici affiche toute les infos de ma table.....
<?php
include ('include/connectBD.inc.php');
include ('fonction/alternance_couleur.inc.php');
if (!isset($_GET['id'])) //SI la variable id_console existe
{
$ligne = "SELECT * FROM console ORDER BY url_console";
$ligne_retour = mysql_query ($ligne);
// Création d'un tableau
echo '<table width="100%" border="0" cellspacing="1" cellpadding="0">';
// CREATION d'une Ligne 1
echo '<tr>';
//CREATION de Cellule fixe
echo '<td width="14" id="cellule_tableau_email2"> </td>';
echo '<td width="16" id="cellule_tableau_email2"> </td>';
echo '<td width="200" bgcolor="#DFE6E6" id="cellule_tableau_email2"><span class="Style1"><strong> URL</strong></span></td>';
echo '<td width="150" bgcolor="#DFE6E6" id="cellule_tableau_email2"><span class="Style1"><strong> LOGIN</strong></span></td>';
echo '<td width="150" bgcolor="#DFE6E6" id="cellule_tableau_email2"><span class="Style1"><strong> PASSWORD</strong></span></td>';
// FIN de la ligne 1
echo "</tr>";
while ($ligne_ligne = mysql_fetch_array($ligne_retour) )
{
// CREATION d'une Ligne 2
echo "<tr bgcolor=\""; echo switchcolor(); echo "\">";
//Cellule SUPPRIMER
echo '<td bgcolor="#FFFFFF" width="14">';
echo '<a href="console.php?id='.$ligne_ligne['id_console'].'"><img src="images/corbeille.gif" alt="Supprimer" width="14" height="16" border="0"></a>';
echo '</td>';
//Cellule MODIFICATION
echo '<td bgcolor="#FFFFFF" width="16">';
echo '<a href="console_modifier.php?id='.$ligne_ligne['id_console'].'"><img src="images/modifier.gif" alt="Modifier" width="16" height="16" border="0"></a>';
echo '</td>';
//Cellule URL
echo '<td id="tableau_email" width="200">';
echo '<strong><a href="http://'.$ligne_ligne['url_console'].'" target="_blank" >'.$ligne_ligne['url_console'].'</strong>' ;
echo '</td>';
//Cellule LOGIN
echo '<td id="tableau_email" width="150">';
echo $ligne_ligne['login_console'];
echo '</td>';
//Cellule PASSWORD
echo '<td id="tableau_email" width="150">';
echo $ligne_ligne['password_console'] ;
echo '</td>';
//FIN de la ligne 2
echo '</tr>';
}
//FIN du tableau
echo '</table><br />';
}
Posté : 24 juin 2007, 13:26
par jpaul
Bonjour,
As-tu regardé la FAQ ?
Je crois bien qu'il y a la réponse à ta question...
http://www.phpfrance.com/forums/voir_sujet-4562.php
Posté : 24 juin 2007, 14:42
par AB
Voilà le code de ta page
Code : Tout sélectionner
<?php
$console = "SELECT DISTINCT domaine_console, id_console FROM console ORDER BY domaine_console";
$console_retour = mysql_query ($console) or die (mysql_error());
if (isset($_GET['id'])) //SI la variable id existe
{
$ligne = "SELECT * FROM console WHERE id_console = $_GET['id']";
$ligne_retour = mysql_query($ligne);
$ligne_retour_row = mysql_fetch_assoc($ligne_retour);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>
<body>
<div id="sectionLinks">
<?php while ($menu_affichage = mysql_fetch_assoc($console_retour))
{ ?>
<a href="<?php echo $_SERVER['PHP_SELF'].'?id='.$menu_affichage['id_console'];?>"><?php echo ucfirst($menu_affichage['domaine_console'])?></a>
<?php } ?>
</div>
<?php if (isset($ligne_retour_row['url_console']))
{?>
<div>
URL = <?php echo $ligne_retour_row['url_console']?> PASS = <?php echo $ligne_retour_row['password_console']?>
</div>
<?php } ?>
</body>
</html>
essaies autant que possible de séparer le code php du code html comme ci-dessus.
(je n'ai pas testé le code)
Posté : 24 juin 2007, 15:06
par kweb
JE te remercie pour ton aide...
mais lorsque je test je suis confronter a cette erreur.
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\wamp\www\code_acces\test.php on line 9
etant novice... j'ai du mal a interprété cette erreur
Posté : 24 juin 2007, 15:24
par AB
essaies de remplacer la ligne existante par la ligne suivante
$ligne = "SELECT * FROM console WHERE id_console = ".$_GET['id'];
Posté : 24 juin 2007, 15:45
par AB
Il va sans dire qu'au début du code php il faut entrer les éléments nécessaires pour te connecter à la base de donnée.
Le code complet - en remplaçant les variables des deux premières lignes par tes valeurs - est donc
Code : Tout sélectionner
<?php
mysql_connect("$host", "$login", "$password");
mysql_select_db("nom_de_la_base_de_donnee");
$console = "SELECT DISTINCT domaine_console, id_console FROM console ORDER BY domaine_console";
$console_retour = mysql_query ($console) or die (mysql_error());
if (isset($_GET['id'])) //SI la variable id existe
{
$ligne = "SELECT * FROM console WHERE id_console = ".$_GET['id'];
$ligne_retour = mysql_query($ligne);
$ligne_retour_row = mysql_fetch_assoc($ligne_retour);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>
<body>
<div id="sectionLinks">
<?php while ($menu_affichage = mysql_fetch_assoc($console_retour))
{ ?>
<a href="<?php echo $_SERVER['PHP_SELF'].'?id='.$menu_affichage['id_console'];?>"><?php echo ucfirst($menu_affichage['domaine_console'])?></a>
<?php } ?>
</div>
<?php if (isset($ligne_retour_row['url_console']))
{?>
<div>
URL = <?php echo $ligne_retour_row['url_console']?> PASS = <?php echo $ligne_retour_row['password_console']?>
</div>
<?php } ?>
</body>
</html>
Posté : 24 juin 2007, 16:04
par kweb
oui, j'avais mis la connexion a la base de donnée....
par contre avec le changement que tu ma fais effectué, je me retrouve plus qu'avec une seule erreur
Code : Tout sélectionner
Parse error: syntax error, unexpected T_ISSET, expecting '(' in C:\wamp\www\code_acces\test.php on line 29
ligne 29
cela veu dire qu'il manque une paranthése ?
encore une fois merci pour ton aide.
Posté : 24 juin 2007, 16:41
par AB
C'était corrigé dans le dernier code que je t'ai donné
ligne 29
if (isset($ligne_retour_row['url_console']))
Voilà c'était pour la solution uniquement PHP
Dans quelques minutes dans le code qui va suivre une variante très intéressante qui regroupe le meilleur des deux mondes PHP + JS
Posté : 24 juin 2007, 17:00
par AB
Voilà le code qui regroupe php + javascript
Le gros avantage est qu'il n'y a pas besoin de recharger la page pour avoir les résultats. Javascript procure un affichage instantané et évite une requête au serveur.
Au cas où Javascript serait désactivé dans le navigateur du client (très peu fréquent) c'est php qui prend le relais par une seconde requête.
Et c'est transparent pour le client
Code : Tout sélectionner
<?php
mysql_connect("$host", "$login", "$pass");
mysql_select_db("$bdd");
$console = "SELECT DISTINCT domaine_console, id_console, url_console, password_console FROM console ORDER BY domaine_console";
$console_retour = mysql_query ($console) or die (mysql_error());
if (isset($_GET['id'])) //SI la variable id existe
{
$ligne = "SELECT * FROM console WHERE id_console = ".$_GET['id'];
$ligne_retour = mysql_query($ligne);
$ligne_retour_row = mysql_fetch_assoc($ligne_retour);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>
<body>
<div id="sectionLinks">
<?php while ($menu_affichage = mysql_fetch_assoc($console_retour))
{ ?>
<a href="<?php echo $_SERVER['PHP_SELF'].'?id='.$menu_affichage['id_console'];?>" onclick='document.getElementById("url").value="<?php echo $menu_affichage['url_console']?>";document.getElementById("pass").value="<?php echo $menu_affichage['password_console']?>";return false' ><?php echo ucfirst($menu_affichage['domaine_console'])?></a>
<?php } ?>
</div>
<div>
URL <input type="text" id = "url" value="<?php if (isset($ligne_retour_row['url_console'])) echo $ligne_retour_row['url_console']?>" style="width:200px" /> PASS <input type="text" id = "pass" value="<?php if (isset($ligne_retour_row['password_console'])) echo $ligne_retour_row['password_console']?>" style="width:200px" />
</div>
</body>
</html>
EDIT
Pour modifier la largeur des champs de résultats, modifier la valeur de style="width:200px"
Le plus important dans un premier temps est de bien comprendre le code PHP et la logique de fonctionnement du script.
Ensuite le code javascript (par rapport à la version uniquement PHP) avec le onclick dans la balise href est un bon plus qui te permettras de comprendre l'avantage de maîtriser un peu de Javascript
Posté : 24 juin 2007, 17:37
par kweb
Merci de ton aide,
maintenant je vais bien me poser dessus pour comprendre.....

@+
Posté : 24 juin 2007, 18:04
par AB
Dernier petit exercice pour ce code, on peut externaliser le code javascript dans une fonction. Cela n'apporte rien pour le visiteur mais c'est pour le principe.
<?php
mysql_connect("$host", "$login", "$password");
mysql_select_db("$bdd");
$console = "SELECT DISTINCT domaine_console, id_console, url_console, password_console FROM console ORDER BY domaine_console";
$console_retour = mysql_query ($console) or die (mysql_error());
if (isset($_GET['id'])) //SI la variable id existe
{
$ligne = "SELECT * FROM console WHERE id_console = ".$_GET['id'];
$ligne_retour = mysql_query($ligne);
$ligne_retour_row = mysql_fetch_assoc($ligne_retour);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
<script type="text/javascript">
<!--
function transfert(valeur_url,valeur_pass) {
document.getElementById("url").value = valeur_url;
document.getElementById("pass").value = valeur_pass;
}
//-->
</script>
</head>
<body>
<div id="sectionLinks">
<?php while ($menu_affichage = mysql_fetch_assoc($console_retour))
{ ?>
<a href="<?php echo $_SERVER['PHP_SELF'].'?id='.$menu_affichage['id_console'];?>" onclick='transfert("<?php echo $menu_affichage['url_console']?>","<?php echo $menu_affichage['password_console']?>");return false' ><?php echo ucfirst($menu_affichage['domaine_console'])?></a>
<?php } ?>
</div>
<div>
URL <input type="text" id = "url" value="<?php if (isset($ligne_retour_row['url_console'])) echo $ligne_retour_row['url_console']?>" style="width:200px" /> PASS <input type="text" id = "pass" value="<?php if (isset($ligne_retour_row['password_console'])) echo $ligne_retour_row['password_console']?>" style="width:200px" />
</div>
</body>
</html>
Bon courage! Quand tu auras compris tout ça tu auras déjà pas mal avancé. Une bonne adresse pour bien débuter avec d'excellents tutos sur
www.phpdebutant.org (j'ai fait mes débuts avec eux)
