Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/09/2011, 16h46   #1
Membre habitué
 
Avatar de jlb59
 
Homme J-Luc
Retraité
Inscription : août 2004
Messages : 714
Détails du profil
Informations personnelles :
Nom : Homme J-Luc
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Retraité
Secteur : Industrie

Informations forums :
Inscription : août 2004
Messages : 714
Points : 136
Points : 136
Par défaut Moteur de recherche Google No Good

Bonjour à tous,

Je voudrais mettre dans un site en cours de confection le moteur de recherche interne de Google :
Code :
1
2
3
4
5
6
7
8
9
10
11
<?php
if (isset($_POST['search'])) {
$search = str_replace(' ', '+', $_POST['search']);
// pour une recherche interne, mettez le nom de votre site.
header('Location: http://www.google.fr/search?hl=fr&q='.$search.'+site%3Ahttp://qi98.free.fr/tmp&btnG=Recherche+Google');
}
?>
<form method="post" id="searchform" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
<input name="search" id="search" value="" size="20" type="text">
<input id="searchsubmit" value="Google" type="submit">
</form>
Le problème est que quand je suis en local, tout va très bien.

Par contre, dès que c'est en ligne, voilà le message que j'aie :
Code :
Warning: Cannot modify header information - headers already sent by (output started at /mnt/163/sdb/9/3/qi98/tmp/index.php:8) in /mnt/163/sdb/9/3/qi98/tmp/search/recherche.html on line 5
Vraiment, je ne vois pas à quoi c'est dû !

J'ai eu ce code ici, c'est le dernier post.

Je voulais faire ça parce que si je fais un moteur perso, il y a certainement des MC que je vais omettre, tandis qu'avec Google, je pense que c'est plus juste, non ?

Peut-être verrez-vous ce qui cloche dans le code, parce que je comprends plus puisque c'est OK en local.

Merci d'avance.
__________________
Cordialement.
JLB59

Analyse de la mémoire
jlb59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2011, 17h25   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
regarde ton code dans index.php ligne 8
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2011, 17h50   #3
Membre habitué
 
Avatar de jlb59
 
Homme J-Luc
Retraité
Inscription : août 2004
Messages : 714
Détails du profil
Informations personnelles :
Nom : Homme J-Luc
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Retraité
Secteur : Industrie

Informations forums :
Inscription : août 2004
Messages : 714
Points : 136
Points : 136
Citation:
Envoyé par stealth35 Voir le message
regarde ton code dans index.php ligne 8
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<TITLE>Site de test</TITLE>
<meta name="description" content="Site Exemple" />
<meta name="keywords" content="Page1,page1,P1,p1,Page2,page2,P2,p2,Page3,page3,P3,p3,Page4,page4,P4,p4," />
<meta name="author" content="JL BOUCHEZ" />
<meta name="generator" content="WebExpert 5" />
<link href="styles/styles.css" rel="stylesheet" type="text/css" title="" />
<link href="styles/topbot.css" rel="stylesheet" type="text/css" title="" />
<link href="styles/menu.css" rel="stylesheet" type="text/css" title="" />
</head>
...
Ben, y a pas grand chose à voir ! Mais est-ce l'index y est pour quelque chose ?
__________________
Cordialement.
JLB59

Analyse de la mémoire
jlb59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2011, 18h22   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
le fichier /mnt/163/sdb/9/3/qi98/tmp/index.php ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2011, 18h51   #5
Membre habitué
 
Avatar de jlb59
 
Homme J-Luc
Retraité
Inscription : août 2004
Messages : 714
Détails du profil
Informations personnelles :
Nom : Homme J-Luc
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Retraité
Secteur : Industrie

Informations forums :
Inscription : août 2004
Messages : 714
Points : 136
Points : 136
Citation:
Envoyé par stealth35 Voir le message
le fichier /mnt/163/sdb/9/3/qi98/tmp/index.php ?
Je comprends pas très bien là ?
__________________
Cordialement.
JLB59

