enregistrement de ma requète sql dans ma table new

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : enregistrement de ma requète sql dans ma table new

par Truc » 24 déc. 2005, 01:50

$_SERVER['PHP_SELF'] contient le nom du fichier courant, donc souvent utiliser dans l'action du formulaire pour renvoyer sur la meme page.

Tu pourrais t'inscrire pour pouvoir mettre le [Résolu] toi meme,là en tant qu'invité va falloir demander à un modo :wink:

par mibs » 24 déc. 2005, 00:05

juste encore quelque chose à quoi sert cette commande ?

<?php echo $_SERVER['PHP_SELF'] et dans quel cas l'utiliser ?

merci bien

par mibs » 23 déc. 2005, 23:58

Alors là bravo ! Cela fonctionne à merveille !

Merci infiniment

En effet, j'apprend mais certains trucs je mélange encore, merci beaucoups je vais encore observer ton code

par Truc » 23 déc. 2005, 02:41

j'ai essaié de faire un peu le tri dans tout ça mais il reste des interrogations:

Comme l'utilité du cookie et de la session à cet endroit, normalement ces opérations se font lors d'une identification or ce n'est pas vraiment le cas ici.
De meme pour les variables correspondant au pseudo et passe, pas vraiment a leur place je pense.
Tu mélanges pas mal de choses,as tu suivis un tuto ?

Espace membre
Sessions
Cookies


J'ai rectifié un certain nombre de balises <div> dont il n'y a pas d'attributs dans la balise de fermeture.

Le formulaire d'identification n'a pas été fermé !

les variables passées par l'url doivent etre testées (avec isset)avant d'etre comparées tu avait fait l'inverse.

Les commenatires en HTML sont de la forme <!-- commentaire --> tu en avait en début de code avec <! commentaire >
<?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


if(isset($_POST['pseudo']))
{
	$pseudo=$_POST['pseudo']; // récupération variable pseudo de post
	$mot_de_passecompte=$_POST['motdepassecompte']; // récupération variable mot de passe du post
	
	$_SESSION['pseudo'] = $pseudo;
	$_SESSION['mot_de_passecompte'] = $mot_de_passecompte;  
}

//==============
// MON HORLOGE
//==============
        
$jour = date ("d");
$mois = date ("m");
$an = date ("Y");
$datenow = "$jour:$mois:$an";
          
       
$heure = date ("H");
$heure = $heure ;
$minute = date ("i");
$minute = $minute;
// $seconde = date ("s"); = option des secondes off
$heurenow = "$heure H :$minute";

?>

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

  <head>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <!-- faire appel à mon fichier css forme.css --> 
      <link rel="stylesheet" media="screen" type="text/css" title="design defaut" href="forme.css" /> <!-- faire appel à mon fichier css forme.css -->
  </head>  
<body>

<div align="center">
  <div id="entete">
      <div align="right">
        <? echo  $datenow.' '.$heurenow; ?>
    </div>
  </div>

<div id="intermediaire">
	<div align="right">  
		<div id="liencreationcompte">
			<div align="left">
				<a href="principale.php?creationcompte=compte/creationcompte" title="Creation Compte">
					Créer un compte&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
				</a>
			</div>
		</div>

		<form action="principale.php" method="post">
			pseudo<input type="text" name="pseudo" SIZE=7 MAXLENGTH=10>
			passe<INPUT TYPE="PASSWORD" SIZE=5 NAME="motdepassecompte">
			<input type="submit" value="Valider" >
		</form>
		<p>
			Hé ! Je me souviens de toi !<br />
			Tu t'appelles <?php echo $_COOKIE['pseudo']; ?>
		</p>

	</div>         
</div>  
                            
<div id="corpsprincipal">
	<div align="right">
		<div id="corpsnews">
<?php
			if ( isset($_GET['ajoutdenew']) && ($_GET['ajoutdenew'] == "new/addnew"))
			{      				
				include($_GET['ajoutdenew'].'.php'); // inclus addnew grace à include dans l'url du menu
			}
			
			else if (isset($_GET['creationcompte']) && ($_GET['creationcompte'] == "compte/creationcompte"))
			{     
				include($_GET['creationcompte'].'.php'); // inclus creation compte grace à include dans l'url du menu
			}
?>               
       </div>
	</div >
<div>

<div id="corpsmenugauche">

	<div id="menucadre" >
		<a href="principale.php?ajoutdenew=new/addnew" title="Ajout new">*NEWS*</A><br> <!-- ajoutdenew=variable page et addnew = la vrai page -->
	</div>
