Page 1 sur 3

enregistrement de ma requète sql dans ma table new

Posté : 17 déc. 2005, 09:35
par mibs
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:

Posté : 17 déc. 2005, 10:02
par Cyrano
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.

Posté : 18 déc. 2005, 21:36
par mibs
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:

Posté : 18 déc. 2005, 22:24
par alexbad
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 ...

Posté : 18 déc. 2005, 22:50
par mibs
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>

Posté : 18 déc. 2005, 22:55
par alexbad
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:

Posté : 18 déc. 2005, 23:16
par mibs
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

Posté : 18 déc. 2005, 23:19
par Truc
essaie en rajoutant des apostrophes sur la variable post:
$new=$_POST['posting'];

Posté : 18 déc. 2005, 23:22
par alexbad
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:

Posté : 18 déc. 2005, 23:35
par mibs
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

Posté : 18 déc. 2005, 23:37
par alexbad
Copie la requête telle quelle de phpmyadmin, je te le dis, c'est infaillible :)

Posté : 19 déc. 2005, 22:09
par mibs
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

Posté : 19 déc. 2005, 22:26
par mibs
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();
}
?>

Posté : 19 déc. 2005, 23:03
par Truc
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.

Posté : 19 déc. 2005, 23:40
par alexbad
Est-ce que la variable $_POST['posting']; est bien existante??