Forum
ajpgerm
Messages postés
5
Statut
Membre
-
la crap Messages postés 49 Date d'inscription Statut Membre Dernière intervention -
la crap Messages postés 49 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
alors voici ma page index pour mon forum:
<html>
<head>
<title>Index de notre forum</title>
</head>
<body>
<!-- on place un lien permettant d'accéder à la page contenant le formulaire d'insertion
d'un nouveau sujet -->
<a href="./insert_sujet.php">Insérer un sujet</a>
<br /><br />
<?php
require('connect_base.php');
// préparation de la requete
$sql = "SELECT id,auteur,titre,date_derniere_reponse FROM forum_sujets ORDER BY
date_derniere_reponse DESC";
// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne
//se passe pas bien (or die)
$req = @mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// on compte le nombre de sujets du forum
$nb_sujets = mysql_num_rows ($req);
if ($nb_sujets == 0) {
echo 'Aucun sujet';
}
else {
?>
<table width="500" border="1"><tr>
<td>
Auteur</td>
<td>
Titre du sujet
</td><td>
Date dernière réponse
</td></tr>
<?php
// on va scanner tous les tuples un par un
while ($data = mysql_fetch_array($req)) {
// on décompose la date
sscanf($data['date_derniere_reponse'], "%4s-%2s-%2s %2s:%2s:%2s", $annee, $mois,
$jour, $heure, $minute, $seconde);
// on affiche les résultats
echo '<tr>';
echo '<td>';
// on affiche le nom de l'auteur de sujet
echo htmlentities(trim($data['auteur']));
echo '</td><td>';
// on affiche le titre du sujet, et sur ce sujet, on insère le lien qui nous
//permettra de lire les différentes réponses de ce sujet
echo '<a href="./lire_sujet.php?id_sujet_a_lire=' , $data['id'] , '">' , htmlentities
(trim($data['titre'])) , '</a>';
echo '</td><td>';
// on affiche la date de la dernière réponse de ce sujet
echo $jour , '-' , $mois , '-' , $annee , ' ' , $heure , ':' , $minute;
}
?>
</td></tr></table>
<?php
}
// on libère l'espace mémoire alloué pour cette requête
mysql_free_result ($req);
// on ferme la connexion à la base de données.
mysql_close ();
?>
</body>
</html>
*******************************************************************************************
le probleme est que quand je le teste l'erreur suivante s'affiche:
Erreur SQL !
SELECT id,auteur,titre,date_derniere_reponse FROM forum_sujets ORDER BY date_derniere_reponse DESC
Accès refusé pour l'utilisateur: 'ODBC'@'@localhost' (mot de passe: NON)
*******************************************************************************************
j'implore votre pardon, voyez de quoi il s'agit(ou se trouve mon erreur)
merci!!!!!
alors voici ma page index pour mon forum:
<html>
<head>
<title>Index de notre forum</title>
</head>
<body>
<!-- on place un lien permettant d'accéder à la page contenant le formulaire d'insertion
d'un nouveau sujet -->
<a href="./insert_sujet.php">Insérer un sujet</a>
<br /><br />
<?php
require('connect_base.php');
// préparation de la requete
$sql = "SELECT id,auteur,titre,date_derniere_reponse FROM forum_sujets ORDER BY
date_derniere_reponse DESC";
// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne
//se passe pas bien (or die)
$req = @mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// on compte le nombre de sujets du forum
$nb_sujets = mysql_num_rows ($req);
if ($nb_sujets == 0) {
echo 'Aucun sujet';
}
else {
?>
<table width="500" border="1"><tr>
<td>
Auteur</td>
<td>
Titre du sujet
</td><td>
Date dernière réponse
</td></tr>
<?php
// on va scanner tous les tuples un par un
while ($data = mysql_fetch_array($req)) {
// on décompose la date
sscanf($data['date_derniere_reponse'], "%4s-%2s-%2s %2s:%2s:%2s", $annee, $mois,
$jour, $heure, $minute, $seconde);
// on affiche les résultats
echo '<tr>';
echo '<td>';
// on affiche le nom de l'auteur de sujet
echo htmlentities(trim($data['auteur']));
echo '</td><td>';
// on affiche le titre du sujet, et sur ce sujet, on insère le lien qui nous
//permettra de lire les différentes réponses de ce sujet
echo '<a href="./lire_sujet.php?id_sujet_a_lire=' , $data['id'] , '">' , htmlentities
(trim($data['titre'])) , '</a>';
echo '</td><td>';
// on affiche la date de la dernière réponse de ce sujet
echo $jour , '-' , $mois , '-' , $annee , ' ' , $heure , ':' , $minute;
}
?>
</td></tr></table>
<?php
}
// on libère l'espace mémoire alloué pour cette requête
mysql_free_result ($req);
// on ferme la connexion à la base de données.
mysql_close ();
?>
</body>
</html>
*******************************************************************************************
le probleme est que quand je le teste l'erreur suivante s'affiche:
Erreur SQL !
SELECT id,auteur,titre,date_derniere_reponse FROM forum_sujets ORDER BY date_derniere_reponse DESC
Accès refusé pour l'utilisateur: 'ODBC'@'@localhost' (mot de passe: NON)
*******************************************************************************************
j'implore votre pardon, voyez de quoi il s'agit(ou se trouve mon erreur)
merci!!!!!
8 réponses
Ton erreur viens de ton fichier connect_base.php
Il doit resemble à cela (enfin en principe)
<?php
$host="localhost_ou_adresse_du_serveur_mysql";
$user="nom_utilisateur_base_de_donnees";
$base="nom_de_la_base_de_donnees";
$passe="mot_de_passe_de_l_utilisateur";
@mysql_connect("$host","$user","$passe");
$select_base=@mysql_selectdb("$base");
if(!$select_base){echo"<b>Connexion a la base Impossible</b><br>";}
?>
Il doit resemble à cela (enfin en principe)
<?php
$host="localhost_ou_adresse_du_serveur_mysql";
$user="nom_utilisateur_base_de_donnees";
$base="nom_de_la_base_de_donnees";
$passe="mot_de_passe_de_l_utilisateur";
@mysql_connect("$host","$user","$passe");
$select_base=@mysql_selectdb("$base");
if(!$select_base){echo"<b>Connexion a la base Impossible</b><br>";}
?>
au fait j'ai un gros probleme avec mon script de recherche,le voici:
<?
// NOMBRE DE RESULTATS PAR PAGE
$limit=2;
// NOM DE CE SCRIPT
$script_name="recherche.php3";
require('connect_base.php');
// RECHERCHE AVEC TOUS LES MOTS : METTEZ "and"
// RECHERCHER LES PAGES QUI CONTIENNENT AU MOINS UN MOT : METTEZ "or"
$et_ou="or";
/******************************************************************
* PROGRAMME PRINCIPAL
******************************************************************/
$mot=@strtolower($mot);
$mots=split(" ",$mot);
$nombre_mots=count($mots);
$z=1;
$texte="Pages contenant <b>"$mots[0]"</b>";
$phrase="'%$mots[0]%'";
while($z<$nombre_mots)
{
$phrase.=" ".$et_ou." mots like '%$mots[$z]%'";
$texte.=" ";
if($et_ou=="and"){$texte.="et";}else{$texte.="ou";}
$texte.=" <b>"$mots[$z]"</b>";
$z++;
}
if($debut==""){$debut=0;}
$debut=$page*$limit;
// NOMBRE TOTAL D'ENREGISTREMENTS REPONDANT A LA REQUETE
$requete=@mysql_db_query("$sql_bdd","SELECT count(*) FROM recherche WHERE mots like $phrase order by id");
$nb_total=@mysql_result($requete,0,"count(*)");
$requete=@mysql_db_query("$sql_bdd","SELECT * FROM recherche WHERE mots like $phrase limit $debut,$limit");
$num=@mysql_num_rows($requete);
// DEFINITION DU MESSAGE A AFFICHER
if ($num==0) {echo "Désolé, aucune page de ce site ne contient <b>$mot</b>...";}
else if ($mot=="") {echo "Veuillez saisir un ou plusieurs mot-clés avant de cliquer sur 'OK' !";}
else if (strlen($mot)<2) {echo "Veuillez saisir au moins 2 caractères.";}
// AFFICHAGE DES RESULTATS
else {
echo "<b>$nb_total</b> réponse";
if ($nb_total>1) {echo "s";}
echo "<br>$texte";
$i=0;
while($i<$num)
{
$url=mysql_result($requete,$i,"url");
$description=mysql_result($requete,$i,"description");
$titre=mysql_result($requete,$i,"titre");
echo "<br><br><a href=\"$url\"><b>$titre</b></a><br>$description<br><font size=1>$url</font>\n";
$i++;
}
echo "<br><br>";
// AFFICHAGE DU LIEN PRECEDENT SI BESOIN EST
// (LA PREMIERE PAGES EST 0)
if ($page>0)
{
$precedent=$page-1;
print "<a href=\"$script_name?page=$precedent&mot=$mot\">PRECEDENT</a> \n";
}
// AFFICHAGE DES NUMEROS DE PAGE
$i=0;$j=1;
if($nb_total>$limit)
{
while($i<($nb_total/$limit))
{
if($i!=$page){echo "(<a href=\"$script_name?page=$i&mot=$mot\">$j</a>) ";}
else {echo "<b>($j)</b> ";}
$i++;$j++;
}
}
// AFFICHAGE DU LIEN SUIVANT SI BESOIN EST
if($debut+$limit<$nb_total)
{
$suivant=$page+1;
echo "<a href=\"$script_name?page=$suivant&mot=$mot\">SUIVANT</a>";
}
}
// DECONNEXION DE LA BASE DE DONNEE
@mysql_close();
?>
*******************************************************************************************
losque je le teste voici l'erreur qui s'affiche:
Notice: Undefined variable: debut in c:\program files\easyphp1-8\www\site1\recherche.php3 on line 33
Notice: Undefined variable: page in c:\program files\easyphp1-8\www\site1\recherche.php3 on line 34
Désolé, aucune page de ce site ne contient ...
*******************************************************************************************
si vous pouvez m'aider je serai bcp heureux
merci
<?
// NOMBRE DE RESULTATS PAR PAGE
$limit=2;
// NOM DE CE SCRIPT
$script_name="recherche.php3";
require('connect_base.php');
// RECHERCHE AVEC TOUS LES MOTS : METTEZ "and"
// RECHERCHER LES PAGES QUI CONTIENNENT AU MOINS UN MOT : METTEZ "or"
$et_ou="or";
/******************************************************************
* PROGRAMME PRINCIPAL
******************************************************************/
$mot=@strtolower($mot);
$mots=split(" ",$mot);
$nombre_mots=count($mots);
$z=1;
$texte="Pages contenant <b>"$mots[0]"</b>";
$phrase="'%$mots[0]%'";
while($z<$nombre_mots)
{
$phrase.=" ".$et_ou." mots like '%$mots[$z]%'";
$texte.=" ";
if($et_ou=="and"){$texte.="et";}else{$texte.="ou";}
$texte.=" <b>"$mots[$z]"</b>";
$z++;
}
if($debut==""){$debut=0;}
$debut=$page*$limit;
// NOMBRE TOTAL D'ENREGISTREMENTS REPONDANT A LA REQUETE
$requete=@mysql_db_query("$sql_bdd","SELECT count(*) FROM recherche WHERE mots like $phrase order by id");
$nb_total=@mysql_result($requete,0,"count(*)");
$requete=@mysql_db_query("$sql_bdd","SELECT * FROM recherche WHERE mots like $phrase limit $debut,$limit");
$num=@mysql_num_rows($requete);
// DEFINITION DU MESSAGE A AFFICHER
if ($num==0) {echo "Désolé, aucune page de ce site ne contient <b>$mot</b>...";}
else if ($mot=="") {echo "Veuillez saisir un ou plusieurs mot-clés avant de cliquer sur 'OK' !";}
else if (strlen($mot)<2) {echo "Veuillez saisir au moins 2 caractères.";}
// AFFICHAGE DES RESULTATS
else {
echo "<b>$nb_total</b> réponse";
if ($nb_total>1) {echo "s";}
echo "<br>$texte";
$i=0;
while($i<$num)
{
$url=mysql_result($requete,$i,"url");
$description=mysql_result($requete,$i,"description");
$titre=mysql_result($requete,$i,"titre");
echo "<br><br><a href=\"$url\"><b>$titre</b></a><br>$description<br><font size=1>$url</font>\n";
$i++;
}
echo "<br><br>";
// AFFICHAGE DU LIEN PRECEDENT SI BESOIN EST
// (LA PREMIERE PAGES EST 0)
if ($page>0)
{
$precedent=$page-1;
print "<a href=\"$script_name?page=$precedent&mot=$mot\">PRECEDENT</a> \n";
}
// AFFICHAGE DES NUMEROS DE PAGE
$i=0;$j=1;
if($nb_total>$limit)
{
while($i<($nb_total/$limit))
{
if($i!=$page){echo "(<a href=\"$script_name?page=$i&mot=$mot\">$j</a>) ";}
else {echo "<b>($j)</b> ";}
$i++;$j++;
}
}
// AFFICHAGE DU LIEN SUIVANT SI BESOIN EST
if($debut+$limit<$nb_total)
{
$suivant=$page+1;
echo "<a href=\"$script_name?page=$suivant&mot=$mot\">SUIVANT</a>";
}
}
// DECONNEXION DE LA BASE DE DONNEE
@mysql_close();
?>
*******************************************************************************************
losque je le teste voici l'erreur qui s'affiche:
Notice: Undefined variable: debut in c:\program files\easyphp1-8\www\site1\recherche.php3 on line 33
Notice: Undefined variable: page in c:\program files\easyphp1-8\www\site1\recherche.php3 on line 34
Désolé, aucune page de ce site ne contient ...
*******************************************************************************************
si vous pouvez m'aider je serai bcp heureux
merci
2 possibilitées:
1- tu modifies les parametre de ton php.ini pour ne pas afficher les message d'erreur non critique (probleme jrs la mais non visible)
2- tu declares les variables (ligne 33 et 34) que ton code à besoin, générallement ce genre de message d'erreur ce trouve sur un teste d'une variable non définit comme par exemple:
if($debut=="")...
$debut n'existe pas, donc pas evident de tester quelque chose qui n'existe pas. De plus "non defini" c'est different de "Null" et de "" dans l'absolu tout comme "Null" est different de "".
1- tu modifies les parametre de ton php.ini pour ne pas afficher les message d'erreur non critique (probleme jrs la mais non visible)
2- tu declares les variables (ligne 33 et 34) que ton code à besoin, générallement ce genre de message d'erreur ce trouve sur un teste d'une variable non définit comme par exemple:
if($debut=="")...
$debut n'existe pas, donc pas evident de tester quelque chose qui n'existe pas. De plus "non defini" c'est different de "Null" et de "" dans l'absolu tout comme "Null" est different de "".
sui j'ai bien compris tu test début, si il est vide alors ... Vide etant, je suppose sa valeur par defaut, je mettrais au debut du script
$debut="";
Ainsi ta variable est initialisé avec une valeur par defaut
$debut="";
Ainsi ta variable est initialisé avec une valeur par defaut
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
utilise un logiciel, ou créer toi un bout de code pour suivre pas à pas le contenu de tes variables
LE script le semble correct...
Un programme c'est
1/3 etude
1/3 codage
1/3 de debuggage
LE script le semble correct...
Un programme c'est
1/3 etude
1/3 codage
1/3 de debuggage
si tu comprend rein a tout cela peut etre parce que tu n'a pas encore le niveau.
Je te conseil de commencer avec quelque chose de moins ambitieux, de faire quelque chose de plus simple est de monter le niveau de difficulté au fur et a mesure.
Achete des bouquin sur le PHP et sur Mysql
Achete toi un IDE PHP qui fait du pas a pas comme par exemple PHPED.
Achete toi de la vitamine et du café
Achete toi des allumette pour donner l'impression d'etre eveiller le lendemain matin au bureu
Et Banzaiiiii
Seconde solution achete ou trouve des soft qui font ce que tu veux, il y en a forcement un !
Je te conseil de commencer avec quelque chose de moins ambitieux, de faire quelque chose de plus simple est de monter le niveau de difficulté au fur et a mesure.
Achete des bouquin sur le PHP et sur Mysql
Achete toi un IDE PHP qui fait du pas a pas comme par exemple PHPED.
Achete toi de la vitamine et du café
Achete toi des allumette pour donner l'impression d'etre eveiller le lendemain matin au bureu
Et Banzaiiiii
Seconde solution achete ou trouve des soft qui font ce que tu veux, il y en a forcement un !
merci pour tes conseils mais ca ne m'aide pas et ce n'est pas encourangeant.oui c'est vrai je suis un debut
c'est pour cela que je solicite votre aide pour grimper l'echelon
c'est pour cela que je solicite votre aide pour grimper l'echelon
bien au contraire c'est de loin la meilleur aide que l'ion puisse te donner !
Si tu attend apres les autre pour t'aider tu va pas avancer vite.
Perso j'ai casser la tirelire, acheter PHPED, achter plusieur bouquin (css,javascript, php4 et 5, html, dhtml, mysql) j'ai potasser un certain nombre de cours gratuit sur le web, je me suis etablie une biobliotheque de site de syntaxe. Monter un serveur web, pris un hebergement. Et j'ai commencer par faire un simple logiciel de gestion d'incident SAV (il y a 2 ans) en, bosant de 22h à 1h du mat tout les jours, pas facile pour Madame !
J'ai utiliser des code sources commenté pour refaire mon propre programme. il n'y a pas une ligne de code que je puisse expliquer !
C'est enormement de boulot, faut pas oublier que c'est un metuier à part entiere !
Donc même si ma reponse ne te plait pas, sache que c'est la solution la plus efficace, tu va galere mais au moins ce que tu va apprendre te sera acquit !
Un truc que j'ai vu rapidement:
$sql_bdd","SELECT * FROM recherche WHERE mots like $phrase limit $debut,$limit"); moi je l'auaris ecrit
$sql_bdd","SELECT * FROM recherche WHERE mots like '$phrase' limit $debut,$limit");
$phrase' contient du string tu doit imperativement mettre les quotes ' '
Il faut que tu fasse print, ou echo du contenue de tes variable pour t'assurer qu'elle est bien les valeur voulue. Un echo de $sql_bdd te permettrais de faire un copier coller dans phpmyadmin pour t'assurer qu'elle fonctionne bien....
Je ne sais pas si ton probleme viens de la, mais pour mopi cela me parait pas correct
Si tu attend apres les autre pour t'aider tu va pas avancer vite.
Perso j'ai casser la tirelire, acheter PHPED, achter plusieur bouquin (css,javascript, php4 et 5, html, dhtml, mysql) j'ai potasser un certain nombre de cours gratuit sur le web, je me suis etablie une biobliotheque de site de syntaxe. Monter un serveur web, pris un hebergement. Et j'ai commencer par faire un simple logiciel de gestion d'incident SAV (il y a 2 ans) en, bosant de 22h à 1h du mat tout les jours, pas facile pour Madame !
J'ai utiliser des code sources commenté pour refaire mon propre programme. il n'y a pas une ligne de code que je puisse expliquer !
C'est enormement de boulot, faut pas oublier que c'est un metuier à part entiere !
Donc même si ma reponse ne te plait pas, sache que c'est la solution la plus efficace, tu va galere mais au moins ce que tu va apprendre te sera acquit !
Un truc que j'ai vu rapidement:
$sql_bdd","SELECT * FROM recherche WHERE mots like $phrase limit $debut,$limit"); moi je l'auaris ecrit
$sql_bdd","SELECT * FROM recherche WHERE mots like '$phrase' limit $debut,$limit");
$phrase' contient du string tu doit imperativement mettre les quotes ' '
Il faut que tu fasse print, ou echo du contenue de tes variable pour t'assurer qu'elle est bien les valeur voulue. Un echo de $sql_bdd te permettrais de faire un copier coller dans phpmyadmin pour t'assurer qu'elle fonctionne bien....
Je ne sais pas si ton probleme viens de la, mais pour mopi cela me parait pas correct