Analyse de la mémoire
jlb59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2011, 19h05   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
ton index.php a la racine de ton site, l'erreur ne correspond pas dutout au fichier, d'ailleur pourquoi avoir appeler tonfichier recherche.html alors que y'a du PHP dedans ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2011, 19h58   #7
Membre habitué
 
Avatar de jlb59
 
Homme J-Luc
Retraité
Inscription : août 2004
Messages : 714
Détails du profil
Informations personnelles :
Nom : Homme J-Luc
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Retraité
Secteur : Industrie

Informations forums :
Inscription : août 2004
Messages : 714
Points : 136
Points : 136
Citation:
Envoyé par stealth35 Voir le message
ton index.php a la racine de ton site, l'erreur ne correspond pas dutout au fichier, d'ailleur pourquoi avoir appeler tonfichier recherche.html alors que y'a du PHP dedans ?
Parce qu'à l'origine, je n'avais pas mis ce moteur, tout était en .html (<span>, <div>, etc.
Ce n'est que ce code que j'ai rajouté.

A mon avis, qu'il soit en .php ou .html, je ne crois pas que c'est ce qui entraîne une erreur, surtout qu'en local, ça va !
__________________
Cordialement.
JLB59

Analyse de la mémoire
jlb59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2011, 20h15   #8
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 791
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 791
Points : 1 681
Points : 1 681
Salut,
est-ce que tu ne ferais pas un include() de recherche.html dans index.php avant le header() ?
__________________
Vive les roues en pierre
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2011, 05h55   #9
Membre habitué
 
Avatar de jlb59
 
Homme J-Luc
Retraité
Inscription : août 2004
Messages : 714
Détails du profil
Informations personnelles :
Nom : Homme J-Luc
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Retraité
Secteur : Industrie

Informations forums :
Inscription : août 2004
Messages : 714
Points : 136
Points : 136
Citation:
Envoyé par Djakisback Voir le message
Salut,
est-ce que tu ne ferais pas un include() de recherche.html dans index.php avant le header() ?
Effectivement, je l'appelle avec include dans l'index.php mais pa.
__________________
Cordialement.
JLB59

Analyse de la mémoire
jlb59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2011, 06h03   #10
Membre habitué
 
Avatar de jlb59
 
Homme J-Luc
Retraité
Inscription : août 2004
Messages : 714
Détails du profil
Informations personnelles :
Nom : Homme J-Luc
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Retraité
Secteur : Industrie

Informations forums :
Inscription : août 2004
Messages : 714
Points : 136
Points : 136
Citation:
Envoyé par Djakisback Voir le message
Salut,
est-ce que tu ne ferais pas un include() de recherche.html dans index.php avant le header() ?
Effectivement, je l'appelle avec include dans l'index.php mais pas nécessairement avant le header.
Tout dépend de l'endroit où on veut placer le moteur !
Code :
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
<div id="page">	
 
	<div id="header">			
		<?php include ("header/header.html"); ?>		
	</div>	
 
	<div id="menu_horizontal">		
		<ul id ="menu">			
		<?php include ("menu/menu.html"); ?>		
	</div>
 
	<div id="mid">			
		<div id="droit">				
			<?php include ("search/recherche.html"); ?>			
		</div>						
 
		<div id="main">				
			<?php include ('main_inc/main_inc.php'); ?>			
		</div>
	</div>		
 
	<div id="break"></div>		
 
	<div id="footer">				
		<?php include ('footer/footer.html'); ?>		
	</div>	 
 
</div>
Ce qui donne à l'affichage :


Mais POURQUOI ça fonctionne bien en local et pas en ligne ?
__________________
Cordialement.
JLB59

Analyse de la mémoire
jlb59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2011, 10h20   #11
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 791
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 791
Points : 1 681
Points : 1 681
Il faudrait que tu mettes le code complet d'index.php, en tout cas il ne te faut aucun html avant le header et d'après ton screenshot, il semble y en avoir.
La config du serveur local et sans doute différente de celui en ligne, la bufferisation de sortie est peut-être activée, par exemple.


