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

Langage PHP Discussion :

Problème avec le include


Sujet :

Langage PHP

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 226
    Points : 225
    Points
    225
    Par défaut Problème avec le include
    Bonjour à tous,

    Je ne comprends pas pourquoi ce code fonctionne :
    Tout dans le fichier "index.php"
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
    <?php
     
    $bdListe = mysql_connect("localhost", "root", "") or die("Impossible de se connecter à la base de données !");
    mysql_select_db("bd_lexique") or die("Base de données introuvable !");
     
    $resultatParLettre = "";
    $lettreCliquee = "";
     
    if(isset($_GET['lettreCliquee']) && strlen($_GET['lettreCliquee']) == 1) {
     
    	$laLettre = $_GET['lettreCliquee'];
    	$laLettre = preg_replace("#[^a-z]#i", "", $laLettre);
     
    	$requete = mysql_query("SELECT * FROM bd_artistes WHERE nom LIKE '$laLettre%' ORDER BY nom ASC") or die("Aucun résultat trouvé !");
    	$compteur = mysql_num_rows($requete);
     
    	if($compteur == 0) {
     
    		$resultatParLettre .= '<div class="erreur-recherche">Désolé, aucun artiste commençant par la lettre "'.$laLettre.'" ne figure dans notre base de données !</div>';
     
    	}
    	else {
     
    		while($ligne = mysql_fetch_array($requete)) {
     
    			$nomChoisi = $ligne['nom'];
    			$titreChoisi = $ligne['titre'];
    			$idChoisi = $ligne['id'];
     
    			$resultatParLettre .= '<div class="resultat-recherche">'.$nomChoisi.' '.$titreChoisi.'</div>';
     
    		}
     
    		mysql_close($bdListe);
     
    	}
     
    }
     
    ?>
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Search</title>
     
    <script>
     
    var divs = "";
    var btns = "";
    var lettres = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    var tableauLettres = lettres.split("");
     
    for(var i = 0; i < 26; i++) {
     
    	var lettre = tableauLettres.shift();
     
    	btns += '<button class="btns-lettres" onclick="lettreChoisie(\''+lettre+'\');">'+lettre+'</button>';
     
    }
    function lettreChoisie(let) {
     
    	document.location.href = "index.php?lettreCliquee="+let;
     
    }
     
     
    </script>
     
    </head>
     
    <body>
     
      	<div id="bloque-lettres">
     
    		<script>
     
          		document.write(btns);
     
    		</script>
     
    	</div>
    	<!-- fin #bloque-lettres -->
     
    	<?php
     
    	    print("$resultatParLettre");
     
            ?>
     
    </body>
    </html>
    Alors que si je fais le même chose mais en séparant le php comme ceci :
    Dans le fichier "index.php"
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Search</title>
     
    <script>
     
    var divs = "";
    var btns = "";
    var lettres = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    var tableauLettres = lettres.split("");
     
    for(var i = 0; i < 26; i++) {
     
    	var lettre = tableauLettres.shift();
     
    	btns += '<button class="btns-lettres" onclick="lettreChoisie(\''+lettre+'\');">'+lettre+'</button>';
     
    }
    function lettreChoisie(let) {
     
            // Chemin du fichier
    	document.location.href = "templates/lexique/recherche_par_click.php?lettreCliquee="+let;
     
    }
     
     
    </script>
     
    </head>
     
    <body>
     
      	<div id="bloque-lettres">
     
    		<script>
     
          		document.write(btns);
     
    		</script>
     
    	</div>
    	<!-- fin #bloque-lettres -->
     
     
    </body>
    </html>
    Puis dans le fichier "templates/lexique/recherche_par_click.php"
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    <?php
     
    $bdListe = mysql_connect("localhost", "root", "") or die("Impossible de se connecter à la base de données !");
    mysql_select_db("bd_lexique") or die("Base de données introuvable !");
     
    $resultatParLettre = "";
    $lettreCliquee = "";
     
    if(isset($_GET['lettreCliquee']) && strlen($_GET['lettreCliquee']) == 1) {
     
    	$laLettre = $_GET['lettreCliquee'];
    	$laLettre = preg_replace("#[^a-z]#i", "", $laLettre);
     
    	$requete = mysql_query("SELECT * FROM bd_artistes WHERE nom LIKE '$laLettre%' ORDER BY nom ASC") or die("Aucun résultat trouvé !");
    	$compteur = mysql_num_rows($requete);
     
    	if($compteur == 0) {
     
    		$resultatParLettre .= '<div class="erreur-recherche">Désolé, aucun artiste commençant par la lettre "'.$laLettre.'" ne figure dans notre base de données !</div>';
     
    	}
    	else {
     
    		while($ligne = mysql_fetch_array($requete)) {
     
    			$nomChoisi = $ligne['nom'];
    			$titreChoisi = $ligne['titre'];
    			$idChoisi = $ligne['id'];
     
    			$resultatParLettre .= '<div class="resultat-recherche">'.$nomChoisi.' '.$titreChoisi.'</div>';
     
    		}
     
    		mysql_close($bdListe);
     
    	}
     
    }
     
    ?>
     
    <?php
     
    	include 'index.php'; // ici je ne peux pas lui dire le chemin templates/lexique/index.php. Pourtant il est bien dans ce dossier aussi 
    	print("$resultatParLettre");
     
    ?>
    Ca me génère une erreur et il m'affiche deux fois le chemin !?

    J'ai eu beau y passer la nuit, je n'ai pas trouvé de solution... une aide serait la bienvenue, par avance merci à tous pour votre contribution.
    Cdt, Antonio.

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Oui, c'est vrai ça.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 226
    Points : 225
    Points
    225
    Par défaut
    Bj Bovino..

    Eh oui j'ai cliqué sur enregistrer le message au lieu de prévisualisation... le temps que je le termine
    Cdt, Antonio.

  4. #4
    Membre confirmé
    Homme Profil pro
    Déveleoppeur Web/Mobile
    Inscrit en
    Avril 2013
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Déveleoppeur Web/Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 330
    Points : 545
    Points
    545
    Par défaut
    Quelle est l'erreur affichée ?

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 226
    Points : 225
    Points
    225
    Par défaut
    Slt Rpass,

    L'erreur est la suivante :

    Not Found
    The requested URL /Test/templates/lexique/templates/lexique/recherche_par_click.php was not found on this server.
    C'est ce que je dis en commentaire, il affiche deux fois le chemin !?


    EDIT : Si besoin je peux déposer la base.
    Cdt, Antonio.

  6. #6
    Membre confirmé
    Homme Profil pro
    Déveleoppeur Web/Mobile
    Inscrit en
    Avril 2013
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Déveleoppeur Web/Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 330
    Points : 545
    Points
    545
    Par défaut
    donc ce n'est pas le include de index.php qui ne fonctionne pas, tu indiques bien la bonne url dans ta barre d'adresse ?

    Je te conseillerais de faire le include de ton code php dans ton code html plutôt que d'inclure ton code html dans ton code php, c'est plus propre et peut éviter des erreurs

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 226
    Points : 225
    Points
    225
    Par défaut
    Merci de me répondre Rpass,

    Ben oui je crois bien saisir la bonne url dans la barre d'adresse, mais "faire le include de ton code php dans ton code html plutôt que d'inclure ton code html dans ton code php"

    Comment ça, j'avoue ne pas comprendre ?

    Désolé, je débute en php et mysql..
    Cdt, Antonio.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1/ L'erreur se trouve ligne 26 du fichier index.php.
    il faut aussi le chemin relatif, sans les dossiers.

    2/ logiquement, c'est le fichier contenant la balise <doctype> qui doit etre le fichier principal.
    donc ici index.php
    Les includes se font dedans.

    3/ tu as construit une usine a gaz en JavaScript, alors qu'on peut tres bien générer des liens en php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="recherche_par_click.php?lettreCliquee=<?php echo $lettre; ?>"><?php echo $lettre; ?></a>
    (Bout de code a completer en php)
    Dernière modification par Invité ; 20/03/2015 à 20h08.

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 226
    Points : 225
    Points
    225
    Par défaut
    Bonsoir,

    Désolé pour ma réponse tardive, peu de temps ces jours..

    J'ai réussi à inclure le tout comme il faut (je pense), grâce notamment aux conseils de jreaux, mais cela dit merci à tous pour vos interventions !

    En revanche jreaux, quand tu dis qu'on peut générer des liens avec php, je n'ai pas réussi à le faire, peux-tu me montrer, par exemple avec une boucle pour en faire un dizaine que je voie ça.. ?

    Voici comment j'ai fait, dîtes- moi si c'est pas bon... (le script va normalement aussi dans un fichier séparé, mais pour l'exemple je l'ai laissé comme ça)...

    Fichier index.php
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    <?php
     
    	include('recherche.php');
     
    	if(isset($_POST['lettre'])) {
     
    		header("Location:index.php");
     
    	}
     
    ?>
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Search</title>
     
    <script>
     
    var btns = "";
    var lettres = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    var tableauLettres = lettres.split("");
     
    for(var i = 0; i < 26; i++) {
     
    	var lettre = tableauLettres.shift();
    	btns += '<input class="btns" type="submit" value="'+lettre+'" onclick="lettreChoisie(\''+lettre+'\');">';
     
    } 
     
    function lettreChoisie(let) {
     
    	document.location.href = "index.php?lettre="+let;
     
    }
     
     
    </script>
     
    </head>
     
    <body>
     
      	<div id="bloque-lettres">
     
    		<script>
     
          		document.write(btns);
     
    		</script>
     
    	</div>
    	<!-- fin #bloque-lettres -->
     
    	<div id="bloque-resultat">
     
    		<?php
     
    			print("$resultatParLettre");
     
    		?>
     
    	</div>
     
    </body>
    </html>
    Fichier recherche.php
    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
    37
    38
    39
    40
     
    <?php
    $bdListe = mysql_connect("localhost", "root", "") or die("Impossible de se connecter à la base de données !");
    mysql_select_db("bd_lexique") or die("Base de données introuvable !");
     
    $resultatParLettre = "";
     
    if(isset($_GET['lettre']) && strlen($_GET['lettre']) == 1) {
     
    	$laLettre = $_GET['lettre'];
    	$laLettre = preg_replace("#[^a-z]#i", "", $laLettre);
     
    	$requete = mysql_query("SELECT * FROM bd_artistes WHERE nom LIKE '".$laLettre."%' ORDER BY nom ASC") or die("Aucune base de données trouvée !");
     
    	$compteur = mysql_num_rows($requete);
     
    	if($compteur == 0) {
     
    		$resultatParLettre .=
    		'<div id="erreur-recherche">Désolé, aucun artiste commençant par la lettre "'.$laLettre.'" ne figure dans la base de données !</div>';
     
    	}
    	else {
     
    		while($ligne = mysql_fetch_array($requete)) {
     
    			$nomChoisi = $ligne['nom'];
    			$titreChoisi = $ligne['titre'];
    			$idChoisi = $ligne['id'];
     
    			$resultatParLettre .= '<p>'.$nomChoisi.' - '.$titreChoisi.'</p>';
     
    		}
     
    		mysql_close($bdListe);
     
    	}
     
    }
    ?>
    Merci encore à tous !

    Antonio.
    Cdt, Antonio.

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 226
    Points : 225
    Points
    225
    Par défaut Erreur de syntaxe dans une requête.
    Bonsoir tout le monde,

    J'ai ceci qui fonctionne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "SELECT * FROM `bd_nom` WHERE (`nom`= 'Marcos' OR `nom2`= 'Butier') ORDER BY id ASC"
    Mais avec une variable ça ne joue pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $leNom = $_POST['leNom'];
    "SELECT * FROM `bd_nom` WHERE (`nom`= '$leNom%' OR `nom2`= '$leNom%') ORDER BY id ASC"
    Ni comme ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $leNom = $_POST['leNom'];
    "SELECT * FROM `bd_nom` WHERE (`nom`= '".$leNom."%' OR `nom2`= '".$leNom."%') ORDER BY id ASC"
    Quelle est la bonne syntaxe s'il vous plait ?

    Merci pour votre aide !

    Antonio.
    Cdt, Antonio.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1/ la bonne syntaxe consiste AVANT TOUT à protéger la requête des injections SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $leNom = mysql_real_escape_string( $_POST['leNom'] );
    $requete = "SELECT * FROM bd_nom WHERE ( nom = '".$leNom."%' OR nom2= '".$leNom."%' ) ORDER BY id ASC";
    2/ Quant à la génération de liens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $lettres = explode( '', $alphabet );
    foreach ( $lettres as $lettre ){
    ?>
    	<a class="abtns" href="indexpage.php?lettreCliquee=<?php echo $lettre; ?>"><?php echo $lettre; ?></a>
    <?php
    }
    ?>

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 226
    Points : 225
    Points
    225
    Par défaut
    Hello,

    Ok merci pour votre réponse, je vais tester tout ça et merci pour l'exemple de la boucle !

    Merci à tous !

    Antonio.
    Cdt, Antonio.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec un include
    Par Rhadamanthe59 dans le forum Langage
    Réponses: 5
    Dernier message: 07/12/2006, 16h58
  2. problème avec des include
    Par nixonne dans le forum Langage
    Réponses: 4
    Dernier message: 22/08/2006, 17h12
  3. Problème avec un include
    Par cyberdevelopment dans le forum Langage
    Réponses: 8
    Dernier message: 18/08/2006, 17h21
  4. Problème avec un "include"
    Par oragoun dans le forum Langage
    Réponses: 21
    Dernier message: 08/06/2006, 10h41
  5. [Tableaux] problème avec un include
    Par nicoaix dans le forum Langage
    Réponses: 6
    Dernier message: 08/12/2005, 11h37

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