enregistrement de ma requète sql dans ma table new

mibs
Invité n'ayant pas de compte PHPfrance

17 déc. 2005, 09:35

Voilà, en fait je fait un simple post pour ajouter une new, et j'arrive pas à enregistrer ce que je met dans mon textarea dans ma table, pourtant les nom de table et paramètre de connections sont corrects je doit avoir fait une erreur quelque part..

si on pouvait m'éclairer un peu...

<div id="addnews"> 
            
      
 <?


          // date du moment du postage
          $jour = date ("d");
          $mois = date ("m");
          $an = date ("Y");
         $datenow = "$jour:$mois:$an";
          
          // heure du moment du postage
          $heure = date ("H");
          $heure = $heure ;
          $minute = date ("i");
          $minute = $minute;
         // $seconde = date ("s"); = option des secondes off
          $heurenow = "$heure:$minute";
 ?>
 
 
 





<center>

  
  
 
  </head>                     
  <body>
    <form>
      <b>TITRE DE LA NEW</b> <INPUT NAME="titelnew"><! zone de saisise pour le titre de la new><br>
      <textarea rows="10" cols="40" name="posting" wrap="hard">


 
 





       *Veuillez saisir votre message ! ICI*


 




      </textarea>
      <br>
Signature du Newser <INPUT NAME="titelsign"><! zone de saisise pour la signature>
      <input type="submit" value=Valider la new">
    </form>
  </body>
</html>
</center> 


<?
$imagepost="<img src=\"new/images/barre.gif\">" // image qui revient en dessous et dessus du post


?>
<?
$titrepost="<DIV ALIGN=center><b> $titelnew </DIV></b>"// titre post
?>

<?
$endpost="<div style=\"text-align: right; padding-right: 1em; font-weight: bold\"> $titelsign</div>" // signature post
?>  
 




<?

if ($posting !="") // si $posting est différent de "" 
{ 

$sql["serveur"]='localhost';
$sql["login"]='xxx';  // login
$sql["pass"]='xxx'; // password 
$sql["base"]='xxx'; // le nom de ma base de donné

$sql["connect"]=mysql_connect($sql["serveur"],$sql["login"],$sql["pass"])or die ("impossible de se connecter, réessayé plus tard");
$sql["select_base"]=mysql_select_db($sql["base"],$sql["connect"])or die ("erreur de connexion base");


$sql["connect"];
$sql["select_base"];

$numpost=1;
// après le insert into voilà le nom de ma table 
mysql_query("INSERT into new (post) VALUES ('$imagepost <DIV ALIGN=RIGHT> Posté le <b>$datenow</b> à <b>$heurenow</b></DIV><br>$titrepost$posting$endpost$imagepost')");
mysql_query("INSERT into new (numpost) VALUES ('$numpost')");
 
mysql_close();

?>




<html>
<head>
<META HTTP-EQUIV="Refresh"
CONTENT="0; URL=/principale.php"> <br><center>// Veuillez patientez "Création de la new en cours" \\</center>
</head>
</html>      

</div id="addnews">
<?
} 
?>    
:wink:

Mammouth du PHP | 19672 Messages

17 déc. 2005, 10:02

Ta requête d'insertion comporte une concaténation de variables incorrecte:
mysql_query("INSERT into new (post) VALUES ('". $imagepost ." <DIV ALIGN=RIGHT> Posté le <b>". $datenow ."</b> à <b>". $heurenow ."</b></DIV><br>". $titrepost . $posting . $endpost . $imagepost ."')");
Je te signale en outre que le code HTML que tu as mis dans ce code est des plus fantaisistes, à revoir sérieusement.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

mibs
Invité n'ayant pas de compte PHPfrance

18 déc. 2005, 21:36

Me revoilà merci de ton explication, j'ai modifié autrement
<div id="addnews">
            
      
 <?

          // date du moment du postage
          $jour = date ("d");
          $mois = date ("m");
          $an = date ("Y");
         $datenow = "$jour:$mois:$an";
          
          // heure du moment du postage
          $heure = date ("H");
          $heure = $heure ;
          $minute = date ("i");
          $minute = $minute;
         // $seconde = date ("s"); = option des secondes off
          $heurenow = "$heure:$minute";
 ?>
 
 
 





<center>

  
  
 
  </head>                     
  <body>
    <form onsubmit="return verif(this)">
      <b>TITRE DE LA NEW</b> <INPUT NAME="titelnew"><! zone de saisise pour le titre de la new>
      <textarea rows="10" cols="40" name="posting" wrap="hard">


 
 





       *Veuillez saisir votre message ! ICI*


 




      </textarea>
      </center>
      <a href="../test.php">Go page test</a>
      <br>
