Prb avec mon code php

Fermé
sanaa2200 Messages postés 16 Date d'inscription lundi 27 juillet 2009 Statut Membre Dernière intervention 25 août 2009 - 27 juil. 2009 à 13:25
sanaa2200 Messages postés 16 Date d'inscription lundi 27 juillet 2009 Statut Membre Dernière intervention 25 août 2009 - 29 juil. 2009 à 12:47
Bonjour,
mon prb c'est que a chaque fois je teste ma page un message s'affiche " Apache http sever a cessé de fonctionner..."

et voila mon code:

<!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("localhost", "sdz", "mot_de_passe");
mysql_select_db("coursphp");

// 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("localhost", "root", "");
mysql_select_db("coursphp");

// On utilise la requête suivante pour récupérer les 10 derniers messages :
$reponse = mysql_query("SELECT * FROM minichat WHILE id=1 ORDER BY ID DESC LIMIT 0,10");
$donnees = mysql_fetch_array($reponse);
echo $donnees['pseudo'];
echo $donnees['message'];
// On se déconnecte de MySQL
mysql_close();
?>
A voir également:

18 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
27 juil. 2009 à 13:42
Si Apache ne marche pas ce n'est pas lié à ton script php

si tu es en local Wamp ou Easyphp verifie que celui ci est bien lancé et actif

ensuite une remarque:

// On utilise la requête suivante pour récupérer les 10 derniers messages :
$reponse = mysql_query("SELECT * FROM minichat WHILE id=1 ORDER BY ID DESC LIMIT 0,10");
$donnees = mysql_fetch_array($reponse);
echo $donnees['pseudo'];
echo $donnees['message'];


la requette n'est pas bonne il ne faut pas WHILE
mais WHERE pour faire une condition

ensuite pour afficher 10 reponses il faut faire une boucle while sur la reponse de la requette:

while($donnees = mysql_fetch_array($reponse)){;
echo $donnees['pseudo'];
echo $donnees['message'];
echo "<br />";

}
0
sanaa2200 Messages postés 16 Date d'inscription lundi 27 juillet 2009 Statut Membre Dernière intervention 25 août 2009
27 juil. 2009 à 13:45
merci c corrigé mais j'ai toujours le même prb et j'utilise wampserver et il parait qu'il marche tres bien
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
27 juil. 2009 à 13:52
il parait qu'il marche tres bien

il faut pas qu'il paraisse mais que tu vérifies qu'il soit bien lancé sur ton PC

un petit est:

tapes dans la barre d'adresse de ton navigateur: http://localhost

tu devrait avoir une réponse du serveur genre "Bienvenue .....

si ce n'est pas le cas tu cherches dans démarer tous les programmes tu dois avoir Wamp tu cliques pour le lancer
0
sanaa2200 Messages postés 16 Date d'inscription lundi 27 juillet 2009 Statut Membre Dernière intervention 25 août 2009
27 juil. 2009 à 13:55
oui j'ai deja fait tt ca et ca marche mais en testant ma page c'est la ou le msg deja cité s'affiche
0

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

Posez votre question
Essai de demarrer le service d'apache pour voir
0
sanaa2200 Messages postés 16 Date d'inscription lundi 27 juillet 2009 Statut Membre Dernière intervention 25 août 2009
27 juil. 2009 à 15:26
le service apache est déjà démarré :S
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
28 juil. 2009 à 10:04
fais un essai avec ce petit script suivant:

<?php
echo "Essai: configuration de php<br />";
echo phpinfo();
?>
0
sanaa2200 Messages postés 16 Date d'inscription lundi 27 juillet 2009 Statut Membre Dernière intervention 25 août 2009
28 juil. 2009 à 11:49
j'ai essayé ton script et une page ou il y tt les info sur php et apache mais la vérité j'ai po compris grandes choses
0
Slt,

remplace

mysql_connect("localhost", "sdz", "mot_de_passe"); par

