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 :

Affichage de requête SQL


Sujet :

PHP & Base de données

  1. #61
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 101
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 101
    Points : 8 211
    Points
    8 211
    Billets dans le blog
    17
    Par défaut
    Bon là c'est encore autre chose, effectivement c'est le ' du titre qui gêne la requête SQL.

    Récapitulons :

    Page du lien <a href> :
    - Le titre doit être passé à la moulinette raw/urlencode( )

    Page cible :
    - Le titre doit d'abord être passé à la moulinette raw/urldecode( )
    - Puis à l'occasion de la requête passé à mysql_real_string_escape( )

    Note :
    Tout ceci parce que tu utilises une chaîne de caractère comme identifiant.
    Tu n'aurais pas eu ce genre de chose à gérer en utilisant l'identifiant numérique.
    En outre comment gèreras-tu le cas de 2 documentaires ayant le même titre ?
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  2. #62
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 452
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 452
    Points : 4 601
    Points
    4 601
    Par défaut
    Salut,

    tu dois echapper les quotes ... d'une+révolution ("d appostrophe")
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  3. #63
    Membre du Club Avatar de StephBretagne
    Femme Profil pro
    Inscrit en
    Mars 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 147
    Points : 69
    Points
    69
    Par défaut
    Tout ceci parce que tu utilises une chaîne de caractère comme identifiant.
    Tu n'aurais pas eu ce genre de chose à gérer en utilisant l'identifiant numérique.
    En outre comment gèreras-tu le cas de 2 documentaires ayant le même titre ?
    C'est vrai, ça marchait mieux avec des id=xx. En réalité, j'ai changé pour deux raisons :
    - ça me semblait mieux pour notre ami google, des titres portant plus de sens que des numéros (enfin, j'imagine, mais j'ai peut-être tort).
    - ma page listant les films et séries contient les titres et vu le mal qu'on a eu à la faire...

    Il n'y a pas (encore ?) 2 documentaires avec le même titre.

    Tu crois qu'il faut que je repasse à la méthode avec id ?

    (ps : désolée si je suis pas super claire et si je comprends encore plus lentement que d'habitude mais la morphine aide pas trop à se concentrer )

  4. #64
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 452
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 452
    Points : 4 601
    Points
    4 601
    Par défaut
    Citation Envoyé par StephBretagne Voir le message
    Tu crois qu'il faut que je repasse à la méthode avec id ?
    (meme si c'est pas a moi que tu t'adresses, je reponds xD)
    oui, passer par les IDs est indispenssable.

    raison 1 : faute de frappe dans le titre (ou autre)
    => ca sous-entend qu'il faut que le titre dans l'url soit exact pour que ca fonctionne.

    raison 2 : tester un id est tellement plus rapide/simple...

    raison 3 : si tu t'en fais pour google, tu devras passer par l'url-rewriting...
    => glisser un id discretement est facile.
    exemple : www.exemple.com/42_Lucinda+by+Lucinda
    => comme tu te base sur l'id (42 pour l'exemple), c'est pas grave si tu veux changer ton url (par exemple changer les + par des - (tiret) ) derriere tu t'y retrouveras toujours

    raison 4 : bah euh... ca ira xD
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  5. #65
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 101
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 101
    Points : 8 211
    Points
    8 211
    Billets dans le blog
    17
    Par défaut
    OK avec Doksuri.

    Au plus simple sans URL-rewriting tu peux faire :

    film.php?id=123&titre=Lucinda+by+Lucinda

    - L'ID numérique transite, pas de souci avec l'encodage
    - Le titre apparait dans l'URL mais tu ne t'en préocuppes pas et Google sera content (je crois)
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  6. #66
    Membre du Club Avatar de StephBretagne
    Femme Profil pro
    Inscrit en
    Mars 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 147
    Points : 69
    Points
    69
    Par défaut
    D'accord, je vais faire comme ça, merci à tous les deux pour les conseils

    Par contre, je ne vois pas du tout comment raccorder cet id à ma page qui liste les films et séries et qui indiquait :

    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
    36
    <?php
     
    	$req = "(
    	SELECT nomDoc_fr AS nom, noSerieDoc, NULL AS nbDocsSerie, idDoc
    	FROM documentaire
    	WHERE idSerieDoc IS NULL
    	)
    	UNION (
    
    	SELECT nomSerieDoc_fr, NULL , nbDocsSerie, idSerieDoc
    	FROM serieDoc
    	)
    	ORDER BY  `nom` ASC;
    	";
     
    	$result = mysql_query($req);
     
    	if ( $result === FALSE ) {
    	echo 'DEBUG : ', $req, ' // ', mysql_error( ) ;
    	// Arrêter traitement, rediriger, etc.
    	}
     
    	while($rows = mysql_fetch_assoc($result)){
     
    		$nbDocsSerie = $rows['nbDocsSerie'];
    		if ($nbDocsSerie != 0){
    		echo '<p>'.fullUpper($rows['nom']).' (série de 1 à '.$rows['nbDocsSerie'].')</p>'; 
    		}
    		else {
     
    		?>
    		<a href="film.php?nomDoc_fr=<?php echo ($rows['nom']);?>"><?php echo '<p>'.fullUpper($rows['nom']).'</p>';?></a>
    		<?php
    		}
    	}
    ?>

  7. #67
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 101
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 101
    Points : 8 211
    Points
    8 211
    Billets dans le blog
    17
    Par défaut
    Je ne comprends pas le problème.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  8. #68
    Membre du Club
    Inscrit en
    Octobre 2011
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 50
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par Séb. Voir le message
    OK avec Doksuri.

    Au plus simple sans URL-rewriting tu peux faire :

    film.php?id=123&titre=Lucinda+by+Lucinda

    - L'ID numérique transite, pas de souci avec l'encodage
    - Le titre apparait dans l'URL mais tu ne t'en préocuppes pas et Google sera content (je crois)
    Vraiment BIEN VU !
    j'avais jamais pensé à ça.
    - On évite la création et l'intégration de 2 fonctions de rewriting
    et donc quelques lignes supplémentaires et la prise de tête avec les regex (bien que simple dans ce cas-ci).
    - Google l’appréciera d'autant plus que le titre sera intègre, en revanche, s'il reste intègre le passage au W3C signalera 'warning'
    - On fait une recherche dans un champ INT en plus !

  9. #69
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 101
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 101
    Points : 8 211
    Points
    8 211
    Billets dans le blog
    17
    Par défaut
    T'es sûr que Google prend en compte les paramètres de l'URL pour le référencement ?
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  10. #70
    Membre du Club
    Inscrit en
    Octobre 2011
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 50
    Points : 66
    Points
    66
    Par défaut
    Je suis pas certain que ça soit plus important que le reste mais il met en évidence les mots recherchés dans les url's du site trouvés.

    Si je cherche le film : Tatagaga

    Je vais préférer voir dans la page des résultats google:

    Tatagaga - Monsite.fr
    url : monsite.fr/tatagaga

    Que:
    Tatagaga - Monsite.fr
    url : monsite.php?id=5446584586

  11. #71
    Membre du Club Avatar de StephBretagne
    Femme Profil pro
    Inscrit en
    Mars 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 147
    Points : 69
    Points
    69
    Par défaut
    Bonjour à tous

    Alors, grace aux conseils privés de DokSuri et à l'aide de mon hébergeur (le gérant super sympa de monarobase.net), j'ai finalement opté pour l'url rewriting.

    Imaginant que d'autres débutants comme moi pourraient être intéressés, voici ce que cela donne pour les 2 fichiers impliqués :

    htaccess :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #avec le module rewrite fournit par l'hébergeur
    Options +FollowSymlinks
    RewriteEngine on
    #ces 2 premieres lignes sont obligatoires
    RewriteRule ^(film|serie)_([0-9]+)_([a-zA-Z0-9\-_]+)$ doc_fr.php?idDoc=$2 [L]
    #syntaxe "normale" d'une regexp php 
    # [L] signifie que le serveur s'arrete des qu'il trouve la reecriture de l'url...
    # le + dans l'expression, permet d'avoir des n°s de films supérieur à 9
    # indispensable s'il y en a plein
    # note : toujours commencer par l'expression reguliere la plus precise (s'il y a plusieurs niveaux de filtres)
    filmsAZ_fr.php (liste de présentation des films et séries, sachant que les pages serie_fr.php ne sont pas encore faites) :

    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
    <?php
     
    $req = "(
    SELECT nomDoc_fr AS nom, noSerieDoc, NULL AS nbDocsSerie, idDoc
    FROM documentaire
    WHERE idSerieDoc IS NULL
    )
    UNION (
    
    SELECT nomSerieDoc_fr, NULL , nbDocsSerie, idSerieDoc
    FROM serieDoc
    )
    ORDER BY  `nom` ASC;
    ";
     
    $result = mysql_query($req);
     
    if ( $result === FALSE ) {
    echo 'DEBUG : ', $req, ' // ', mysql_error( ) ;
    // Arrêter traitement, rediriger, etc.
    }
     
    while($rows = mysql_fetch_assoc($result)){
     
    	$nbDocsSerie = $rows['nbDocsSerie'];
    	if ($nbDocsSerie != 0){
    		echo '<p>'.fullUpper($rows['nom']).' (série de 1 à '.$rows['nbDocsSerie'].')</p>'; 
    	}
    	else {
    		?>
    		<a href="film_<?=$rows['idDoc']?>_<?php echo oteAccents($rows['nom'])?>"><?php echo '<p>'.fullUpper($rows['nom']).'</p>';?> </a>
    		<?php
    	}
    }
    ?>
    La fonction oteAccents :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // 	---------------------------------------------------------------
    // fonction pour enlever les accents et les caractères spéciaux
    // 	---------------------------------------------------------------
     
    function oteAccents($str) {
    			$translit = array('Á'=>'A','À'=>'A','Â'=>'A','Ä'=>'A','Ã'=>'A','Å'=>'A','Ç'=>'C','É'=>'E','È'=>'E','Ê'=>'E','Ë'=>'E','Í'=>'I','Ï'=>'I','Î'=>'I','Ì'=>'I','Ñ'=>'N','Ó'=>'O','Ò'=>'O','Ô'=>'O','Ö'=>'O','Õ'=>'O','Ú'=>'U','Ù'=>'U','Û'=>'U','Ü'=>'U','Ý'=>'Y','á'=>'a','à'=>'a','â'=>'a','ä'=>'a','ã'=>'a','å'=>'a','ç'=>'c','é'=>'e','è'=>'e','ê'=>'e','ë'=>'e','í'=>'i','ì'=>'i','î'=>'i','ï'=>'i','ñ'=>'n','ó'=>'o','ò'=>'o','ô'=>'o','ö'=>'o','õ'=>'o','ú'=>'u','ù'=>'u','û'=>'u','ü'=>'u','ý'=>'y','ÿ'=>'y','.'=>'');
     
    	$str = strtr($str, $translit);
     
    	return preg_replace('#[^a-zA-Z0-9\-\._]#', '_', $str); 
    }
    Pour la page d'affichage doc_fr.php se basant sur la récupération de l'idDoc avec la variable $_GET['idDoc'], rien de changé, voir plus haut dans cette fil de discussion.

    Le résultat, pour la page présentant le film 17 intitulé Les chercheuses d'or de Birmanie :
    http://www.monsite.com/film_17_Les_c...or_de_Birmanie

    Il me reste maintenant deux choses à faire :
    - réussir à empêcher que sur la page de présentation du film, quand il y a plusieurs versions par exemple, ça ne m'affiche :
    Version : française
    Version : portugaise

    Au lieu de :
    Version : française, portugaise

    - réussir à construire une page serie_fr.php pour présenter chaque série ainsi que les films qu'elle comporte.

    Après ça, y'a pas à tortiller, faut que je passe à mon rapport pour avoir qqch à présenter jeudi prochain.
    La fin de la création du site ne pourra de toutes façons avoir lieu qu'après la soutenance car il reste trop à faire encore....

  12. #72
    Membre du Club Avatar de StephBretagne
    Femme Profil pro
    Inscrit en
    Mars 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 147
    Points : 69
    Points
    69
    Par défaut
    Je me suis creusée la tête jusqu'à très tard hier soir et, à part faire sauter mon serveur (MDR), je ne suis arrivée à rien...

    Je récapitule :
    - nous avons des pages affichant le contenu des films documentaires qui se présentent comme suit :
    • image
    • nom en fçais
    • date du copyright
    • auteurs
    • réalisateurs
    • format(s)
    • diffusion(s)
    • nature
    • version(s)
    • production
    • participation
    • descriptif en fçais



    - chaque élément est récupéré par une requête.
    - ces films documentaires n'appartiennent pas forcément à une série, mais cela peut arriver.

    Les séries, elles, doivent se présenter comme suit :
    • Image
    • Descriptif en français
    • Ancres pour accéder aux films qui la compose
    • Film 1 avec tous ses éléments
    • Film 2 avec tous ses éléments
    • ...
    • Dernier film avec tous ses éléments


    Dans ce long fil, j'ai déjà exposé mes tables mais, comme ça peut faire un peu long de tout relire, je mets mon fichier sql en pj. Il contient toutes les tables avec un 1er film et une 1ère série en insert.

    Si quelqu'un pouvait être assez sympa pour me dire comment je dois construire ma page série, ce serait génial.

    Pour l'instant elle affiche l'image et le descriptif mais il semblerait que je sois incapable d'imaginer les boucles pour afficher
    - les ancres
    - les films

    Un super merci d'avance .
    Fichiers attachés Fichiers attachés

  13. #73
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 101
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 101
    Points : 8 211
    Points
    8 211
    Billets dans le blog
    17
    Par défaut
    Il suffit de faire une requête extrayant les films d'une série donnée et de boucler deux fois sur le résultat.
    1re fois pour récupérer les titres et créer les liens vers les ancres.
    2e fois pour afficher les infos des films, tu peux prendre modèle sur ce qui a déjà été fait précédemment sur la page d'affichage d'un film.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  14. #74
    Membre du Club Avatar de StephBretagne
    Femme Profil pro
    Inscrit en
    Mars 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 147
    Points : 69
    Points
    69
    Par défaut
    Recoucou à tous

    Alors voilà :
    - j'ai passé ma soutenance le 26 avril et j'ai réussi à obtenir le titre
    - après qq semaines de lit, je suis à nouveau en forme et sur le pont depuis lundi
    - je dois finir le site et il reste encore pas mal de trucs à faire

    - j'ai repris où j'en étais, c'est-à-dire à la page de présentation d'une série.

    Suivant les excellents conseils de Séb, j'ai pris modèle sur ce qui avait déjà été fait précédemment sur la page d'affichage d'un film en essayant d'adapter mais ce n'est pas encore ça.

    Actuellement, je parviens à afficher :

    1. Nom de la série + nbre de films qui la composent
    2. Image
    3. Descriptif en français
    4. Titres des films qui la composent (pour futures ancres)
    5. Film 1 avec tous ses éléments et même plus
    6. Aucun des autres films



    Je m'explique pour le point 5 : pour une série de 10 films, sont indiqués les uns en dessous des autres dans le film 1 les éléments de chacun des 10 films : Format, Diffusion, Durée, Version (voir pj .png, ce sera peut-être + clair)

    De plus, je ne vois pas comment faire :
    - la boucle pour afficher TOUS les films de la série
    - les ancres

    Le fichier serie_fr.php est en pj.

    Merci d'avance pour vos conseils !!!
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [MySQL] Affichage de requêtes SQL
    Par Mouchh dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 03/08/2011, 15h20
  2. [MySQL] Affichage résultat requête SQL dans page HTML comme un tableau
    Par joxbl dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 14/03/2011, 14h26
  3. Affichage résultat requête SQL
    Par Shankara dans le forum Composants
    Réponses: 7
    Dernier message: 10/06/2010, 21h21
  4. Affichage de requête SQL
    Par bibipsi dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 15/05/2009, 20h49
  5. [SQL] Soucis d'affichage de requête SQL
    Par kilkikou dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 06/06/2006, 16h25

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