Trouvez mes erreurs PHP/MySQL SVP !

Fermé
alphonse - 31 janv. 2009 à 21:34
 alex2121 - 20 août 2009 à 22:20
Bonjour,

J'ai l'erreur en affichage de ma page :
$message = mysql_real_escape_string(htmlspecialchars($_POST['message'])); $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));

Pseudo
message
Envoyer

Je clique sur envoyer et l'erreur 404 apparait :

Voici mes scripts :
chat.php
---------------------------------------------
<?php
function tchat(){
$connect=mysql_connect("db1750.1and1.fr","db273174652",'Monmotdepasse" );
mysql_select_db("db273174652",$connect);
$query=mysql_query("SELECT DISTINCT pseudo FROM chat" );
$nombre_connecte=mysql_num_rows($query);
echo"",$nombre_connecte," connecté(s) sur le chat<br><br>";
$affich_dialogue="SELECT * FROM chat ORDER BY id DESC";
$chat=mysql_query($affich_dialogue,$connect);
while($tab=mysql_fetch_array($chat,MYSQL_ASSOC)){
$pseudo = stripslashes($tab['pseudo']);
$com = stripslashes($tab['com']);


echo"<table width='435'><tr><td>";
echo"<font color='navy' size='2'><b>$pseudo</b><font>:";
echo"<font color='black' size='2'>({$tab[date]} à
{$tab[heure]})</font><br>";
echo"<font color='maroon' size='2'>$com<br></font>";
echo"</td></tr></table>";
}
}
?>

<html>
<head>
<meta http-equiv="Refresh" content="5; url=chat.php">
<base target="_self">
</head>
<body>
<?php
$connect=mysql_connect("db1750.1and1.fr","db273174652","Monmotdepasse" );
mysql_select_db("db273174652",$connect);

$temps = 300;

$heure_debut_chat = time();

$date = date("d-m-y" );

$heure = date("H\hi" );

$heure_fin_chat = $heure_debut_chat-$temps;

mysql_query("DELETE FROM chat WHERE time<'$heure_fin_chat'" );

if($submit){

if(empty($pseudo) or empty($com) or $pseudo=='Votre
pseudo'){
tchat();
exit();
}else{
$pseudo = trim($pseudo);
$pseudo = AddSlashes($pseudo);
$pseudo = strip_tags($pseudo);
$com = strip_tags($com);
$com = AddSlashes($com);
$insert_text="INSERT INTO chat(time,date,heure,pseudo,com)";
$insert_text.="VALUES('$heure_debut_chat','$date','$heure','$pseudo','$com')";
mysql_query($insert_text,$connect);
}
}
tchat();

mysql_close();
?>
</body>
</html>

===================> FormChat.html

<html>

<head>
<title>form</title>
<base target="_self">
</head>
<div align="center">

<form name="f" method="post" action="chat.php" target="principal" onSubmit="document.f.com.focus();">

<table width="405">
<tr>
<td valign="top" align="center">
<p align="left">Pseudo
<input name="pseudo" value="Votre pseudo" size="12" onFocus="this.select()" style="float: left">
</td>
</tr>
<tr>
<td valign="top" align="center">
<input name="com" rows="3" cols="30" wrap="virtual" size="38" onFocus=this.value='' style="float: left"><input type="submit" name="submit" value="Tchat!!" >
</td>
</tr>
<tr>
<td valign="top" align="center"></td></tr></table>

</form>

</div>

</font></p>
</body>
</html>

<script>
document.f.pseudo.focus();
</script>


===============>Chat.html
<html>
<head>
<title>TCHAT!!</title>
</head>

<frameset rows="51%,49%">
<frame name="principal" scrolling="auto" marginwidth="10" marginheight="14" frameborder="0" src="chat.php" target="_self">
<frame name="notes" scrolling="no" marginwidth="10" marginheight="14" frameborder="0" src="formchat.htm" target="_self">
</noframes>


<noframes>
<body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<p>Cette page utilise des cadres. Pour pouvoir la consulter, votre navigateur doit supporter les cadres.</p>
</body>
</noframes>

</html>

----------------------------------------------------------------------------------

Ou j'ai essayé la méthode du zéro qui me donne le même resultat a l'erreur 404 Après "envoyer":

---------------------------------------------------------------------------------

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Mini-chat</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<style type="text/css">
form
{
text-align:center;
}
</style>
<body>