</div>
</body>
</html>
donc puisque tu travailles par include tu passe la variable ajoutdenew en GET pour afficher le formulaire de news or l'affichage et traitement se passe toujours sur la meme page. Tu dois donc remettre cette variable dans le formulaire de news:
<FORM METHOD="POST" ACTION="<?php echo $_SERVER['PHP_SELF']."?ajoutdenew=new/addnew"; ?>">
Voila essaie de faire encore un peu le ménage et de lire les tutos en cas de doute :wink:

par mibs » 22 déc. 2005, 23:47

Resalut, ouai tu as raison j'ai virer session et cookie ça n'a rien a faire là car c'est déjà dans ma page principale,.. j'ai testé ta page en tant qu'include elle ne fonctionne pas , mais si je la teste de manière indépendante ca passe nickel et ca enregistre correctement

Je peux donc déduire que c'est ma page principale qui doit avoir un bug,...
Tu peux y jeter un coup d'oeil voir si ça te parait correct ? Je sais j'apprends alors c'est vrai que le code peut paraître un peu farfouillis
<?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>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <! faire appel à mon fichier css forme.css>
      <link rel="stylesheet" media="screen" type="text/css" title="design defaut" href="forme.css" /> <! faire appel à mon fichier css forme.css>
  </head>
 
  
<body> 

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


?>

<div align="center">

  <div id="entete">
      <div align="right">
        <? echo  "$datenow $heurenow" ?>
    </div align="right">
  </div id="entete"> 

<div id="intermediaire">
<div align="right">  
<div id="liencreationcompte">
    <div align="left">
        <a href="principale.php?creationcompte=compte/creationcompte" title="Creation Compte">Créer un compte&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</A>
    </div> 
</div id="liencreationcompte">

<form action="principale.php" method="post">
     pseudo<input type="text" name="pseudo" SIZE=7 MAXLENGTH=10>
     passe<INPUT TYPE=PASSWORD SIZE=5 NAME="motdepassecompte">
                            <input type="submit" value="Valider" > 
 

<?    
{
$pseudo=$_POST['pseudo']; // récupération variable pseudo de post
$mot_de_passecompte=$_POST['motdepassecompte']; // récupération variable mot de passe du post
}
?>



<p>
    Hé ! Je me souviens de toi !<br />
    Tu t'appelles <?php echo $_COOKIE['pseudo']; ?> 
</p>

</div align="right">         
</div id="intermedaire">  
                            

  <div id="corpsprincipal">
 
<div align="right">
          <div id="corpsnews">


<?php  
if (($_GET['ajoutdenew'] == "new/addnew")or ($_GET['ajoutdenew'] == "")){
     if (isset($_GET['ajoutdenew'])) include($_GET['ajoutdenew'].'.php'); // inclus addnew grace à include dans l'url du menu 
} 

if (($_GET['creationcompte'] == "compte/creationcompte")or ($_GET['creationcompte'] == "")){     
if (isset($_GET['creationcompte'])) include($_GET['creationcompte'].'.php'); // inclus creation compte grace à include dans l'url du menu 
}

else { 

?>

<?
}
?>

                
          </div id="corpsnews">
</div align="right">

<div align="left">
    <div id="corpsmenugauche">

 
<div id="menucadre" >
    <a href="principale.php?ajoutdenew=new/addnew" title="Ajout new">*NEW*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</A><br> <!-- ajoutdenew=variable page et addnew = la vrai page -->
</div id="menucadre">


</div id="corpsmenugauche">
</div align="left"> 
</div id="corpsprincipal"> 
</div align="center">    
    

</body>
</html>

par Truc » 22 déc. 2005, 23:23

essaie avec ce code:
<?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;  

// 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";
	
	
if (isset($_POST['posting']))
{
	$posting=$_POST['posting'];
	$serveur=
	$login=
	$pass=
	$base=
	
	$connect=mysql_connect($serveur,$login,$pass)or die ("impossible de se connecter, réessayé plus tard");
	$select_base=mysql_select_db($base,$connect)or die ("erreur de connexion base");
		
	$sql="INSERT INTO new (post) VALUES ('".$posting."')";
	mysql_query($sql);
	
	mysql_close();
}
	
?>

<div id="addnews">
	<FORM METHOD="POST" ACTION="<?php echo $_SERVER['PHP_SELF']; ?>">
		NEWaaa : 
		<INPUT TYPE="text" SIZE="30" NAME="posting"><BR />
	<INPUT TYPE="submit" VALUE="Envoyer" NAME="valider">
</FORM>
</div>
mais peut tu me dire a quoi sert le cookie sur le pseudo ? tu n'as pas eu de message d'erreur, du style "headers already sent by", en incluant le code ?

