Forum

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!!!!!
Configuration: Windows XP
Firefox 3.0.1

8 réponses

  1. 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
    1. 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
      1. 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 !
        1. 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

          1. je ne comprends tien de tout ca.seulement si tu pouvais analyser un peu mon script et trouver la faille je serai tres ravi
        2. 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
          1. merci bien l'erreur ne s'affiche plus mais apres avoir insere des donnees ds ma table RECHERCHE et apres execution
            voici ce qui s'affiche:

            Désolé, aucune page de ce site ne contient ...
            et pourtant la page existe et est declaree ds la bdd
        3. 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. pouvez vous me donner un exemple selon mon script?
        4. Alors ?
          1. bonjour et merci pour ton coup de main mon erreur etait effectivement situee au niveau de la bdd
          2. 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
        5. 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>";}
          ?>