<?php
if (isset($_POST['pseudo']) AND isset($_POST['message'])) // Si les variables existent
{
if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL) // Si on a quelque chose à enregistrer
{
// D'abord, on se connecte à MySQL
mysql_connect("db1750.1and1.fr:/tmp/mysql5.sock", "dbo273174652", "Motdepasse");
mysql_select_db("minichat");

// On utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la sécurité
$message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));

// Ensuite on enregistre le message
mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message')");

// On se déconnecte de MySQL
mysql_close();
}
}


// Que l'on ait enregistré des données ou pas...
// On affiche le formulaire puis les 10 derniers messages

// Tout d'abord le formulaire :
?>



<form action="minichat.php" method="post">

<p>
Pseudo : <input type="text" name="pseudo" /><br />
Message : <input type="text" name="message" /><br />

<input type="submit" value="Envoyer" />
</p>

</form>



<?php

// Maintenant on doit récupérer les 10 dernières entrées de la table
// On se connecte d'abord à MySQL :
mysql_connect("db1750.1and1.fr:/tmp/mysql5.sock", "dbo273174652", "Motdepasse");
mysql_select_db("minichat");

// On utilise la requête suivante pour récupérer les 10 derniers messages :
$reponse = mysql_query("SELECT * FROM minichat ORDER BY ID DESC LIMIT 0,10");

// On se déconnecte de MySQL
mysql_close();

// Puis on fait une boucle pour afficher tous les résultats :
while ($donnees = mysql_fetch_array($reponse) )
{
?>

<p><strong><?php echo $donnees['pseudo']; ?></strong> : <?php echo $donnees['message']; ?></p>



<?php
}
// Fin de la boucle, le script est terminé !
?>


</body>
</html>

----------------------------------------------------------
Voila pourriez vous m'indiquez ou vous décelez des erreurs ?

16 réponses

HostOfSeraphim Messages postés 6750 Date d'inscription jeudi 2 février 2006 Statut Contributeur Dernière intervention 31 juillet 2016 1 608
31 janv. 2009 à 21:35
Juste pour info : erreur 404, c'est une page qui n'existe pas. Vérifie tes noms de pages (redirections, etc).

0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
31 janv. 2009 à 21:44
en complement:

<form name="f" method="post" action="chat.php" target="principal" onSubmit="document.f.com.focus();">


par action= tu appeles le script chat.php

et tu nommes ta page chat.html

donc la page appelée chat.php n'existe pas
0
Merci pour ta réponse

par action= tu appeles le script chat.php

et tu nommes ta page chat.html

Oui j'appelle le script chat.php pour que chat.html prenne en compte chat.php.

Je pensais que le problème venait du problème de connexion à ma base de donnée.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
31 janv. 2009 à 21:54
j'appelle le script chat.php pour que chat.html prenne en compte chat.php.


la il y a un truc que tu n'as pas compris

si tu veux qu'une page soit appelée il faut que ce soit celle qui est précisée dans action=