Ca signifie que soit il faudrait activer la bufferisation, soit découper ton code en 2 parties, une pour le traitement post (qui se trouvera en haut de page) et une pour l'affichage du form.
__________________
Vive les roues en pierre
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2011, 11h24   #12
Membre habitué
 
Avatar de jlb59
 
Homme J-Luc
Retraité
Inscription : août 2004
Messages : 714
Détails du profil
Informations personnelles :
Nom : Homme J-Luc
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Retraité
Secteur : Industrie

Informations forums :
Inscription : août 2004
Messages : 714
Points : 136
Points : 136
Citation:
Envoyé par Djakisback Voir le message
Il faudrait que tu mettes le code complet d'index.php, en tout cas il ne te faut aucun html avant le header et d'après ton screenshot, il semble y en avoir.
Comme tu me l'as demandé, voilà le code Index.php :
Code :
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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<TITLE>Site de test</TITLE>
<meta name="description" content="Site Exemple" />
<meta name="keywords" content="Page1,page1,P1,p1,Page2,page2,P2,p2,Page3,page3,P3,p3,Page4,page4,P4,p4," />
<meta name="author" content="JL BOUCHEZ" />
<meta name="generator" content="WebExpert 5" />
<link href="styles/styles.css" rel="stylesheet" type="text/css" title="" />
<link href="styles/topbot.css" rel="stylesheet" type="text/css" title="" />
<link href="styles/menu.css" rel="stylesheet" type="text/css" title="" />
</head>
 
 <body>
 
<div id="page">	
 
	<div id="header">			
		<?php include ("header/header.html"); ?>		
	</div>	
 
	<div id="menu_horizontal">		
		<ul id ="menu">			
		<?php include ("menu/menu.html"); ?>
		</ul>
	</div>
 
	<div id="mid">			
		<div id="droit">				
			<?php include ("search/recherche.html"); ?>			
		</div>						
 
		<div id="main">				
			<?php include ('main_inc/main_inc.php'); ?>			
		</div>
	</div>		
 
	<div id="break"></div>		
 
	<div id="footer">				
		<?php include ('footer/footer.html'); ?>		
	</div>	 
 
</div>	 
 
</body>
</html>
Mais, j'ai pas très compris par ce que tu voulais dire en parlant "aucun html avant le header"

Seul l'index.php contient le DOCTYPE et tous les autres fichiers sont, logiquement, en html mais ne contiennent pas de métas.

Plus tard, pour le fichier contact, je le ferais en php parce qu'il sera plus long en code.

Explique-moi que j'essaye de mieux comprendre ?


Citation:
Envoyé par Djakisback Voir le message
La config du serveur local et sans doute différente de celui en ligne, la bufferisation de sortie est peut-être activée, par exemple.

Ca signifie que soit il faudrait activer la bufferisation, soit découper ton code en 2 parties, une pour le traitement post (qui se trouvera en haut de page) et une pour l'affichage du form.
C'est possible en effet, surtout que j'utilise EasyPHP au lieu de Winamp, peut-être par habitude et je me sens bien avec.

Là, quand tu parles de scinder le code en 2 parties, tu veux m'expliquer de quoi tu fais allusion ?

Bref, c'est pas trop important, cela m'éviterait le Php et le MySql pour faire ce moteur de recherche (objet de mon post).
Mais ce serait trop lourd si je voulais le mettre dans l'exemple.

Merci d'avance de ta réponse.

PS : comme j'ai l'intention de mettre cet exemple de site sur ce forum, j'essaie, dans la mesure de mes possibilités, de le faire le plus complet possible.
De plus, ça va certainement me servir dans un très proche avenir.
__________________
Cordialement.
JLB59

Analyse de la mémoire
jlb59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2011, 12h28   #13
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 791
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 791
Points : 1 681
Points : 1 681
Si je comprends bien le code avec le header() est dans recherche.html ?
Tu devrais le renommer en .php, c'est plus clair même si ça marchera pas mieux pour autant

Le problème est que tout ceci :

