8791 sujets

Développement web côté serveur, CMS

Bonjour,

J'ai une adresse url:
-http://www.spypoint.com/FR/partenaires/Canada/3d_chasse_et_peche.php

Je cherche à récupérer juste l'info en gras. J'ai pensé à l'aide de la superglogal $_GET, mais je ne vois pas comment.
J'ai besoin de cette info pour le reste du code de la page.

Une petite idée de ma démarche...

<?php
$groupe = $_GET['groupe'];

include('../../../config.php');
$requete = mysql_connect($dbhost,$dbuser,$dbpasswd) or die(mysql_error());
$requete = mysql_select_db($dbname) or die(mysql_error());
mysql_query("SET NAMES 'utf8'");

$origine = array("_", "_", "e", "e", "e");
$remplacer = array(", ", " ", "é", "É", "ê");
$groupe_lien = strtolower(str_replace($origine, $remplacer, $groupe));
	if($requete = mysql_query("SELECT * FROM prostaff WHERE groupe='$groupe_lien'") or die(mysql_error())){
	       while($info = mysql_fetch_array($requete)){
		       $nom = $info['nom'];
		       $nom_complet = $nom.', '.$info['prenom'];
		
		       $abr = array("QC", "ON", "AL", "BC");
		       $province2 = array("Québec", "Ontario", "Alberta", "Colombie-Britanique");
		       $province = str_replace($abr, $province2, $info['province']);
                }
                ?>
<p class="name"><?php echo $groupe ?></p>
<p class="place"><?php echo $nom_complet." (".$info['titre]."), ";?><br><strong><?php echo $province; ?>, Canada</strong></p>
        <?php
	}
?>

Modifié par juliesunset (30 Oct 2012 - 19:10)
Hellow,

Pour un début de piste, la variable $_SERVER['PHP_SELF'] te fournira le chemin complet de la page courante.

A l'aide de la fonction basename(), tu pourras obtenir seulement le nom du fichier courant d'une URL complète.

Donc en couplant les deux : basename($_SERVER['PHP_SELF'])

Tu obtiendras 3d_chasse_et_peche.php. Restera plus qu'à extraire le nom de son extension.
Modérateur
Salut,

Basename() peut répondre à ton souci mais il y a mieux en une ligne :

$path = pathinfo($_SERVER['PHP_SELF']);
echo $path['filename'];


A noter que pathinfo() retournera un array associatif plus complet. A toi de faire mumuse avec.
Modifié par niuxe (30 Oct 2012 - 23:42)
Et au passage, l'utilisation de $_GET dans le cas présent ne sera pas possible vu que cette variable récupère sous forme de tableau associatif seulement les paramètres contenus dans l'URL : index.php?id=2&cat=20

Et merci pour l'astuce du pathinfo, à présent j'utiliserai cette solution pour ma part Smiley smile
Modifié par Apoooo (31 Oct 2012 - 08:38)
à noter que sur certains mutualisés, le pathinfo n'est pas activé
Modifié par xirt (31 Oct 2012 - 14:03)
Merci beaucoup!
Ça fonctionne! Smiley langue

Pour le $_GET, je me suis bien douté qu'il ne s'agissait de la bonne méthode, mais j'ignorais quoi chercher à la place.

Maintenant, ne reste plus qu'à réussir faire afficher toutes les infos... Je ne sais pas pourquoi, mais il ne va pas toutes les chercher...


<?php
$path = pathinfo($_SERVER['PHP_SELF']);
	
	$groupe_lien = $path['filename'];
	$origine = array("_", "3d", "peche");
	$remplacer = array(" ", "3D", "pêche");
	$groupe = strtolower(str_replace($origine, $remplacer, $groupe_lien));

include('../../../config.php');
$requete = mysql_connect($dbhost,$dbuser,$dbpasswd) or die(mysql_error());
$requete = mysql_select_db($dbname) or die(mysql_error());
mysql_query("SET NAMES 'utf8'");
?>
<!DOCTYPE HTML>
<html>
<head>

<meta charset="utf-8">
<title><?php echo $groupe ?></title>
</head> 
 
<body>
<div id="page">
	<div id="container">
<?php
	if($requete = mysql_query("SELECT * FROM prostaff WHERE groupe='$groupe'") or die(mysql_error())){
		while($info = mysql_fetch_array($requete)){
		
			$nom = $info['prenom'].' '.$info['nom'];
		
			$abr = array("QC", "ON", "AL", "BC");
			$province2 = array("Québec", "Ontario", "Alberta", "Colombie-Britanique");
			$province = str_replace($abr, $province2, $info['province']);
			$titre = $info['titre'];
			$ville = $info['ville'];
			$pays = $info['pays'];
			$web = $info['web'];
			$blog = $info['blog'];
			$mail = $info['mail'];
			$facebook = $info['facebook'];
			$youtube = $info['youtube'];
			$vimeo = $info['vimeo'];
			$twitter = $info['twitter'];
			
			$vide = '';
			if($groupe != $vide){
				echo '<p class="name">'.$groupe.'</p>
					<p class="place">'.$nom.' ('.$titre.')</p>';
			}
			else{
				echo '<p class="name">'.$nom.'</p>';
			}?>
        <p class="place"><strong><?php echo $province; ?>, Canada</strong></p>
   
    	<hr style="width:262px" align="left">
		
		<?php 
			if($mail != $vide){
				echo '<a href="mailto:'.$mail.'" class="website">'.$mail.'</a> ';
			}
			if($web != $vide){
				echo '<a href="http://'.$web.'" class="website">'.$web.'</a> ';
			} 
			if($blog != $vide){
				echo '<a href="http://'.$blog.'" class="website">'.$blog.'</a> ';
			}
			?>
    	<br>
        <?php
			if($facebook != $vide){
				echo '<a href="http://'.$facebook.'">
					<img src="/Images/Partenaires/facebook.jpg" alt="Facebook" width="26" height="26" class="network" style="margin-left:0px"/></a> ';
			}
			if($youtube != $vide){
				echo '<a href="http://'.$youtube.'">
					<img src="/Images/Partenaires/youtube.jpg" alt="Youtube" width="64" height="26" class="network"/></a> ';
			}
			if($vimeo != $vide){
				echo '<a href="http://'.$vimeo.'">
					<img src="/Images/Partenaires/vimeo.jpg" alt="Vimeo" width="64" height="26" class="network"/></a> ';
			}
			if($twitter != $vide){
				echo '<a href="http://'.$twitter.'">
					<img src="/Images/Partenaires/twitter.png" width="26" height="26" alt="Twitter" class="network"/></a>';
			}
		}
	}
?> 
	</div>
</div>


Je devrais avoir 3 noms d'affiché, mais il n'y en a qu'un qui s'affiche.
Ok bon en fais tout s'affiche... mais vraiment tout! dans le sens que j'ai 3 fois le nom de groupe, etc. et le tout un par-dessus l'autre.

Comme je fais pour que certaines info identique d'une ligne à l'autre ne s'affiche qu'elle seule fois?
("SELECT * FROM prostaff WHERE groupe='$groupe'")


Ce ne serait pas dû au fait que ta variable $groupe n'existe pas ?

Elle n'a rien d'affecté avant son utilisation, la variable qui s'y approche le plus est $groupe_lien, peut être là ton erreur

EDIT : En fait tu récupérais dans ton 1er code le $groupe avec ton $_GET mais dans le second, tu ne l'as plus Smiley cligne
Modifié par Apoooo (31 Oct 2012 - 16:33)
Effectivement... Ca m'a echappé.. En plus si elle n'était pas définie, tu aurais eu une erreur php...

Je vois pas trop où tu veux en venir avec l'affichage en triple et leur chevauchement, c'est assez flou comme explication (enfin pour moi ^^)

Tu ne devrais avoir qu'un seul résultat de ta base avec la requete que tu lui donnes ? Ce qui voudrais dire que tu n'as qu'une ligne dans ta base où "groupe = 3d chasse et pêche" ?

Autre petit truc, pour t'éviter de faire des test si le champs est vide avec une comparaison d'une variable qui elle est vide (exemple : if($mail != $vide)), tu peux directement utiliser la fonction empty de php :

if(!empty($mail)){
// traitement
}


La fonction empty renvoi true (si vide) ou false (si elle contient quelque chose).
Ah oui pour le champ vide! Smiley langue Il me semblais qu'il devait y avoir quelque chose pour ça mais j'avais un blanc!

Ensuite, pour le chevauchement, tu n'a qu'à aller voir le lien donner plus haut, c'est assé explicite!

Et en fais j'ai 4 lignes dans ma bdd où "groupe = 3d chasse et pêche" , mais les 4 on des infos différentes.
Le chevauchement étant de l'affichage, le problème se situait au niveau HTML/CSS.
Il vient du fait que tu as un margin-top: -195px; sur ta class .name

Quand tu retires cette propriété, l'affichage est tout de suite plus correct !
Mais tu vas t'apercevoir que tout depasse... Au niveau du code, je te conseillerai d'opter (vu que tu souhaites faire un coté gauche et un coté droit) de faire 2 containers.


<div id="page">
   <div id="droite">
      <!-- Tes photos + infos que tu vas chercher en BDD -->
   </div>
   <div id="gauche">
      <!-- Ton slideshow -->
   </div>
</div>


Pour les doublons, tu veux quel affichage concrètement ?


3D chasse et pêche

Québec, Canada
________________
 www.3d-chasse-peche.com
 
FACEBOOK YOUTUBE

Nom Prénom
Nom Prénom
Nom Prénom (Rédacteur en chef)


Comme ceci ?
Modifié par Apoooo (02 Nov 2012 - 09:31)
Désolé pour le délais de réponse...

Alors merci pour avoir trouvé le problème de chevauchement... ce n'est pas moi qui est écrit le code, c'est clair qu'il va falloir le réviser.

Et pour ce qui est du dédoublement, ça serais plutôt un affichage comme ceci:

3D chasse et pêche

Nom Prénom
Nom Prénom
Nom Prénom (Rédacteur en chef)

Québec, Canada
________________
 www.3d-chasse-peche.com
 
 
FACEBOOK YOUTUBE

Modifié par juliesunset (06 Nov 2012 - 20:13)
Je pense que à ce niveau, le problème vient de l'organisation de tes données dans la BDD.

C'est normal que tu as cet affichage, ta boucle fait un affichage de chaque entrée dans ta base. J'imagine que ta table regroupe les partenaires. Et à mon avis, chaque entrée n'est pas un partenaire... Tu as un coup les infos partenaire sur une ligne, ensuite une ligne avec les infos d'une personne fesant parti du groupe, une autre ligne pour une autre personne etc...

Dans ce sens, tu ne pourras éviter de faire de multiple affichage et surtout ce n'est pas logique au niveau de ta BDD.

Tu ne dois avoir que des partenaires dans une table partenaire et pour y ajouter les personnes du staff dans chacun d'entre eux, tu y rajoutes une colonne nommé par exemple "personnel" et tu insert les noms comme cela :
Nom Prénom|Nom Prénom|Nom Prénom (Rédacteur en chef)

Grâce au séparateur (ici "|"), tu vas pouvoir mettre plusieurs données dans la même colonne. Et au moment d'afficher tes données, le serveur SQL va ne trouver qu'une ligne avec le $groupe = "truc pêche" et donc il n'y aura aucun doublon.

Pour récupérer tes différentes personnes sur $info['personnel'], tu pourras utilisé la fonction explode de php qui te retournera un array().
J'essaie de comprendre un peu la façon que tu m'explique.

Mon problème, c'est dans ma bdd, j'ai des partenaires "groupe" avec des personnes affilié au groupe, mais d'autre groupe, avec aucun nom d'affilié et d'autre partenaire qui n'ont pas de groupe. Ça donne un truc du genre:


Prenom   |    nom    |   groupe   |...|...|

Mathieu  |  Pouliot  |   3D c&p   |...|...|
         |           | Express CP |...|...|
Yvon     | Champagne |            |...|...|


Tu voit le genre. J'essaie de faire ça le plus logique possible, mais c'est compliqué. J'utilise cette liste de différente façon à plusieurs endroit dans le site, dont une page de présentation (-http://www.spypoint.com/FR/partenaires/pro-staff-canada.php) et là où j'ajoute des photos à la galerie (J'ai besoin de la liste des nom et le groupe associer le cas échéant)
Modifié par juliesunset (08 Nov 2012 - 14:52)
Bon, j'ai réfléchi à ça et je pense que "la meilleur" solution serais de crée une nouvelle table qui contiendra les détails. J'y songeait depuis un moment car je voulais aussi ajouter les info pour les album photo associé. Je pense que ça sera plus simple ainsi.

Apoooo: Je pense que je commence à comprendre pour les "|". Est-ce que c'est possible aussi de faire un truc pareil dans une autre colonne et que ça soi en lien avec la première colonne?
ex: colonne nom: nom1|nom2|nom3
colonne province: QC|AL|QC