Erreur PHP Aidez-moi SVP

Bonjour, Voici un code php que j'ai codé, mais php me retourne une erreur (en gras) : <?php
$sql2="SELECT * FROM news";
$ok=$_GET['ok'];
$req2 = mysql_query($sql2) or die('Erreur SQL !<br />'.$sql2.'<br />'.mysql_error());
if ($ok == 0) {
echo "<div class=\"addcom\">";
echo "<form action=\"addcom.php\" method=\"post\">";
echo "<br />Pseudo : <input type=\"text\" name=\"pseudo\"/><br />";
echo "Mail : <input type=\"text\" name=\"mail\"/><br />";
echo "Mon site : <input type=\"text\" name=\"url\" value=\"[http://]\"/><br />";
echo "Comentaire : <br /><textarea name=\"contenu\" style=\"width:500px;height:150px\"></textarea><br />";
echo "<input type=\"submit\" value=\"Commenté\"/>";
echo "<input type=\"hidden\" name=\"news_id\" value=\"<?php echo $data[id]; ?>\">";
echo "</form>";
echo "</div>";
};

?>

La table news colonne ok = INT, Value 1

même si ok == 1 ou ok == 0 il m'affiche le formulaire

Merci, a bientôt

32 réponses

Résumé de la discussion

Le problème porte sur un script PHP qui lit le paramètre ok via $_GET pour afficher un formulaire, mais l’indice ok peut être indéfini et déclencher une notice 'Undefined index: ok'. Des réponses suggèrent d’éviter $_GET pour la logique d’affichage, ou d’utiliser isset($_GET['ok']) et une valeur par défaut afin que le formulaire ne s’affiche que lorsque ok vaut 1. D’autres conseils promeuvent même de supprimer la ligne qui affecte $ok et le test if, car l’affichage peut être géré différemment sans dépendre de ce paramètre. En attendant une solution, la discussion mentionne aussi de vérifier les usages de ok dans la base de données et d’éviter l’exécution d’instructions SQL potentielles lorsqu’un paramètre n’est pas fourni.

Bobot (l’IA à votre service)
  1. Ca doit dépendre du temps qu'il a, j'ai vu qu'il cherchait de l'aide car il avait un surplus de boulot donc c'est clair qu'en ce moment il va pas spécialement avoir le temps de te répondre. Mais moi l'année dernière il avait répondu pas mal de fois
    1. Tu as dit que tu as pris le code sur grafikart, demande au mec ce que t'aimerais rajouté au code, il répond toujours ;-)
      1. Je l'ai enlever, et ce script commence vraiment a me casser les bonbons !
        1. Pourquoi tu le mets alors si tu le sais qu'il ne fait pas ce que tu veux ?

          Donc ton $_get['ok'] tu peux l'enlever ;-)
          Si tu veux récupéré des infos en table, regarde des tuto sur la PDO ;-)
          1. Oui, ce c'est, mais je ne sait pas quel code il faut utiliser pour ça ^^'
            1. C'est pas avec $_GET que tu récupères des infos en base de données tu le sais ca ?
              1. En faite, dans ma base, il y a un table News avec id,titre,contenu,date,ok .

                Et je voudrais avoir un script pour que php detecte si la colonne ok dans la table news soit 0, et si c 0, alor ça ne l'affiche pas.
                1. Essaye :

                  <?php
                  $sql2="SELECT * FROM news";
                  $req2 = mysql_query($sql2) or die('Erreur SQL !<br />'.$sql2.'<br />'.mysql_error());
                  if (isset($_GET['ok'])) {
                  if($_GET['ok'] == 0){
                  echo "<div class=\"addcom\">";
                  echo "<form action=\"addcom.php\" method=\"post\">";
                  echo "<br />Pseudo : <input type=\"text\" name=\"pseudo\"/><br />";
                  echo "Mail : <input type=\"text\" name=\"mail\"/><br />";
                  echo "Mon site : <input type=\"text\" name=\"url\" value=\"[http://]\"/><br />";
                  echo "Comentaire : <br /><textarea name=\"contenu\" style=\"width:500px;height:150px\"></textarea><br />";
                  echo "<input type=\"submit\" value=\"Commenté\"/>";
                  echo "<input type=\"hidden\" name=\"news_id\" value=\"<?php echo $data[id]; ?>\">";
                  echo "</form>";
                  echo "</div>";
                  }
                  }

                  ?>
                  1. nan, sa me retourne http://127.0.0.1:8888/news/voir.php?id=%3C?php%20echo%206;%20?%3E
                    1. Bah regarde dans ton URL quand tu lance ta page.
                      Si derrière ya ?ok=1 ou non ;-)
                      1. Chui désoler, chui vraiment pas doué en php :s

                        Est ce que tu peut me le faire ou m'aider s'il te plais ?
                        1. Concrètement, $_GET['ok'] veut dire que dans ton url tu as ca : monsite.php?ok=1
                          Ca ne veut pas dire que ta base de données est ok
                          1. Je comprend pas trop, en réalité, moi j'ai juste utiliser le css et modifier l'espace administration ce qui na pas été si difficile que ça, mais après, pour afficher un formulaire si dans la base ok==1 sa je c'est pas du tout faire ... J'ap pris se "cms" sur grafikart.fr

                            Désoler :s
                            • 1
                            • 2