Code :
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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<TITLE>Site de test</TITLE>
<meta name="description" content="Site Exemple" />
<meta name="keywords" content="Page1,page1,P1,p1,Page2,page2,P2,p2,Page3,page3,P3,p3,Page4,page4,P4,p4," />
<meta name="author" content="JL BOUCHEZ" />
<meta name="generator" content="WebExpert 5" />
<link href="styles/styles.css" rel="stylesheet" type="text/css" title="" />
<link href="styles/topbot.css" rel="stylesheet" type="text/css" title="" />
<link href="styles/menu.css" rel="stylesheet" type="text/css" title="" />
</head>
 
 <body>
 
<div id="page">	
 
	<div id="header">			
		<?php include ("header/header.html"); ?>		
	</div>	
 
	<div id="menu_horizontal">		
		<ul id ="menu">			
		<?php include ("menu/menu.html"); ?>
		</ul>
	</div>
 
	<div id="mid">			
		<div id="droit">
est envoyé au navigateur avant l'appelle à header() qui envoie des entêtes http ce qui n'est pas valide en http. Les entêtes comme leurs noms l'indiquent doivent être envoyées en tout début de requête, donc il faut que tu te débrouilles pour que ton header() soit la première chose envoyé au navigateur.
Ca peut se faire en sortant :

Code :
1
2
3
4
5
6
7
<?php
if (isset($_POST['search'])) {
$search = str_replace(' ', '+', $_POST['search']);
// pour une recherche interne, mettez le nom de votre site.
header('Location: http://www.google.fr/search?hl=fr&q='.$search.'+site%3Ahttp://qi98.free.fr/tmp&btnG=Recherche+Google');
}
?>
de recherche.html et en le plaçant tout en haut de page index.php.
__________________
Vive les roues en pierre
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2011, 14h13   #14
Membre habitué
 
Avatar de jlb59
 
Homme J-Luc
Retraité
Inscription : août 2004
Messages : 714
Détails du profil
Informations personnelles :
Nom : Homme J-Luc
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Retraité
Secteur : Industrie

Informations forums :
Inscription : août 2004
Messages : 714
Points : 136
Points : 136
Citation:
Envoyé par Djakisback Voir le message
Si je comprends bien le code avec le header() est dans recherche.html ?
Qu'est-ce que tu appelle "header" ?

Si c'est ce que je pense, en fait c'est le "top" du site, là où on met le logo ou le nom du site.
Si tel est le cas, je te dirais non, car le header ne contient rien que de l'écriture pour l'instant.

Le moteur de recherche, totalement indépendant, se situe à droite des pages.

Citation:
Envoyé par Djakisback Voir le message
Tu devrais le renommer en .php, c'est plus clair même si ça marchera pas mieux pour autant
Ben, je m'en suis déjà aperçu !

Citation:
Envoyé par Djakisback Voir le message
Le problème est que tout ceci est envoyé au navigateur avant l'appelle à header() qui envoie des entêtes http ce qui n'est pas valide en http. Les entêtes comme leurs noms l'indiquent doivent être envoyées en tout début de requête, donc il faut que tu te débrouilles pour que ton header() soit la première chose envoyé au navigateur.
Ca peut se faire en sortant de recherche.html et en le plaçant tout en haut de page index.php.
J'ai fais ça avec le code que tu m'as donné, mais, bien qu'il n'ait pas d'erreur, rien ne se passe
__________________
Cordialement.
JLB59

Analyse de la mémoire
jlb59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2011, 16h47   #15
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 791
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 791
Points : 1 681
Points : 1 681
J'appelle header() l'appel à la fonction header() :

Code :
header('Location: http://www.google.fr/search?hl=fr&q='.$search.'+site%3Ahttp://qi98.free.fr/tmp&btnG=Recherche+Google');
qui doit être fait avant toute sortie texte ou html.
Si tu n'as plus l'erreur c'est un progrès et tu dois donc avoir un autre problème.
__________________
Vive les roues en pierre
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h38.


 
 
 
 
Partenaires

Hébergement Web