Aller au contenu

pas de connection sur ma base


Sujets conseillés

  • Réponses 54
  • Créé
  • Dernière réponse

Contributeurs actifs dans ce sujet

Contributeurs actifs dans ce sujet

Posté

Merci, alors quelle serait le code pour pouvoir ajouter les donnees des visiteurs du site sur ma base de donnée.

Ecore merci à toi.

Posté (modifié)

(Pour compléter ce qui est dit, et un peu répondre aux possibles soucis que j'ai vu dans le code)

Bonsoir, apres plusieurs petits changements, je n'ai plus d'erreurs mais je n'ai tjrs pas de resultat dans ma base de donnée quand je ne remplie pas toutes les "cases" de mon formulaire,je n'ai pas de message.

voici le code:


$prenom = stripslashes (isset($_POST["prenom"]));
$resume = stripslashes(isset($_POST["resume"]));

merci à vous.

Jp

Bonjour,

c'est tout à fait normal. Tu met dans tes variables $prenom et $resume un booléen (isset retournant true / false). Automatiquement, les variables sont remplies :)

tu doit retirer le isset() de ta déclaration de $prenom et $resume.

Si tu veux éviter les erreurs "undefined", il y a une petite astuce, c'est les conditions en déclaration.

ça se présente comme tel:

$variable = condition ? si vrai : si faux;

Par exemple, vérifier que 1 == 2 (ce qui est faut) sera ainsi:

$variable = 1 == 2 ? "C'est egal !" : "Ce n'est pas égal !";

et en affichant $variable, tu verra "Ce n'est pas égal !" car 1 est différent de 2 ;) j'espère que c'est compréhensible.

Dans ton cas, tu désire vérifier que la variable est définie. Tu peut donc faire comme suit:


$prenom = isset($_POST["prenom"]) ? stripslashes($_POST["prenom"]) : NULL;
$resume = isset($_POST["resume"]) ? stripslashes($_POST["resume"]) : NULL;

"C'est bien beau, mais ça fais quoi?"

En fait, et je vais l'expliquer que pour prénom (vu que resume fais exactement pareil):

On défini une variable nommée $prenom. Dans cette variable, on met une condition. une "vérification" si tu préfère. On vérifie si $_POST["prenom"] est défini (via isset($_POST["prenom"]) ?) et on dit que si c'est vrai (donc isset retourne true; signifiant que $_POST["prenom"] contient quelque chose) on dit que $prenom contiendra stripslashes($_POST["prenom"]). Toutefois, si jamais $_POST["prenom"] venant à retourner false (et donc qu'il ne serait pas complété par l'utilisateur), on met $prenom avec la valeur NULL. NULL étant en réalité une sorte de "vide". Ainsi, pour ta vérification antérieure, tu aura bien un message si tu fais empty($prenom) ; car la variable est vide ;)

----

Pour ajouter une entrée de ce que l'utilisateur a tapé, après avoir vérifié si tout a été défini par l'utilisateur (les empty), tu doit faire une autre query contenant ceci:


// Je créer de nouvelles variables, rien n'empêche de redéfinir $prenom et $resume.
// mysql_real_escape_string() va sécuriser tes variables contre les injections sql
// (des trucs méchants qui peuvent faire des failles de sécurité)
$prenom_i = mysql_real_escape_string($prenom);
$resume_i = mysql_real_escape_string($resume);

// Cette requête ajoute dans la table commentaire,
// les variables $prenom dans la colonne 'prenom'
// et $resume dans la colonne 'commentaires'.
// Faut adapter selon le nom de tes colonnes / table :)
$requete2 = "INSERT INTO commentaire (prenom, commentaires) VALUES ('$prenom_i', '$resume_i')"
$execution = mysql_query($requete2, $connexion);

if(!$execution)
{
$message = 'requête invalide: '. mysql_error() . "\n";
$message.= 'requête: ' . $requete2;
die($message);
}

Modifié par Aenoa
Posté

Merci pour toutes ces explications que j'ai bien compris !!! il ne s'agit que de certaines conditions pour differentes variables,maisen effectuant les morceaux de codes que tu viens de me faire (merci !!!) je me retrouve avec messages d'erreurs.

messages :

