IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Script PHP - Réécriture dynamique


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 45
    Par défaut Script PHP - Réécriture dynamique
    Bonjour, voilà je vous expose brièvement et simplement mon problème...


    J'ai une base de donnée avec une table "personnes" contenant comme données : "nom", "prénom", etc...

    J'ai fait une page "personnes.php", et je souhaiterais que quand on tape "personne.php?nom=alsa&prenom=roger" on tombe sur la page "personne.php" avec la fiche personnalisée de "Alsa Roger" (nom, prénom, détails...).

    Le seul problème étant que je n'arrive pas à réaliser ce script... Premièrement, je n'arrive pas à réécrire l'url dans mon script php (avec sprintf ?, autre ?), et deuxièmement je ne sais pas comment afficher sur ma page le "nom", "prénom" et "détails" correspondant à la personne affichée dans l'URL (quel requête ?).


    Voilà il y a tellement de chose sur le net concernant le rewritting pour les blogs que je ne trouve nul part la solution pour cette solution dynamique avec base de donnée.

    Quelqu'un pour m'aider svp ??


    Merci. Cordialement,

  2. #2
    Membre chevronné Avatar de sacricri
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 324
    Par défaut
    en gros, ta page personne.php?nom=alsa&prenom=roger, il faut que tu l'appelles avec un lien du style sur une page liste_personne.php tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?
    // Tu insères ici ta connection à ta base de données
     
    //Je sélectionne ce que je veux dans la base ici
    	$sql = "SELECT *
    			FROM personnes";
    	$requete = mysql_query($sql) or die("erreur sql : ".mysql_error());
    	// on crée la boucle qui va lire la base de données et mettre les données dans le tableau data
    	while($data=mysql_fetch_array($requete)){
    		echo '<a href="personne.php?nom='.$data['nom'].'&amp;prenom=nom='.$data['prenom'].'">'.$data['nom'].' nom='.$data['prenom'].'</a><br />';
    	}
    ?>
    ensuite, sur la page personne.php tu fais quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?
    if(isset($_GET['nom']) && isset($_GET['prenom'])){
    	// on met en variable les valeurs de l'url
    	$nom=$_GET['nom'];
    	$prenom=$_GET['prenom'];
     
    	// Tu insères ici ta connection à ta base de données
     
    	//Je sélectionne ce que je veux dans la base ici
    	$sql = "SELECT *
    			FROM personnes
    			WHERE nom=".$nom."
    			AND prenom=".$prenom."
    			";
    	$requete = mysql_query($sql) or die("erreur sql : ".mysql_error());
    	// on crée la boucle qui va lire la base de données et mettre les données dans le tableau data
    	while($data=mysql_fetch_array($requete)){
    		echo 'Fiche personnelle de '.$data['nom'].' nom='.$data['prenom'].':<br />';
    		echo ''.$data['details'].'<br />';
    	}
    }else{
    	// si on a aucun paramètre dans l'url, on refresh sur la page précédente
    	echo '<META HTTP-EQUIV="Refresh" CONTENT="0;URL=liste_personne.php">';
    }
     
    ?>

    à peu de choses près, ça doit marche en l'état

  3. #3
    Membre éprouvé Avatar de arthak
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 91
    Par défaut
    Ce que tu veux tu peut l'utiliser de facon très concse par l'url rewriting en htaccess :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	RewriteRule ^personne/([^-]*)-([^/]*)/$ personne.php?nom=$1&prenom=$2 [L]
    Quand tu tapera : tapage.com/personne/Alsa-Roger/

    Tu tombera sur personne.php?nom=alsa&prenom=roger. C'est la solution web2.0

  4. #4
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 45
    Par défaut
    Bonjour arthak,

    tout à fait, c'est ce que je veux faire... Mais avant d'utiliser le htaccess pour faire celà, il faut déjà que la page "personne.php?nom=alsa&prenom=roger" soit valide et active.

    Hors c'est mon problème, je ne sais pas comment écrire mon script et ma requête pour que celà marche... peut-être que tu peux m'aider ??

    Sinon sacricri, ce serait possible de le faire en une page ?? Car j'ai l'impression que je me compliquerais la vie à créer plusieurs pages pour cette simple redirection, non ??

  5. #5
    Membre éprouvé Avatar de arthak
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 91
    Par défaut
    Pour écrire un script et une requète, il faut s'adapter à une base de donnée ? Tu en as une avec des données à exploiter pour les personnes que tu spécifie ?

  6. #6
    Membre chevronné Avatar de sacricri
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 324
    Par défaut
    Citation Envoyé par k2006 Voir le message
    Sinon sacricri, ce serait possible de le faire en une page ?? Car j'ai l'impression que je me compliquerais la vie à créer plusieurs pages pour cette simple redirection, non ??
    oui c'est possible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    <?
    if(isset($_GET['nom']) && isset($_GET['prenom'])){
    	// on met en variable les valeurs de l'url
    	$nom=$_GET['nom'];
    	$prenom=$_GET['prenom'];
     
    	// Tu insères ici ta connection à ta base de données
     
    	//Je sélectionne ce que je veux dans la base ici
    	$sql = "SELECT *
    			FROM personnes
    			WHERE nom=".$nom."
    			AND prenom=".$prenom."
    			";
    	$requete = mysql_query($sql) or die("erreur sql : ".mysql_error());
    	// on crée la boucle qui va lire la base de données et mettre les données dans le tableau data
    	while($data=mysql_fetch_array($requete)){
    		echo 'Fiche personnelle de '.$data['nom'].' nom='.$data['prenom'].':<br />';
    		echo ''.$data['details'].'<br />';
    	}
    }else{
    	// Tu insères ici ta connection à ta base de données
     
    //Je sélectionne ce que je veux dans la base ici
    	$sql = "SELECT *
    			FROM personnes";
    	$requete = mysql_query($sql) or die("erreur sql : ".mysql_error());
    	// on crée la boucle qui va lire la base de données et mettre les données dans le tableau data
    	while($data=mysql_fetch_array($requete)){
    		echo '<a href="personne.php?nom='.$data['nom'].'&amp;prenom=nom='.$data['prenom'].'">'.$data['nom'].' nom='.$data['prenom'].'</a><br />';
    	}
     
    }
     
    ?>
    en gros, si tu n'as pas de paramètres, ca te charge toute la liste des personnes, sinon, uniquement celle qui est en paramètre

  7. #7
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 45
    Par défaut
    Merci beaucoup sacricri, malheureusement les variables ne sont pas reconnus...

    Quand je clique sur la page personnes, tous les noms et prénoms s'affichent bien... Mais quand je clique sur un nom, ou sur la page - par exemple - "personnes.php?nom=Alsa&prenom=Roger" ça ne marche pas, toute la liste des noms se réaffichent et je n'ai pas la fiche personnalisée de Alsa Roger...

    Voilà le code (j'ai remplacé les colonnes "nom" et "prenom" de ma table par "personnes_nom" et "personnes_prenom" pour m'y retrouver avec les autres variables $nom et $prenom:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    if(isset($_GET['personnes_nom']) && isset($_GET['personnes_prenom'])){
    	// on met en variable les valeurs de l'url
    	$nom=$_GET['personnes_nom'];
    	$prenom=$_GET['personnes_prenom'];
     
    	// Tu insères ici ta connection à ta base de données
    require ("_data.php") ;
    require ("_connex.php") ;
     
    	//Je sélectionne ce que je veux dans la base ici
    	$sql = "SELECT *
    			FROM personnes
    			WHERE personnes_nom=".$nom."
    			AND personnes_prenom=".$prenom."
    			";
    	$requete = mysql_query($sql) or die("erreur sql : ".mysql_error());
    	// on crée la boucle qui va lire la base de données et mettre les données dans le tableau data
    	while($data=mysql_fetch_array($requete)){
    		echo 'Fiche personnelle de '.$data['personnes_nom'].' '.$data['personnes_prenom'].':<br />';
    	}
    }else{
    	// Tu insères ici ta connection à ta base de données
    require ("_data.php") ;
    require ("_connex.php") ;
     
    //Je sélectionne ce que je veux dans la base ici
    	$sql = "SELECT *
    			FROM personnes";
    	$requete = mysql_query($sql) or die("erreur sql : ".mysql_error());
    	// on crée la boucle qui va lire la base de données et mettre les données dans le tableau data
    	while($data=mysql_fetch_array($requete)){
    		echo '<a href="personnes.php?nom='.$data['personnes_nom'].'&amp;prenom='.$data['personnes_prenom'].'">'.$data['personnes_nom'].' '.$data['personnes_prenom'].'</a><br />';
    	}
     
    }
    Que faire ?? Comment ca se fait qu'il s'affiche uniquement la liste de toutes les personnes et non les fiches personnalisées sur les liens avec variables ?

  8. #8
    Membre chevronné Avatar de sacricri
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 324
    Par défaut
    tu as modifié trop de choses

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(isset($_GET['nom']) && isset($_GET['prenom'])){
    	// on met en variable les valeurs de l'url
    	$nom=$_GET['nom'];
    	$prenom=$_GET['prenom'];
    le $_GET['parametre'] récupère les valeurs de "parametre" de l'url (ie. index.php?nom=toto -> $_GET['nom'] = toto;

Discussions similaires

  1. [MySQL] Optimisation de scripts PHP/MySQL
    Par DgG dans le forum PHP & Base de données
    Réponses: 368
    Dernier message: 20/11/2013, 18h59
  2. Quel est le meilleur script PHP de portail (CMS) ?
    Par Lana.Bauer dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 187
    Dernier message: 18/10/2012, 07h45
  3. Réponses: 1
    Dernier message: 21/11/2007, 09h04
  4. Pb d'execution de requete avec un script php
    Par ythierrin dans le forum Requêtes
    Réponses: 3
    Dernier message: 22/08/2003, 14h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo