Aller au contenu

Bridou

Webmaster Régulier
  • Compteur de contenus

    61
  • Inscrit(e) le

  • Dernière visite

Tout ce qui a été posté par Bridou

  1. OK merci, j'ai un compte chez free, je vais tester d'abord là-bas, sinon je te contacterai Encore merci.
  2. Bon le mysql_error ne renvoie rien car la requête "est" bien éxécutée. Et concernant ce que je disais avant que ca marchait à la deuxième édition, et bien ce n'est pas toujours le cas... Y'a des fois ca fonctionne, et des fois ben non
  3. Ca marche : 1 ) Si effectivement je fait retour avec renvoie du POST 2 ) Mais égalementen refaisant la même manip, c'est à dire je choisis l'article à modifier, le formulaire s'affiche, je change les valeurs, et je valide, à la deuxième tentative, et bien ca marche :x Non, je vais essayer de voir si je peux le faire. Ai essayé ce matin, sans succès apparent... Je vais essayer, au cas où... Tout à fait, et après l'avoir trouvée, je me penderai Mon heberegeur, c'est JN-HEBERGEMENT
  4. J'ai essayé mais tu t'en douteras, même résultat Il n'y a pas d'erreur non plus, et c'est vraiment à la première édition que ca plante. Car si je fais ca : J'ajoute un article, j'édite => ca efface les champs modifiés Je re-édite le même article, aucun problème Et je peux encore re-édité tout fonctionne. C'est que la première fois, vraiment bizarre Ca pourrait venir de la structure de la table ? (Bien que ca soit la même qu'en Local qui fonctionne bien )
  5. Bon ben je sais plus quoi faire. J'ai repris les commandes de bases, à savoir : $connection = mysql_connect($host, $user, $pwd); mysql_select_db(SQL_BDD, $connection); Et bien je fais ca : $Req = "UPDATE cr_news SET auteur = '$auteur' where id = '$id'"; $res_ID = mysql_query($Req,$connection); echo "R : $Req , C : $connection , Res : $res_ID"; Le résultat est que l'echo affiche bien ce qu'il afaut : UPDATE cr_news SET auteur = 'Bridou' where id = '23' Que le retour de mysql_query, $res_ID, m'affiche 1. Et que l'auteur se retouve vide. Et si je fais précédent et OK, l'auteur est bien changé. Sérieusement je n'ai jamais vu ca et je suis paumé (les autres champs eux n'ont pas été modifié, seul auteur est devenu vide)
  6. Alors je vais tester ca pour voir, et je reviens donner les résultats En tout cas merci d'essayer de m'aider. -------- Alors j'ai testé et le problème ne vient pas de là, voici la dernière solution que j'ai essayé : $auteur = $_POST["auteur"]; $titre = $_POST["titre"]; $genre = $_POST["genre"]; echo "UPDATE cr_news SET auteur = '$auteur', titre = '$titre', genre = '$genre' where id = '$id'"; La requête est toujours valide mais le résultat et toujours mauvais
  7. Alors pour ta première solution, j'ai utilisé les \" car justement s'il y'a des apostrophes ils seront bien interpretés, alors que dans ton cas si le titre d'une news s'appelle par exemple : "C'est l'été" Et bien là il y aura erreur à cause des apostrophes, me trompes-je ? Le echo je le fait autant dans le fichier que dans la fonction qui éxecute la requête et tout est toujours bon. Je craque vraiment, en local ca marche impeccable, dans mon site je fais d'autre UPDATE selon la même syntaxe, par exemple pour donner des notes à des articles, mais il y'a juste dans l'administration où ca bloque. Est-ce que ca pourrait venir d'un problème de session ? Et effectivement pour le Refresh je ne comprend vraiment pas.
  8. Je ne comprend vraiment rien ! J'ai remarqué un truc vraiment bizarre, quand j'ajoute un article et qu'après je veux l'éditer j'ai donc le problème que mes champs se retrouvent vide. Mais si je clique sur le bouton précédent, j'ai le message qui me dit "Attention.. l'action va être refaite si vous cliquez sur OK parceque c'est un formulaire...". Et si je clique sur OK, il refait donc la requête et là les changements sont effectués. Et par la suite si je fais de nouvelles éditions, et bien ca fonctionne correctement... C'est à ni rien comprendre, mais ca ne résoud pas mon problème, je ne vais pas dire à ceux qui bossent avec moi : "Pour éditer vous cliquez sur Valider, puis vous revenez en arrière, vous cliquez sur OK et c'est bon"... Je ne comprend donc pas pourquoi la première édition plante et après avec le même code et les même manipulations cela fonctionne... De quoi cela peut il venir ?
  9. Je vais essayer car mon code est beaucoup découpé pour me simplifier un peu la vie (c'est du codage maison donc surement "dégeulasse" ) Donc dans mon fichier j'ai plusieurs fonctions, le principe est le suivant : Quand je clique sur Editer Si j'ai passé la relference de l'article j'edite Sinon j'affiche a liste des articles (Juste pour information, la classe de DB se trouve en fin de sujet mais pour comprendre de suite : $BDD_EDITER->Requete() : execute la requete passée en parametre $BDD_EDITER->ligne_suivante() : renvoie un Array ) function Editer($reference="") { Global $session , $rubrique; $BDD_EDITER = new DB; if(!empty($reference)) { $rub = array("FM Infos","Joueurs","Equipes","Entrainements","Tactiques","Graphismes","Downloads","Records","Communauté","Site","Forum"); $BDD_EDITER->Requete("select * from cr_news where id = '$reference'"); $r = $BDD_EDITER->ligne_suivante(); echo "<table width=\"620\" border=\"0\" cellspacing=\"10\"> <tr> <td align=middle> <form method=\"post\" action=\"*****.php?session=".$session."&rubrique=$rubrique&action=editerBDD&reference=".$reference."\"> Auteur :</td><td> <input type=\"text\" name=\"auteur\" value=\"$r[auteur]\"> </td></tr><tr><td align=middle> Rubrique associée à cette info :</td><td> <select name=\"genre\">"; for($i=0;$i<11;$i++) { if($rub[$i]==$r[genre]) $select = "selected"; else $select = ""; echo"<option value=\"$rub[$i]\" $select >".ucfirst($rub[$i])."</option>"; } echo" </select> </td></tr><tr><td align=middle> Titre de l'info :</td><td> <input type=\"text\" name=\"titre\" size=50 value=\"$r[titre]\"> </td></tr><tr><td align=middle colspan=2> Contenu de l'info : <br> <textarea name=\"contenu\" cols=\"90\" rows=\"30\">$contenu</textarea> <br> <input type=\"submit\" name=\"Submit\" value=\"Valider\"> </form> </td> </tr> </table>"; } else { Liste("editer"); } } Donc si j'ai passé l'identifiant de l'article j'obtiens par exemple ceci : IMAGE DE L'ADMIN Puis donc si je clique sur Valider, j'arrive dans la fonction EditerBDD : function EditerBDD($id) { $BDD_EDITER = new DB; if (isset($id)) { if ($BDD_EDITER->Requete("UPDATE cr_news SET auteur = \"$_POST[auteur]\", titre = \"$_POST[titre]\", genre = \"$_POST[genre]\" where id = '$id'")) { echo "Les modifications dans la base de données ont été effectuées."; } else { echo "Une erreur est intervenue"; } } else { echo "L'id n'est pas bon : $id"; } }[/code] Et donc, étant en ligne, si je fait : [code] echo "UPDATE cr_news SET auteur = \"$_POST[auteur]\", titre = \"$_POST[titre]\", genre = \"$_POST[genre]\" where id = '$id'"; J'obtiens CET ECRAN Et j'ai bien le message : "Les modifications dans la base de données ont été effectuées." Voici la classe contenant la gestion de la BDD au cas où : class DB { var $Host = SQL_HOST; // Hostname of our MySQL server var $Database = SQL_BDD; // Logical database name on that server var $User = SQL_USER; // Database user var $Password = SQL_PASSWORD;// Database user's password var $Link_ID = 0; // Result of mysql_connect() var $Query_ID = 0; // Result of most recent mysql_query() var $Resultat = array(); // Current mysql_fetch_array()-result var $ResultatF; var $Row; // Current row number var $Errno = 0; // Error state of query var $Error = ""; # # Create a link id to the MySQL database # Allow to call $var = new DB($otherhost,$otherDB,$otheruser,$otherpass); # where $other* are connections vars different from # $this->Host, etc # function DB($altHost = "",$altDB = "",$altUser = "",$altPassword = "") { if ($altHost == "") $altHost = $this->Host; if ($altDB == "") $altDB = $this->Database; if ($altUser == "") $altUser = $this->User; if ($altPassword == "") $altPassword = $this->Password; $this->Host = $altHost; $this->Database = $altDB; $this->User = $altUser; $this->Password = $altPassword; } # # Stop the execution of the script # in case of error # $msg : the message that'll be printed # function halt($msg) { echo("<FONT COLOR=\"#FFFFFF\"><B>Database error:</B> $msg<BR>\n"); echo("<B>MySQL error</B>: $this->Errno ($this->Error)<BR> <BR></FONT><H1>Le site est en travaux... Merci de repasser plus tard</H1>\n"); die("Session halted."); } # # Connect to the MySQL server # function connect() { global $DBType; if($this->Link_ID == 0) { $this->Link_ID = mysql_connect($this->Host, $this->User, $this->Password); if (!$this->Link_ID) { $this->halt("Link_ID == false, connect failed"); } $SelectResult = mysql_select_db($this->Database, $this->Link_ID); if(!$SelectResult) { $this->Errno = mysql_errno($this->Link_ID); $this->Error = mysql_error($this->Link_ID); $this->halt("cannot select database <I>".$this->Database."</I>"); } } } # # Send a query to the MySQL server # $Query_String = the query # function requete($Req) { $this->connect(); $this->Query_ID = mysql_query($Req,$this->Link_ID); $this->Row = 0; $this->Errno = mysql_errno(); $this->Error = mysql_error(); if (!$this->Query_ID) { $this->halt("Invalid SQL: ".$Req); } return $this->Query_ID; } # # return the next record of a MySQL query # in an array # function ligne_suivante() { $this->Resultat = mysql_fetch_array($this->Query_ID); $this->Row += 1; $this->Errno = mysql_errno(); $this->Error = mysql_error(); $stat = is_array($this->Resultat); if (!$stat) { mysql_free_result($this->Query_ID); $this->Query_ID = 0; } return $this->Resultat; } # # return the next record of a MySQL query # in an array # function ligne_suivanteF() { $this->ResultatF = mysql_fetch_object($this->Query_ID); $this->Row += 1; $this->Errno = mysql_errno(); $this->Error = mysql_error(); $stat = is_array($this->ResultatF); if (!$stat) { mysql_free_result($this->Query_ID); $this->Query_ID = 0; } return $this->ResultatF; } # # Return the number of rows affected by a query # (except insert and delete query) # function nbre_resultats() { return mysql_num_rows($this->Query_ID); } # # Return the number of affected rows # by a UPDATE, INSERT or DELETE query # function nbre_lignes_modifiees() { return mysql_affected_rows($this->Link_ID); } # # Return the id of the last inserted element # function dernier_id() { return mysql_insert_id($this->Link_ID); } # # Optimize a table # $tbl_name : the name of the table # function optimize($tbl_name) { $this->connect(); $this->Query_ID = _AT_mysql_query("OPTIMIZE TABLE $tbl_name",$this->Link_ID); } # # Free the memory used by a result # function clean_results() { if($this->Query_ID != 0) mysql_freeresult($this->Query_ID); } # # Close the link to the MySQL database # function close() { if($this->Link_ID != 0) mysql_close($this->Link_ID); } function changer_BDD() { mysql_select_db($this->Database); } } ?> En ésperant que cela vous aide, encore merci.
  10. Alors, dans l'ordre : 1) C'est le résultat obtenu aussi bien en local ...qu'en ligne, malheureusement. 2 ) Pour les versions de PHP c'est ce que j'ai pensé peut être, ou un problème de configuration, j'ai écris à mon hébergeur et j'attend sa réponse. 3) En cas j'essairai la solution $HTTP_POST_VARS, sait on jamais, même si avec $_POST, la requête est correctement affichée mais mal éxécutée. Merci pour ton aide.
  11. Bridou

    Problème MySQL avec UPDATE

    Bonsoir à toutes et à tous, Ceci est mon premier message et c'est pour demander de l'aide Mais tout d'abord je tiens à féliciter tous les participants de ce site/forum car on y trouve vraiment des aides et conseils très précieux pour nous les webmasters Donc je me lance en ésperant que quelqu'un aura une petite idée de solution. J'ai donc un site (http://www.francemanager.net) qui possède une administration que j'ai réalisé afin d'ajouter/editer/supprimer divers articles, une administration basique. Voilà mon problème, en local tout se passe sans aucun problème, je peux ajouter, modifier et supprimer à mon gré, mes requêtes SQL sont toujours bonnes. Mais j'ai mis ma nouvelle console d'administration en ligne sur mon site aujourd'hui et à chaque fois que je tente d'éditer un article, la requête est éxécutée mais tout les champs sensés être modifiés se retrouvent vide. (Les requêtes d'ajout et de suppression focntionnent sans problème par contre) Je n'arrive pas à comprendre pourquoi quand j'utilise les requêtes de ce style : UPDATE cr_news SET auteur = \"$_POST[auteur]\", titre = \"$_POST[titre]\", genre = \"$_POST[genre]\" where id = '$id'"; Et que à l'affichage de cette requête j'ai tout qui est bon, ex : UPDATE cr_news SET auteur = "Bridou", titre = "Toujours plus grand", genre = "Site" where id = '29' Le résultat est que je perd toutes les anciennes informations et que les champs de ma table se retrouvent vide. Alors que si je recopie la requête telle quelle dans PHP MyAdmin, et bien elle est valable et fonctionne bien. Je sais que ca peut paraître bizarre et pas évident à comprendre mais je suis bien embêter car dès que je veux corriger les fautes d'un article, par exemple, et bien tout s'efface sans raison valable... Que puis-je dire d'autre qui puisse vous aider : Pour tout ce qui est base de données j'utilise un classe que j'ai trouvé sur internet qui gère la connection, les requêtes etc.. et qui en local fonctionne parfaitement. Je m'en remet à vos connaissance en ésperant que vous ayez quelques idées d'où pourrait provenir le problème car je ne vois vraiment pas quoi changer, en local ca fonctionne, la requête comporte bien tout les bons champs, je l'affiche avant de l'éxécuté et tout est correct. Et paf le bon enregsitrement est modifié mais toutes les donnés sont "vides". Merci d'avance, et si vous avez besoin de plus amples informations, n'hésitez pas P.S : Voici la structure de ma table, au cas où... CREATE TABLE `cr_news` ( `id` int(11) NOT NULL auto_increment, `ladate` datetime NOT NULL default '0000-00-00 00:00:00', `auteur` varchar(30) default NULL, `genre` varchar(255) NOT NULL default '', `titre` varchar(100) NOT NULL default '', `corps` longtext NOT NULL, PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=33; Bridou
×
×
  • Créer...