Signature du Newser <INPUT NAME="titelsign"><! zone de saisise pour la signature>
      <input type="submit" value=Valider la new">
    </form>
  </body>
</html>
</center> 


<?



{ 

$sql["serveur"]='localhost'; 
$sql["login"]='kkkkk';  // login
$sql["pass"]='kkkkk'; // password 
$sql["base"]='kkkkk'; // le nom de ma base de donné

$sql["connect"]=mysql_connect($sql["serveur"],$sql["login"],$sql["pass"])or die ("impossible de se connecter, réessayé plus tard");
$sql["select_base"]=mysql_select_db($sql["base"],$sql["connect"])or die ("erreur de connexion base");


$sql["connect"];
$sql["select_base"];


mysql_query("INSERT into new (post) VALUES ('lalalalaala')");

mysql_close();

?>
si je met
mysql_query("INSERT into new (post) VALUES ('lalalalaala')");
ça m'ajoute bien lalalalal dans ma table sql quand je vais regarder c'est bon.

mais si je met
mysql_query("INSERT into new (post) VALUES ('$posting')");
pour reprendre le contenu de mon texte area , et bien dans la table cela à fait un enregistrement, mais il n'y a rien... comme si il avait juste le autoincrément il a fonctionné mais ma variable n'a pas été récupérée ?
ça vous dit quelque chose ?

merci de l'aide :wink:

ViPHP
ViPHP | 649 Messages

18 déc. 2005, 22:24

Où est-ce que tu définis la variable $posting?

Ton code, je parle du html, est un peu construit, voire même fantaisiste pour reprendre Cyrano. Dans le sens où le html, c'est pas comme le php, tu l'ouvres une fois au début, et tu le refermes à la fin, à la toute fin. Toi, tu as ouvert le html, tu le refermes, tu le réouvres [-X ...
Image

mibs
Invité n'ayant pas de compte PHPfrance

18 déc. 2005, 22:50

Merci de vos indiquations, je suis pas un expert je suis à mes débuts y'a beaucoups de choses que je fais un peu comme je pense...

J'ai redéfini, mon fichier et récupérer la variable pourtant ça devrait marcher.. Il y a encore une erreur quelque part ?
<HTML>

            
      
 <?

          // date du moment du postage
          $jour = date ("d");
          $mois = date ("m");
          $an = date ("Y");
         $datenow = "$jour:$mois:$an";
          
          // heure du moment du postage
          $heure = date ("H");
          $heure = $heure ;
          $minute = date ("i");
          $minute = $minute;
         // $seconde = date ("s"); = option des secondes off
          $heurenow = "$heure:$minute";
 ?>
 
<BODY>
<div id="addnews">
<FORM METHOD="post" ACTION=".\principale.php">
NEW : <INPUT TYPE="text" SIZE="30" NAME="posting"><BR>

<INPUT TYPE="submit" VALUE="Envoyer" NAME="valider">
</FORM>
</div id="addnews">
</BODY>

<?

$sql["serveur"]=''; // 
$sql["login"]='';  // login
$sql["pass"]=''; // password 
$sql["base"]=''; // le nom de ma base de donné

$sql["connect"]=mysql_connect($sql["serveur"],$sql["login"],$sql["pass"])or die ("impossible de se connecter, réessayé plus tard");
$sql["select_base"]=mysql_select_db($sql["base"],$sql["connect"])or die ("erreur de connexion base");


$sql["connect"];
$sql["select_base"];

$new=$_POST[posting];

mysql_query("INSERT into new (post) VALUES ('$new')");

mysql_close();
?>

</HTML>

ViPHP
ViPHP | 649 Messages

18 déc. 2005, 22:55

Plus d'erreurs majeures cependant, normalement, on place pas de code en-dehors de <body></body> bien que cela en soit nullement dramatique.

Je sais pas si c'était pour alléger le code mais tu as fait disparaître la balise <head></head>, qui est primordial pour être valide XHTML. Autrement, tu as enlever les doubles <html></html>, ce qui est un excellent pas :wink:
Image

mibs
Invité n'ayant pas de compte PHPfrance

18 déc. 2005, 23:16

hehe ok, j'ai donc corrigé ça j'ai réajouter les balises head

mais la requête ne fonctionne toujours pas, elle est formulée correctement pourtant ? ou il y a encore une anomalie

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

18 déc. 2005, 23:19

essaie en rajoutant des apostrophes sur la variable post:
$new=$_POST['posting'];

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

ViPHP
ViPHP | 649 Messages

18 déc. 2005, 23:22

En mettant le nom de ton champ entre guillemets? Pas certain, mais ça peut régler les problèmes. Sinon, tu vas dans phpmyadmin, tu insères à la main, tu copies la requête puis tu la colle dans ton code avec les valeurs nécessaires. Vérifie la syntaxe( le nom de ta table etc.)

EDIT: Oui, tout à fait, tu dois ajouter des apostrophes, désolé, tu as posté pendant que je rédigeais, j'ai pas vu ton post :wink:
Image

mibs
Invité n'ayant pas de compte PHPfrance

18 déc. 2005, 23:35

Justement en fait j'ai enlevé les guillemets à cet emplacement car avec ça ne marchait pas et maintenant je les ai réinsérées, étonnant... que ceci ne passe toujours pas

Je vais encore observer la situation

ViPHP
ViPHP | 649 Messages

18 déc. 2005, 23:37

Copie la requête telle quelle de phpmyadmin, je te le dis, c'est infaillible :)
Image

mibs
Invité n'ayant pas de compte PHPfrance

19 déc. 2005, 22:09

Ok à présent chaque fois que je poste ceci enregistre dans la table correctement lorsque je ne met pas une variable si je met comme ceci, (bon je remet tout mon code c'est plus simple)
<?php
$timestamp_expire = time() + 365*24*3600*100; // Le cookie expirera dans 100 ans
setcookie('pseudo', $pseudo, $timestamp_expire); // écrit dans le cookie
session_start(); // On démarre la session AVANT la balise html 
$_SESSION['pseudo'] = $pseudo;
$_SESSION['mot_de_passecompte'] = $mot_de_passecompte;  
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


<HTML>
<head>
</head>
            
      
 <?

          // date du moment du postage
          $jour = date ("d");
          $mois = date ("m");
          $an = date ("Y");
         $datenow = "$jour:$mois:$an";
          
          // heure du moment du postage
          $heure = date ("H");
          $heure = $heure ;
          $minute = date ("i");
          $minute = $minute;
         // $seconde = date ("s"); = option des secondes off
          $heurenow = "$heure:$minute";
 ?>
 
<BODY>
<div id="addnews">
<FORM METHOD="post" ACTION=".\principale.php">
NEW : <INPUT TYPE="text" SIZE="30" NAME="posting"><BR>
<INPUT TYPE="submit" VALUE="Envoyer" NAME="valider">
</FORM>
</div id="addnews">
</BODY>

<?
if (posting!=""){
$sql["serveur"]=''; // important 
$sql["login"]='';  // login
$sql["pass"]=''; // password 
$sql["base"]=''; // le nom de ma base de donné

$sql["connect"]=mysql_connect($sql["serveur"],$sql["login"],$sql["pass"])or die ("impossible de se connecter, réessayé plus tard");
$sql["select_base"]=mysql_select_db($sql["base"],$sql["connect"])or die ("erreur de connexion base");


$sql["connect"];
$sql["select_base"];


$ajoutnew = $_POST['posting'];
mysql_query("INSERT INTO new(post)VALUES ('$ajoutnew')");


mysql_close();
}
?>

</HTML>


Lorsqie maintenant il doit insérer ma variable $ajoutnew dans le champ, ca ne marche pas, mais si je met ceci
mysql_query("INSERT INTO new(post)VALUES ('salut les cocos')");
Alors là oui ceci insert bien salut les cocos dans mon champ, pourtant j'ai bien été regarder par ci par là, pour reprendre une variable correctement.. et j'ai l 'impression que c'est correct.. :o

mibs
Invité n'ayant pas de compte PHPfrance

19 déc. 2005, 22:26

même ainsi ça passe pas
<?
$ajoutnew = $_POST['posting'];
if ($ajoutnew!=""){
$sql["serveur"]=
$sql["login"]=
$sql["pass"]=
$sql["base"]=

$sql["connect"]=mysql_connect($sql["serveur"],$sql["login"],$sql["pass"])or die ("impossible de se connecter, réessayé plus tard");
$sql["select_base"]=mysql_select_db($sql["base"],$sql["connect"])or die ("erreur de connexion base");


$sql["connect"];
$sql["select_base"];



mysql_query("INSERT INTO new(post)VALUES ('$ajoutnew')");


mysql_close();
}
?>

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

19 déc. 2005, 23:03

as tu affiché la requete générée (avec echo )pour voir le résultat ?
$sql="INSERT INTO new(post)VALUES ('".$ajoutnew."')";
echo $sql;
mysql_query($sql);
fait un copier/coller du résultat.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

ViPHP
ViPHP | 649 Messages

19 déc. 2005, 23:40

Est-ce que la variable $_POST['posting']; est bien existante??
Image