Notice: Undefined variable: prenom in C:\wamp\www\maintenance13

Notice: Undefined variable: resume in C:\wamp\www\maintenance13\

Requête invalide: No database selected Requête effectuee: INSERT INTO commentaire (prenom,resume) VALUES ('', '')

je te renvois aussi le morceau de code modifie:

mysql_select_db($mabasededonnee,$connexion);

$requete="INSERT INTO commentaire (prenom,resume) VALUES ('$prenom', '$resume')";

$resultat=mysql_query($requete,$connexion);

if (!$resultat) {

$message = 'Requête invalide: ' . mysql_error() . "\n";

$message .= 'Requête effectuee: ' . $requete;

die($message);

}

mysql_close($connexion);

while ($row = mysql_fetch_assoc($resultat))

print_r($row);

if(isset($_POST["Valider"]))

{

$prenom = mysql_real_escape_string($prenom);

$resume = mysql_real_escape_string($resume);

if(empty($prenom)){

echo 'prenom est vide. <br/>';

}

else if(empty($resume)){

echo 'resume est vide.<br/>';

}

Merci à toi.

Cordialement, Jp

Posté


mysql_select_db($mabasededonnee,$connexion);

$requete="INSERT INTO commentaire (prenom,resume) VALUES ('$prenom', '$resume')";
$resultat=mysql_query($requete,$connexion);

if (!$resultat) {
$message = 'Requête invalide: ' . mysql_error() . "\n";
$message .= 'Requête effectuee: ' . $requete;
die($message);
}
mysql_close($connexion);
while ($row = mysql_fetch_assoc($resultat))
print_r($row);

if(isset($_POST["Valider"]))
{
$prenom = mysql_real_escape_string($prenom);
$resume = mysql_real_escape_string($resume);


if(empty($prenom)){
echo 'prenom est vide. <br/>';
}
else if(empty($resume)){
echo 'resume est vide.<br/>';
}

ton code est mal structuré ici :/

je te retape le tout bien structuré et j'éditerais ce message avec le code... a dans quelques minutes :)

Posté

Je n'ai pas testé mais normalement tout sera bon.


<?php
// Nom de la base de donnée
$mabasededonnee="maintenance13";

// Connexion à MySQL
$connexion = mysql_connect("localhost","root","");

// Vérification de la bonne connexion à MySQL
if(!$connexion)
{
die("Erreur lors de la connexion à MySQL: <br />" .mysql_error());
}

// Sélection de la Base de donnée $mabasededonnee
mysql_select_db($mabasededonnee, $connexion);

// Requête permettant de lister tout les commentaires
$requete="SELECT * FROM commentaire";
// Exécution de la requête ci-dessus
$resultat=mysql_query($requete, $connexion);
// Vérification de la bonne exécution de la requête
if (!$resultat)
{
$message = 'Requête invalide: ' . mysql_error() . "\n";
$message .= 'Requête effectuee: ' . $requete;
die($message);
}

// Affichage des commentaires
while ($row = mysql_fetch_assoc($resultat))
print_r($row);



if(isset($_POST["Valider"]));
{
$prenom = isset($_POST["prenom"]) ? stripslashes($_POST["prenom"]) : NULL;
$resume = isset($_POST["resume"]) ? stripslashes($_POST["resume"]) : NULL;

if(!empty($prenom) && !empty($resume))
{
// Les deux champs sont correctement remplis.
// On peut donc insérer ce qu'ils ont marqué dans la db.

$prenom_bis = mysql_real_escape_string($prenom, $connexion);
$resume_bis = mysql_real_escape_string($resume, $connexion);

// Requête permettant d'insérer un nouveau commentaire
$requete_ins = "INSERT INTO commentaire (prenom, commentaires) VALUES ('$prenom_bis', '$resume_bis')";
// Exécution de la requête ci-dessus
$resultat_ins = mysql_query($requete_ins, $connexion);
// Vérification de la bonne exécution de la requête
if (!$resultat_ins)
{
$message2 = 'Requête invalide: ' . mysql_error() . "\n";
$message2 .= 'Requête effectuee: ' . $requete_ins;
die($message2);
}
}
elseif(empty($prenom))
{
// $prenom n'a pas été entré ou est vide
echo 'prenom est vide. <br/>';
}
elseif(empty($resume))
{
// $resume n'a pas été entré ou est vide
echo 'commentaire est vide.<br/>';
}
}

// Au final, fermeture de la base de donnée
mysql_close($connexion);
?>

évidement cela requiert que ta table "commentaire" soit structurée avec une colonne se nommant "prenom" et une autre se nommant "commentaires"

Posté

merci a toi , c'est vraiment tres sympa de ta part, pour eviter toutes embrouilles, j'ai renommé "commentaires" par "resume".

Je verifie tout ca et je reviensvers toi si ca te deranges pas pour te dire ce qu'il en est.

Merci .

Jp

Posté (modifié)

Waouhhhh quel pied de voir que ca marche !!! mais car il y a tjrs un "mais" je me retrouve avec une page blanche et ce message

message:

Array ( [id] => 1 [prenom] => Marc [resume] => pas mal ton site ) commentaire est vide.

est il possible de rester sur la page d'accueil ?

Vraiment un gros MERCIIIII !!!

Modifié par jpdel13
Posté

Oui je viens juste de le comprendre mais ce message reste afficher sur ma page d'accueil,

aurais-tu une soluce pour ca ?

Cordialement.

Jp

Posté (modifié)

Me revoilou, j'ai effectivement un print_r mais je l'ai enleve du code mais a chaque fois je retombe sur page blanche avec message d'erreur qui est volontaire d'ailleurs, comment rester sur ma page d'accueil.

morceau de code que j'ai enleve par "//"

// Affichage des commentaires

//while ($row = mysql_fetch_assoc($resultat))

// print_r($row);

Et je ne peux faire qu'un seule requete sauf si je change "insertinto" par "replace"

Comment je peux regler ce probleme.

Merci à vous.

Modifié par jpdel13
Posté
comment rester sur ma page d'accueil.

Deux solutions (entre autres) :

1/ Tu mets tout dans le même fichier : le formulaire ET le traitement du formulaire. Cela peut être la page d'accueil. Dans ce cas, elle doit porter l'extension php, et dans la balise du formulaire tu mets action="" (ainsi le formulaire est envoyé sur la même url).

2/ Ou alors tu fais une redirection après le traitement, en ajoutant header('Location: index.php'); à la fin. Où "index.php" est l'url de la page d'accueil. Dans ce cas, il faut également que rien ne soit affiché avant la redirection (donc retirer tout ce qui t'a servi au débug).

Posté (modifié)

Je tiens encore à vous remercier pour le support que vous m'avez apporté.

Il est vrai que plus on avance, plus je vais rencontrer des problemes.

Encore merci et certainement a bientot.

Cordialement.

Jp

Modifié par jpdel13
Posté (modifié)

Bonjour à vous touts et toutes,

Je viens de refaire un code pour un support d'annuaire (projet perso)mais j'ai une ligne qui s'affiche en permanence "Nom de la société est vide" idem si je ne remplie pas certaines cases, c'est tjrs le meme texte qui s'affiche.

Je ne vois pas ou est mon erreur.Merci pour votre aide.Je vous mets le code.

code:

<?php

//connection a la base.
$mabasededonnee="ambulanceweb";

//connection a mysql.
$connexion = mysql_connect("localhost","root","");

//verification de la bonne connexion.
if(!$connexion)
{
die("Erreur lors de la connexion à MySQL: <br />" .mysql_error());
}
//selection de la base de donnee
mysql_select_db ($mabasededonnee,$connexion);
// requetes permettant de lister tous les commentaires.
$requete = "SELECT * FROM formulaire";
//execution de la requete.
$resultat = mysql_query ($requete,$connexion);
//on verifie l'excution de la requete.
if(!$resultat)
{
$message = 'Requete invalide:'.mysql_error() . "\n";
$message = 'Requete effectuee:'.$requete;
die($message);
}
if (isset($_POST["Envoyer"]));
{
$nomsociete = isset($_POST["nomsociete"]) ? stripslashes($_POST["nomsociete"]) : NULL;
$nomgerant = isset($_POST["nomgerant"]) ? stripslashes($_POST["nomgerant"]) : NULL;
$prenomgerant = isset($_POST["prenomgerant"]) ? stripslashes($_POST["prenomgerant"]) : NULL;
$adressegerant = isset($_POST["adressegerant"]) ? stripslashes($_POST["adressegerant"]) : NULL;
$villegerant = isset($_POST["villegerant"]) ? stripslashes($_POST["villegerant"]) : NULL;
$telgerant = isset($_POST["telgerant"]) ? stripslashes($_POST["telgerant"]) : NULL;
$mailgerant = isset($_POST["mailgerant"]) ? stripslashes($_POST["mailgerant"]) : NULL;
$siretgerant = isset($_POST["siretgerant"]) ? stripslashes($_POST["siretgerant"]) : NULL;
$resumegerant = isset($_POST["resumegerant"]) ? stripslashes($_POST["resumegerant"]) : NULL;

if (!empty($nomsociete)&& !empty($nomgerant)&& !empty($prenomgerant)&& !empty($adressegerant)&& !empty($villegerant) && !empty($telgerant)
&& !empty ($mailgerant)&& !empty ($siretgerant) && !empty ($resumegerant))
{
// tous les champs sont remplis, on peut donc inserer dans la base de donnee.
$nomsociete = mysql_real_escape_string($nomsociete, $connexion);
$nomgerant = mysql_real_escape_string($nomgerant, $connexion);
$prenomgerant = mysql_real_escape_string($prenomgerant, $connexion);
$adressegerant = mysql_real_escape_string($adressegerant, $connexion);
$villegerant = mysql_real_escape_string($villegerant, $connexion);
$telgerant = mysql_real_escape_string($telgerant, $connexion);
$mailgerant = mysql_real_escape_string($mailgerant, $connexion);
$siretgerant = mysql_real_escape_string($siretgerant, $connexion);
$resumegerant = mysql_real_escape_string($resumegerant, $connexion);
//requete permettant d'inserer nouvelle requetes.
$requete = "insert into formulaire (nomsociete,nomgerant,prenomgerant,adressegerant,villegerant,telgerant,mailgerant,siretgerant,resumegerant)
values ($nomsociete,$nomgerant,$prenomgerant,$adressegerant,$villegerant,$telgerant,$mailgerant,$siretgerant,$resumegerant)";
//execution de la requete.
$resultat = mysql_query ($requete,$connexion);
//verification de l'execution.
if (! $resultat)
{
$message = ' requete invalide: '.mysql_error (). "\n";
$message .= 'requete effectue: ' .$requete ;
die ($message);
}
}

elseif(empty($nomsociete))
{
// $nomsociete n'a pas été entré ou est vide
echo 'nom de la société est vide. <br/>';
}
elseif(empty($nomgerant))
{
// $nomgerant n'a pas été entré ou est vide
echo 'nom du gérant est vide. <br/>';
}
elseif(empty($prenomgerant))
{
// $prenomgerant n'a pas été entré ou est vide
echo 'prénom du gérant est vide. <br/>';
}
elseif(empty($adressegerant))
{
// $prenom n'a pas été entré ou est vide
echo 'nom du gérant est vide. <br/>';
}
elseif(empty($villegerant))
{
// $villegerant n'a pas été entré ou est vide
echo 'la ville est vide. <br/>';
}
elseif(empty($telgerant))
{
// $telgerant n'a pas été entré ou est vide
echo 'téléphone est vide. <br/>';
}
elseif(empty($mailgerant))
{
// $mailgerant n'a pas été entré ou est vide
echo 'mail est vide. <br/>';
}
elseif(empty($siretgerant))
{
// $siretgerant n'a pas été entré ou est vide
echo 'numéro de siret est vide. <br/>';
}
}
// Au final, fermeture de la base de donnée
mysql_close($connexion);
?>

Cordialement, Jp.

Modifié par Ernestine
Merci d'utiliser les balises CODE quand vous insérez du code.
Posté

Tout d'abord, merci d'utiliser les balises CODE pour insérer des lignes de code (j'ai dû modifier ton message).

A vue d'oeil, ton $_POST["nomsociete"] est vide, tout simplement.

Merci de nous donner le code du formulaire car c'est sûrement là qu'est le problème ;)

Posté (modifié)

merci pour cette reponse voici donc le code formulaire.

code:


<html>
<head>
<body>
<p align="center"><font size="5"><FORM method = "post" action = "formulaire.php"></FORM>
<p align="center"><font size="+3">Enregistrer votre entreprise (Gerant) </font></p>
<p align="center"></p>
<TABLE BORDER=0>
<TR>

<TD width="350">Nom de votre sociétée</TD>
<TD width="900">
<INPUT name="nomsociete" type="text" size="50">
</TD>
</TR>

<TR>
<TD width="350">Nom</TD>
<TD width="900">
<INPUT name="Nomgerant" type=text size="50">
</TD>
</TR>
<TR>
<TD width="350">Prenom</TD>
<TD width="900">
<INPUT type=text name="prenom" size="50">
</TD>
</TR>

<TR>
<TD width="350">Adresse</TD>
<TD width="900">
<INPUT name="Adresse" type=text size="50">
</TD>
</TR>

<TR>
<td width="150">Ville</td>
<td width="700">
<input name="Ville" type="text" size="50" />
</td>

<TR>
<td width="150"> Téléphone </td>
<td width="700">
<input name="Téléphone" type="text" size="50" />
</td>
</TR>

<TR>
<TD width="350">Adresse Mail</TD>
<TD width="900">
<INPUT name="Adresse Mail" type=text size="50">
</TD>
</TR>

<tr>
<td width="150"> Numero de siret </td>
<td width="700">
<input name="Numéro de siret" type="text" size="50" />
</td>
<TR>
<TD>Commentaires</TD>
<TD>
<TEXTAREA name="commentaires" cols="50" rows="5">
</TEXTAREA>
</TD>
</TR>

<TR>
<TD COLSPAN=2>
<form method ="post" action = "formulaire.php">

<p align="center"><INPUT type="submit" name ="submit" value="Envoyer"></p>
</TD>
</TR>
</TABLE>
</FORM>

<p align="center"><font face="Verdana, Geneva, sans-serif" size="3"><a href="index.html"> RETOUR </a>
</html>
</head>
</body>

merci encore

:flower:

Modifié par jpdel13
Posté

merci mais ca ne change rien.

code que je viens de changer:


<TR>


<TD width="350">Nom de votre sociétée</TD>
<TD width="900">
<form>
<INPUT name="nomsociete" type="text" size="50">
</form>
</TD>
</TR>

Posté

Je pense que tu n'as pas bien saisi les bases du formulaire ;)

Un formulaire est délimité par deux balises : une balise ouvrante <form> et une balise fermante </form>.

Et c'est à l'intérieur de ces deux balises que doivent se trouver les <input>.

Donc cette ligne :

<FORM method = "post" action = "formulaire.php"></FORM>

est absurde.

Quant à ceci :

        <form method ="post" action = "formulaire.php">

<p align="center"><INPUT type="submit" name ="submit" value="Envoyer"></p>
</TD>
</TR>
</TABLE>
</FORM>

C'est encore pire : tu ouvres un nouveau formulaire en plein milieu d'une cellule de tableau pour le refermer après le tableau :wacko: et en plus il ne contient que le submit...

En l'état, ce code est inutilisable.

Si j'étais toi je repartirais de zéro : essaie de construire un simple petit formulaire, avec un seul champ, et le faire marcher. Ensuite tu pourras t'attaquer à plus complexe.

Posté

En regardant à nouveau ton code, je vois que tu as tout mis dans le HEAD, c'est même pire, tu as carrément imbriqué le BODY dans le HEAD !!!

Et tu as tout un tas de paragraphes ouverts et non fermés...

Ton balisage est anarchique, on veut bien t'aider, mais il y a quand même un minimum syndical : si tu ne maîtrises pas les règles élémentaires du balisage html, cette discussion risque de s'étaler sur des dizaines et des dizaines de pages, car tu devras revenir au moindre problème.

Je te conseille la lecture de ce tutoriel : http://www.siteduzero.com/tutoriel-3-13666-apprenez-a-creer-votre-site-web-avec-html5-et-css3.html

Tu y trouveras notamment un chapitre sur les formulaires ;)

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant

×
×
  • Créer...