donc renomes ta page chat.html en chat.php
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Au niveau de mysql_connect("db1750.1and1.fr:/tmp/mysql5.sock",

Dois-je mettre : ":/tmp/mysql5.sock" ?
0
Merci je vais verifier tout cela.
0
Au final.html fonctionne bien et plus d'erreur 404... C'est une frameset qui relie bien formchat.html et chat.php.

Mais Sa ne fonctionne pas... C'est blanc... Avec Pseudo/Message/envoyé et "connéctéé" de l'autre coté ...

Je crois qu'il y a un soucis avec la connexion de la BDD ...

$connect=mysql_connect("db1750.1and1.fr","dbo273174652",'Monmotdepasse" );
mysql_select_db("db273174652",$connect);


Dois-je mettre "db1750.1and1.fr:/tmp/mysql5.sock" ?

Et mysql_select_db("db273174652",$connect); ??? Ou ("chat",$connect);

"chat" etant le nom de ma table SQL.

Peut être un problème de connexion entre Formchat.html et Chat.php...
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
31 janv. 2009 à 23:17
evidement tu n'as plus le pb de erreur 4004 puisque tu appelles la page html

mais dans ta page html tu as src=chat.php donc ça affiche bien la page chat.php mais sans lui passer les valeurs envoyées par le formulaire

ce n'est pas pour rien que

<form method="post" action="chat.php"


veut dire on appelle le script chat.php en lui passant les valeurs des champs pseudo etc.. et uniquement à celui là !

ton principe n'est pas bon, tu ne respectes pas le principe des formulaires

vas voir le site (si tu ne connais pas déja) www.siteduzero.com
0
Bon, je reprendrais demain...

En chargeant formchat.html en 1er.
Formchat.html envoi les données à chat.php.

Oui , mais même là c'est "Chargement / "connéctés"Page blanche / Chargement / "connéctés"Page blanche etc..."
Je comprend pas l'erreur. Là le <form method="post" action="chat.php"> Est présent et sa ne marche pas.

Apparament Tchat.html ne fait que charger les 2 Pages en même temps...

Mon idée est de charger Formchat en 1er qui me redirige vers Chat.php en lui passant les valeurs des champs comme tu l'as dit. Donc je devrais modifier le Src="chat.php"... Pour le charger en 2eme, mais comment ?

Merci et Bonne soirée à toi Alain.
0
Je vois toujours pas mon erreur... Normalement avec Formchat.html , ce script serait censé marcher... J'ai bien le <form method="post" action="chat.php"> et sa ne marche pas...

Pouvez vous me donner encore une petite piste ???
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
2 févr. 2009 à 11:46
Bonjour,

si j'ai bien compris la structure de te spages:

la page que tu appelles en premier
chat.html est la page avec des frames
les src= permettent de charger dans chaque frame formchat.html et chat.php

qd l'utilisateur rempli les champs pseudo etc... de la partie formchat.html et clique le bouton ça doit appeler le script chat.php

<form ........action="chat.php" target="target="principal">
Remarque en passant: onSubmit="document.f.com.focus();" ne sert absolument à rien içi tu peux le virer


et regarde mes remarques pour le script chat.php:
<?php
function tchat($pseudo){
	$connect=mysql_connect("db1750.1and1.fr","db273174652","Monmotdepasse" );
	mysql_select_db("db273174652",$connect);
	$query=mysql_query("SELECT DISTINCT pseudo FROM chat" );
	$nombre_connecte=mysql_num_rows($query);
	echo"",$nombre_connecte," connecté(s) sur le chat<br><br>";
	$affich_dialogue="SELECT * FROM chat ORDER BY id DESC";
	$chat=mysql_query($affich_dialogue,$connect);
	while($tab=mysql_fetch_array($chat,MYSQL_ASSOC)){
	$pseudo = stripslashes($tab['pseudo']);
	$com = stripslashes($tab['com']);


	echo"<table width='435'><tr><td>";
	echo"<font color='navy' size='2'><b>$pseudo</b><font>:";//$pseudo tu ne peux pas l'utiliser à l'interieur de la fonction comme ça il faut que tu lui le passe en argument
	echo"<font color='black' size='2'>({$tab[date]} à
	{$tab[heure]})</font><br>";
	echo"<font color='maroon' size='2'>$com<br></font>";
	echo"</td></tr></table>";
	}
}
?>

<html>
<head>
<meta http-equiv="Refresh" content="5; url=chat.php">
<base target="_self">
</head>
<body>
<?php
$connect=mysql_connect("db1750.1and1.fr","db273174652","Monmotdepasse" );
mysql_select_db("db273174652",$connect);

$temps = 300;

$heure_debut_chat = time();

$date = date("d-m-y" );

$heure = date("H\hi" );

$heure_fin_chat = $heure_debut_chat-$temps;

mysql_query("DELETE FROM chat WHERE time<'$heure_fin_chat'" );

/*il vaut mieux récupérer les valeurs envoyés sur la variable globale $_POST
//car si Register_global est à OFF tu ne peux pas utiliser directement $pseudo mais il faut faire $pseudo=$_POST['pseudo']*/

if(isset($_POST['submit'])){
	$pseudo=$_POST['pseudo'];
	$com=$_POST['com'];
	
	if(empty($pseudo) or empty($com) or $pseudo=='Votre pseudo'){
		tchat($pseudo); //appel de la fonction en lui pasant le pseudo en argument
		exit();
}else{
	$pseudo = trim($pseudo);
	$pseudo = addslashes($pseudo); // en php la casse a de l'importance je connais la fonction addslashes mais pas AddSlashes
	$pseudo = strip_tags($pseudo);
	$com = strip_tags($com);
	$com = addslashes($com);
	$insert_text="INSERT INTO chat(time,date,heure,pseudo,com)";
	$insert_text.="VALUES('$heure_debut_chat','$date','$heure','$pseudo','$com')";
	mysql_query($insert_text,$connect);
	}
	}
	tchat($pseudo);

mysql_close();
?>
</body>
</html> 
0
Bonjour, je viens de renommer Chat.html en chat1.php .
J'ai corrigé les petites erreurs que tu m'as cité à part :

echo"<font color='navy' size='2'><b>$pseudo</b><font>:";//$pseudo tu ne peux pas l'utiliser à l'interieur de la fonction comme ça il faut que tu lui le passe en argument

Placer un pseudo en argument en plein Echo... Avec un tchat($pseudo); ... Sa me met Faux...

/*il vaut mieux récupérer les valeurs envoyés sur la variable globale $_POST
//car si Register_global est à OFF tu ne peux pas utiliser directement $pseudo mais il faut faire $pseudo=$_POST['pseudo']*/

Je n'ai pas très bien compris le sens des variables... Sa va être compliqué sa ???

Je crois que c'est en effet les 2 choses qui clochent et que je ne comprend pas...

Merci de m'éclaircir (encore)!
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
10 févr. 2009 à 15:49
le principe d'une fonction et des portees de variables

une variable déclaree dans un script comme ça: $a='toto'; est dite locale, elle n'est accessible que par le script et donc pas par la fonction

pour l'utiliser dans une fonction il faut soit la déclarer en globale : global $a='toto';

soit passer la variable en argument à la fonction lors de l'appel
l'arguments ou les arguments se mettent entre les ()

exemple:
<?php
//declaration d ela fonction, on précise quel(s) argument on attend içi un seul $arg1
function exempl($arg1){

echo 'Ton pseudo est: '.$arg1;

}
//declaration de la variable locale
$a='toto';

//appel de la fonction en lui passant en argument la variable $a:
exemple($a);

?>
0
Alors :

<?php
function tchat(){
$connect=mysql_connect("bddserveur","Nom","Mdp" );
mysql_select_db("bdd",$connect);
$query=mysql_query("SELECT DISTINCT pseudo FROM chat" );
$nombre_connecte=mysql_num_rows($query);
echo"",$nombre_connecte," connecté(s) sur le chat<br><br>";
$affich_dialogue="SELECT * FROM chat ORDER BY id DESC";
$chat=mysql_query($affich_dialogue,$connect);
while($tab=mysql_fetch_array($chat,MYSQL_ASSOC)){
$pseudo = stripslashes($tab['pseudo']);
$com = stripslashes($tab['com']);

function tchat($pseudo){
echo '.$pseudo';
echo '{$tab[date]} à {$tab[heure]} ';
echo '$com';
}
}
}
?>

J'ai essayer pleins de scripts du genre. Rien de fonctionne ... J'ai découpé dans tous les sens... Ne dois-je pas le faire aussi pour $com ? J'ai essayé de mettre echo ' global $pseudo'; . Et puis A la base c'est dans un Tableau alors les balises attachés ne peuvent pas gener l'argument ?
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
11 févr. 2009 à 20:35
Bonsoir,

la tu as fait fortdans ta fonction tchat(), tu mets dans la boucle while un appel a la fonction elle même tchat()

ça doit pas mal tourner en rond

fais simplement comme ça:

<?php
function tchat(){
	$connect=mysql_connect("bddserveur","Nom","Mdp" );
	mysql_select_db("bdd",$connect);
	$query=mysql_query("SELECT DISTINCT pseudo FROM chat" );
	$nombre_connecte=mysql_num_rows($query);
	echo"",$nombre_connecte," connecté(s) sur le chat<br><br>";
	$affich_dialogue="SELECT * FROM chat ORDER BY id DESC";
	$chat=mysql_query($affich_dialogue,$connect);
	while($tab=mysql_fetch_array($chat,MYSQL_ASSOC)){
		$pseudo = stripslashes($tab['pseudo']);
		$com = stripslashes($tab['com']);

		echo '.$pseudo';
		echo $tab['date'].' &agrave .'$tab['heure'];
		echo '$com';
	}
    mysql_close();
}
?>
0
Merci, j'ai trouvé la solution, sa fonctionne enfin ! Tout est réparé. Merci à toi Alain pour ce petit cour ! Je vais réviser un peu encore mes arguments et mes variables ^^...
0
Puis-je poser une dernière petite question ? En Java comment faire défiler le message attaché au curseur avec le curseur lorsque l'on défile une grande page ? J'ai eut beau chercher, je n'ai trouvé nul part. Aucune variable, Aucun Script... Rien... :(... Avez vous une idée ?
0
bonjours alphonse je voulais savoir j'ai le même petit script mais le problème c'est que sa bug a fond et en suivant vos démarche sa ne fonctionne pas en faite quand je prend le dernier post de alain mon probleme me dit

Parse error: syntax error, unexpected T_VARIABLE, expecting ',' or ';' in E:\projet\www\chat.php on line 15

donc ligne 15 j'ai echo $tab['date'].' à .'$tab['heure'];

merci de votre aide
0