mysql_connect("localhost", "root", "");

je pense que ca devrait marcher.

@+
0
sanaa2200 Messages postés 16 Date d'inscription lundi 27 juillet 2009 Statut Membre Dernière intervention 25 août 2009
28 juil. 2009 à 12:56
oui oui c'est fait mais ça change rien :S
0
Tu l'as changé aux 2 endroits ? Au debut quand tu te connectes a ta BDD et après quand tu veux afficher les messages ?

Dailleurs t'as pas besoin de te connecter 2 fois a ta BDD, et un seul mysql_close(); a la fin suffit.

Et quand t'essaies en réel ca fonctionne ?
0
sanaa2200 Messages postés 16 Date d'inscription lundi 27 juillet 2009 Statut Membre Dernière intervention 25 août 2009
28 juil. 2009 à 13:12
j'ai eneleve la commande mysql_close(); et je n'ai laissé qu'une seule mais un message s'affiche disant que

"Warning: mysql_select_db() [function.mysql-select-db]: Access denied for user 'SYSTEM'@'localhost' (using password: NO) "
0
<!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']))
{
if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL)
{

mysql_connect("localhost", "root", "");
mysql_select_db("coursphp");

$message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));


mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message')");



}
}

?>

<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



$reponse = mysql_query("SELECT * FROM minichat WHILE id=1 ORDER BY ID DESC LIMIT 0,10");
$donnees = mysql_fetch_array($reponse);
echo $donnees['pseudo'];
echo $donnees['message'];

mysql_close();
?>




Il faut aussi que tu remplace "COURSPHP" par le nom de ta table
0
sanaa2200 Messages postés 16 Date d'inscription lundi 27 juillet 2009 Statut Membre Dernière intervention 25 août 2009
28 juil. 2009 à 13:24
faut il pas metre le nom de la base donnee mais pas celle de la table?
0
Reprenons :

mysql_connect("localhost", "root", "");
mysql_select_db("coursphp");

Quand tu testes en local t'as juste a changer "coursphp" par le nom de ta table (et non de ta base).

Quand t'es en réél tu remplaces "localhost" par le nom de ta bdd, root par ton nom d'utilisateur et tu mets ton mot de passe entre les guillemets qui sont vides. Et tu changes "coursphp" par le nom de ta table.
0
sanaa2200 Messages postés 16 Date d'inscription lundi 27 juillet 2009 Statut Membre Dernière intervention 25 août 2009
28 juil. 2009 à 13:33
ok
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
28 juil. 2009 à 14:02
mysql_select_db("coursphp");

Quand tu testes en local t'as juste a changer "coursphp" par le nom de ta table (et non de ta base).
.

NON

il faut bien mettre le nom de la base

mysql_select_db("nom_de_ta_base")

ça veut dire selectionner la database
0
sanaa2200 Messages postés 16 Date d'inscription lundi 27 juillet 2009 Statut Membre Dernière intervention 25 août 2009
29 juil. 2009 à 12:47
merci tt le monde j'ai trouvé les erreurs et je les corriger et mnt ca marche très bien
voila le script corrigé

<!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
$base=mysql_connect('localhost', 'root', '');
mysql_select_db('coursphp',$base);

// 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
$sql='INSERT INTO minichat VALUES("", "'.$pseudo.'", "'.$message.'")';
mysql_query($sql);

// On se déconnecte de MySQL

}
}


// 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_select_db("minichat");
$sql1='SELECT * FROM minichat ';
// On utilise la requête suivante pour récupérer les 10 derniers messages :
$base=mysql_connect('localhost', 'root', '');
mysql_select_db('coursphp',$base);
$reponse = mysql_query($sql1,$base);
$donnees = mysql_fetch_array($reponse);
echo $donnees['pseudo'];
echo $donnees['message'];
// On se déconnecte de MySQL
mysql_close($base);

// 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>
PS: le probleme c'etais ke je dois remplacer les guillemets avec des apostrophes
0