je me demande a quel niveau tu essaie d'inclure dans l'index ce fichier.

De meme a quoi servent les variables de session ?

j'ai également changé le l'action du formulaire puisque le traitement se fait sur la meme page.

par m1bs » 22 déc. 2005, 23:12

désolé j'ai mis un autre code je me suis trompé
<?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">



            
      
<?

          // 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";
?>


<div id="addnews">
<FORM METHOD="POST" ACTION="/new/addnew.php">
NEWaaa : <INPUT TYPE="text" SIZE="30" NAME="posting"><BR>
<INPUT TYPE="submit" VALUE="Envoyer" NAME="valider">
</FORM>
</div id="addnews">


<?

if (isset($_POST['posting'])){
$addnewintable=$_POST['posting'];
$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 ('$addnewintable')");

mysql_query($sql);

mysql_close();
}
?>


par mibs » 22 déc. 2005, 23:06

Je continue à chercher
<?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">



            
      
<?

          // 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";
?>


<div id="addnews">
<FORM METHOD="POST" ACTION="/new/addnew.php">
NEWaaa : <INPUT TYPE="text" SIZE="30" NAME="posting"><BR>
<INPUT TYPE="submit" VALUE="Envoyer" NAME="valider">
</FORM>
</div id="addnews">


<?

if (isset($_POST['posting'])){
$nom=$_POST['posting'];
$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"];


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

mysql_query($sql);

mysql_close();
}
?>
Voilà j'ai modifié mon fichier mais à présent ca n'enregistre plus rien du tout dans ma table, même pas un champ vide, hehe je reste calme ^^ , incroyable que quelque chose d'aussi simple, n'arrive pas à passez.

Mon code est faux toujours ?

par mibs » 21 déc. 2005, 23:57

Exact ces balise sont à supprimer, je vais remodifier la page et utiliser ce que tu viens de me montrer
if (isset($_POST['posting']))
ps: en tout cas merci à tous de prendre du temps pour m'expliquer c'est vraiment sympa :)

par Truc » 21 déc. 2005, 23:48

ok, tu inclus ce fichier dans un autre qui est l'index donc je suppose que les balises html telles que <!DOCTYPE,<HTML>,<HEAD>, ... y sont déjà il faut donc les supprimer dans ce fichier.

autre chose que signifie ce test:
if (posting!="")
posting est une constante ? tu n'as pas d'erreur ?

je pense que le test devrai plus tot être:
if (isset($_POST['posting']))
donc le traitement qui suit ne se fait que lorsque le formulaire ait été validé.

par Invité » 21 déc. 2005, 23:01

Désolé de l'explication, alors voilà le code de ma page
<?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="/new/addnew.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"]=
$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"];


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

mysql_close();
}
?>

</HTML> 
Cette page marche bien. Mais dans mon cas si je met cette page en tant qu'include c'est à dire que j'ai ma page d'index je clique sur un lien et je me retrouve avec cette page grace à la métode include, tout en gardant mon interface de la page d'index. Alors la requète n'enregistre pas

Par contre si je teste cette page de manère indépendante, sans include en tant que simple page php alors là pas de problème la requète va s'enregistrer correctement

J'ai été plus clair ? Sinon je reprend enore une fois ! :wink:

par Truc » 20 déc. 2005, 23:01

j'ai retesté cette page ( qui est une include )
quelle page ?
lorsque je lui demande de s'afficher, c'est bon ça joue,
"lui" ?! c'est qui ?

C'est flou tout ça, as tu encore besoin d'aide ? Si oui faut que tu sois plus précis.

par mibs » 20 déc. 2005, 22:32

me revoilà, alors j'ai retesté cette page ( qui est une include ) je l'ai testée dans une page indépendante et là nickel ça passe.

ma requète sors correctement

INSERT INTO new(post)VALUES ('sassssssssssssss')

lorsque je lui demande de s'afficher, c'est bon ça joue, il faut que je comprenne à présent pourquoi cette requète ne passe dans la page ou elle est incluse avec include ! Ce qui risque d'être plus compliqué

En gros c'est une page index, ou j'ai fait un include new.php

par Truc » 20 déc. 2005, 00:04

Tu sais que si tu ne réponds pas aux questions on aura du mal a avancer :roll:
et la requête générée ?!
affiche toutes les variables et requete => echo !!

par alexbad » 20 déc. 2005, 00:02

Oui, j'avais deviné mais pour cela, le formulaire doit avoir été validé. Donc, la première fois que tu charges la page, cette variable n'existe pas :?