possible ou pas ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : possible ou pas ?

par AB » 24 juin 2007, 18:04

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 &nbsp; <input type="text" id = "url" value="<?php if (isset($ligne_retour_row['url_console'])) echo $ligne_retour_row['url_console']?>" style="width:200px" /> &nbsp; PASS &nbsp; <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) :)

par kweb » 24 juin 2007, 17:37

Merci de ton aide,
maintenant je vais bien me poser dessus pour comprendre..... :idea:
@+

par AB » 24 juin 2007, 17:00

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 &nbsp; <input type="text" id = "url" value="<?php if (isset($ligne_retour_row['url_console'])) echo $ligne_retour_row['url_console']?>" style="width:200px" /> &nbsp; PASS &nbsp; <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

par AB » 24 juin 2007, 16:41

C'était corrigé dans le dernier code que je t'ai donné :wink:
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

par kweb » 24 juin 2007, 16:04

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

Code : Tout sélectionner

if isset($ligne_retour_row['url_console'])
cela veu dire qu'il manque une paranthése ?
encore une fois merci pour ton aide.

par AB » 24 juin 2007, 15:45

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>

par AB » 24 juin 2007, 15:24

essaies de remplacer la ligne existante par la ligne suivante
$ligne = "SELECT * FROM console WHERE id_console = ".$_GET['id'];

par kweb » 24 juin 2007, 15:06

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

par AB » 24 juin 2007, 14:42

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)

par jpaul » 24 juin 2007, 13:26

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

par kweb » 24 juin 2007, 12:16

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">&nbsp;</td>';
      		echo '<td width="16" id="cellule_tableau_email2">&nbsp;</td>';
      		echo '<td width="200" bgcolor="#DFE6E6" id="cellule_tableau_email2"><span class="Style1"><strong>&nbsp;URL</strong></span></td>';
      		echo '<td width="150" bgcolor="#DFE6E6" id="cellule_tableau_email2"><span class="Style1"><strong>&nbsp;LOGIN</strong></span></td>';
      		echo '<td width="150" bgcolor="#DFE6E6" id="cellule_tableau_email2"><span class="Style1"><strong>&nbsp;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 />';
      	   }

par AB » 23 juin 2007, 20:53

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

par kweb » 23 juin 2007, 18:50

Je souhaiterais le faire que en PHP, aurais tu un exemple ou des liens qui parle de ce sujet ?
merci pour ton aide.

par AB » 23 juin 2007, 18:15

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

possible ou pas ?

par kweb » 23 juin 2007, 17:26

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