Insert vide

Signaler
Messages postés
36
Date d'inscription
lundi 27 mai 2019
Statut
Membre
Dernière intervention
3 février 2020
-
jordane45
Messages postés
27636
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 février 2020
-
voici mon code :
$ill='';
if(isset($_GET['ill']){
$ill=$_GET['ill'];
}
echo $ill;
$mysqli->query("insert into malade(nom,code,maladie) values ('$nom','$code','$ill'))or die($mysqli->error());
le insert fonctionne mais dans la case maladie c'est vide meme si echo affiche la maladie

8 réponses

Messages postés
27636
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 février 2020
2 124
Merci, dès tes prochains messages, d'utiliser les balises de code CORRECTEMENT.... histoire qu'on puisse avoir la coloration syntaxique et l'indentation.
Cela fait plusieurs fois qu'on te le dit : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Ensuite.. quand on te demande le code COMPLET .. ben.. c"est COMPLET.
Là, il manque des lignes dans ta premières pages...
- d'où viennent les variables comme, par exemple $num_dossier; ?
- Où se trouve le bouton submit de ton formulaire et la balise </form> ?


Enfin bon.. ça nous permet de voir les premières erreurs que tu as commis dans ton code ...


Dans ta première page, Tu as mis :
require_once 'pro2.php';

Et
<form action="pro2.php" method="POST" oninput="">


C'est ... ou l'un .. ou l'autre.. mais pas les deux en même temps !!
Soit tu rediriges vers la page pro2 ( avec le "action" de ton form ) , soit tu inclus le code du fichier pro2 dans ta page (ce que fait le require ).

PS: le "oninput" n'a rien à faire là... surtout dans une balise form.. tu peux le retirer.

Pour résoudre ton souci,
Je te conseille donc de conserver le require, et de remplacer ton form par
<form action="" method="POST">

jawadov11
Messages postés
36
Date d'inscription
lundi 27 mai 2019
Statut
Membre
Dernière intervention
3 février 2020

merci pour ton aide cher ami je suis débutant
Messages postés
14652
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 février 2020
204
Il ne manque pas une " ?
jawadov11
Messages postés
36
Date d'inscription
lundi 27 mai 2019
Statut
Membre
Dernière intervention
3 février 2020

il m'affiche pas d'erreur du genre
Messages postés
27636
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 février 2020
2 124
Bonjour,

A l'avenir, merci d'utiliser les balises de code pour poster ton code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code


Ensuite, il faut récupérer "proprement" les variables avant de les utiliser.

et enfin en mysqli .. on n'utilise plus le OR DIE ..
A la place on écrit sous cette forme.


//récupération de la variable via la forme ternaire (sorte de if/else)
// il faut également protéger contre les caractères spéciaux qui pourraient se trouver dans la variable
// pour ça : https://www.w3schools.com/php/func_mysqli_real_escape_string.asp
$ill=!empty($_GET['ill']) ? $mysqli -> real_escape_string($_GET['ill']) : "";
echo $ill;


$sql = "insert into malade(nom,code,maladie) values ('$nom','$code','$ill')";
if (!$mysqli -> query($sql)) {
  echo("Error : " . $mysqli -> error);
}


Je t'invite également à lire ceci ::
http://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code
et ça : https://www.w3schools.com/php/func_mysqli_real_escape_string.asp


jawadov11
Messages postés
36
Date d'inscription
lundi 27 mai 2019
Statut
Membre
Dernière intervention
3 février 2020
> jordane45
Messages postés
27636
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 février 2020

c'est fait toujours le même problème le echo affiche le résultat le insert se fait mais la case maladie reste vide dans ma tabls
jawadov11
Messages postés
36
Date d'inscription
lundi 27 mai 2019
Statut
Membre
Dernière intervention
3 février 2020
> jawadov11
Messages postés
36
Date d'inscription
lundi 27 mai 2019
Statut
Membre
Dernière intervention
3 février 2020

le echo affiche angine donc la variable est pas vide portant sur le insert elle est vide
jordane45
Messages postés
27636
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 février 2020
2 124 > jawadov11
Messages postés
36
Date d'inscription
lundi 27 mai 2019
Statut
Membre
Dernière intervention
3 février 2020

vas-tu enfin te décider à lire le code que je t'ai donné ainsi que les liens

ne reviens nous voir qu'une fois que tu auras effectuer les modifications que je t'ai donné dans ton code !
et si ton souci persiste tu devras nous donner la structure exacte de ta table ainsi que le code complet de ta page !
jawadov11
Messages postés
36
Date d'inscription
lundi 27 mai 2019
Statut
Membre
Dernière intervention
3 février 2020
> jordane45
Messages postés
27636
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 février 2020

aucun résultat
jawadov11
Messages postés
36
Date d'inscription
lundi 27 mai 2019
Statut
Membre
Dernière intervention
3 février 2020
> jordane45
Messages postés
27636
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 février 2020

toujours le même problème je veux savoir pourquoi $ill est vide sur le insert et sur le echo j'ai angine
Messages postés
27636
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 février 2020
2 124
Tu sais lire ou tu as du mal ???

montre-nous ton code corrigé ainsi que la structure de ta table ce n'est pourtant pas compliqué à comprendre.
jawadov11
Messages postés
36
Date d'inscription
lundi 27 mai 2019
Statut
Membre
Dernière intervention
3 février 2020

pas besoin de tout expliquer je croi la table est claire sur le insert tout est varchar et le code et sur pc pas lié à internet mais le problème et just dans ce que j'ai envoyé
Messages postés
27636
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 février 2020
2 124
si tu as pris le code que je t'ai donné et que ton écho et bon si tu ne veux pas faire l'effort de suivre les conseils qu'on te donne débrouille-toi on ne pourra rien pour toi
jawadov11
Messages postés
36
Date d'inscription
lundi 27 mai 2019
Statut
Membre
Dernière intervention
3 février 2020

j'ai fait ton code à la lettre mais toujours le même problème
jordane45
Messages postés
27636
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 février 2020
2 124 > jawadov11
Messages postés
36
Date d'inscription
lundi 27 mai 2019
Statut
Membre
Dernière intervention
3 février 2020

Montre ton code modifié et un show create de ta table...
Verifie également si ton fichier php est bien encode en utf8 sans bom
Et pour finir montre nous ce qu'affiche exactement ton echo
Messages postés
36
Date d'inscription
lundi 27 mai 2019
Statut
Membre
Dernière intervention
3 février 2020

$ill=!empty($_GET['ill']) ? $mysqli->real_escape_string($_GET['ill']):"";
$mal=$ill;
echo $mal;
if(isset($_POST['save'])){
if (isset($_POST['nom'])){
 $nom=$_POST['nom'];}
 if (isset($_POST['prenom'])){
 $prenom=$_POST['prenom'];}
 if (isset($_POST['date_n'])){
 $date_n=$_POST['date_n'];}
$req="INSERT INTO autre (nom,prenom,date_n,ill) VALUES ('$nom',
'$prenom','$date_n','$mal')";
echo $req;}

le premier echo affiche angine le second mal est vide

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
jordane45
Messages postés
27636
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 février 2020
2 124
Bon...
Déjà.. merci d'utiliser les BALISES DE CODE pour poster ton code sur le forum.


Mais.. on avance...
Désormais on peut voir que tu envois les autres données en POST.

Je suppose donc, que le "premier" echo dont tu parles est celui qui apparait lorsque tu affiches ta page.... et que le "second" echo c'est celui qui apparait une fois que tu as submit le formulaire...
Il est donc à parier que tu n'envois pas la variable iil dans l'url du formulaire.....

On en revient donc à mes premières questions..... MONTRE NOUS LE CODE COMPLET DE TA PAGE !!!!

C'est pas possible d'être aussi têtu ! ....
Si on te demande ce genre d'informations c'est justement qu'on a un doute sur l'origine de ton problème.....

Et puis.. il serait bien que tu commences à appliquer les exemples qu'on te donne.
Typiquement, ton code actuel devrait ressembler à ça
$mal=!empty($_GET['ill']) ? $mysqli->real_escape_string($_GET['ill']):"";
echo $mal;
if(isset($_POST['save'])){
  $nom=!empty($_POST['nom']) ? $mysqli->real_escape_string($_POST['nom']):"";
  $prenom=!empty($_POST['prenom']) ? $mysqli->real_escape_string($_POST['prenom']):"";
  $date_n=!empty($_POST['date_n']) ? $mysqli->real_escape_string($_POST['date_n']):"";

  $req="INSERT INTO autre (nom,prenom,date_n,ill) VALUES ('$nom','$prenom','$date_n','$mal')";
  echo $req;
} 

ça ne résolvera pas ton souci qui n'est en aucun cas lié à ce code... mais à la façon dont tu enovois ton formulaire (et tes variables ).
jawadov11
Messages postés
36
Date d'inscription
lundi 27 mai 2019
Statut
Membre
Dernière intervention
3 février 2020
> jordane45
Messages postés
27636
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 février 2020

le problème est dans la variable ill mon ami a part ça tout fonctionne
jordane45
Messages postés
27636
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 février 2020
2 124 > jawadov11
Messages postés
36
Date d'inscription
lundi 27 mai 2019
Statut
Membre
Dernière intervention
3 février 2020

Tu es en train de me troller ou vraiment tu ne comprends pas ce qu' on te dit ???
j'ai bien vu où était ton problème mais toi as-tu lu les réponses que je t'ai donné et ce que je t'ai demandé de nous fournir ?
ne reviens pas nous voir tant que tu ne seras pas décidé à nous donner les éléments qu'on te demande.
Messages postés
36
Date d'inscription
lundi 27 mai 2019
Statut
Membre
Dernière intervention
3 février 2020

le problème est dans la variable ill mon ami a part ça tout fonctionne insert passe bien mais avec ill vide
jordane45
Messages postés
27636
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 février 2020
2 124
Tu ne sais pas lire... avoue....
e problème est dans la variable ill mon ami

ON LE SAIT que c'est ta variable ill qui te pose problème !!! ça fait 15 fois que tu nous le dis... on a compris !

Mais ton souci... ne vient pas du code que tu nous montres

Le souci vient de la façon dont tu transmets tes variables entre ton formulaire ( en POST ) et ta satanée variable que tu essaies de récupérer en GET ...

Donc, (c'est ta dernière chance avant que je ne ferme cette discussion une bonne fois pour toutes.... )
MONTRE NOUS LE CODE COMPLET et surtout.... ton FORMULAIRE !!!!

J'espère que j'ai été assez clair cette fois !
Messages postés
36
Date d'inscription
lundi 27 mai 2019
Statut
Membre
Dernière intervention
3 février 2020

premiere page:
 <?php


require_once 'pro2.php';

?>


<div class="row justify-content-center">
<form action="pro2.php" method="POST" oninput="">
<input type="hidden" name="id" value="<?php echo $id; ?>">

<table > <td colspan=10 align="left" style="margine:10px;padding:5px" >
<div class="form_group">
<label>Numero dossier :         </label>
<input type="text" name="num_dossier" value="<?php echo $num_dossier; ?>" class="form_control" placeholder=" ">
</div>
<div class="form_group">
<label>Nom :                          </label>
<input type="text" name="nom" class="form_control" value="<?php echo $nom; ?>" placeholder="" >
</div>
<div class="form_group">
<label>Prenom :                     </label>
<input type="text" name="prenom" class="form_control" value="<?php echo $prenom; ?>" placeholder="" >
</div>

<div class="form_group">
<label>Date naissance</label>
:          
<input type="date" name="date_n" value="<?php echo $date_n; ?>" class="form_control" placeholder="">
</div>


2 eme page pro2.php:

$ill=!empty($_GET['ill']) ? $mysqli->real_escape_string($_GET['ill']):"";
$mal=$ill;
echo $mal;
if(isset($_POST['save'])){
if (isset($_POST['nom'])){
$nom=$_POST['nom'];}
if (isset($_POST['prenom'])){
$prenom=$_POST['prenom'];}
if (isset($_POST['date_n'])){
$date_n=$_POST['date_n'];}
$req="INSERT INTO autre (nom,prenom,date_n,ill) VALUES ('$nom',
'$prenom','$date_n','$mal')";
echo $req;}
jawadov11
Messages postés
36
Date d'inscription
lundi 27 mai 2019
Statut
Membre
Dernière intervention
3 février 2020

et dans mon index j'ai un lien qui va vers patient.php?ill=angine qui est la première page
NHenry
Messages postés
14652
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 février 2020
204 > jawadov11
Messages postés
36
Date d'inscription
lundi 27 mai 2019
Statut
Membre
Dernière intervention
3 février 2020

Soit tu n'as pas tout mis, soit c'est clairement pas bon.
En essayant sur mon serveur,
il me crache une erreur sur "$mysqli->real_escape_string" (normal $mysqli n'est pas initialisé)
Si je retire cet appel, il manque le "</form>" de ton formulaire ainsi que le bouton de validation de celui-ci.
Il manque aussi le champ "save".

Après modification, le code semble fonctionner :
<?php 

$ill=!empty($_GET['ill']) ? $_GET['ill']:"";
$mal=$ill;
echo $mal;
if(isset($_POST['save']))
{
	if (isset($_POST['nom']))
	{
		$nom=$_POST['nom'];
	}
	if (isset($_POST['prenom']))
	{
		$prenom=$_POST['prenom'];
	}
	if (isset($_POST['date_n']))
		{
		$date_n=$_POST['date_n'];
	}
	$req="INSERT INTO autre (nom,prenom,date_n,ill) VALUES ('$nom',
	'$prenom','$date_n','$mal')";
	echo $req;
} ?>

<div class="row justify-content-center">
<form action="#" method="POST" oninput="">
<input type="hidden" name="id" value="<?php echo $id; ?>">

<div class="form_group">
<label>Numero dossier :         </label>
<input type="text" name="num_dossier" value="<?php echo $num_dossier; ?>" class="form_control" placeholder=" ">
</div>
<div class="form_group">
<label>Nom :                          </label>
<input type="text" name="nom" class="form_control" value="<?php echo $nom; ?>" placeholder="" >
</div>
<div class="form_group">
<label>Prenom :                     </label>
<input type="text" name="prenom" class="form_control" value="<?php echo $prenom; ?>" placeholder="" >
</div>

<div class="form_group">
<label>Date naissance</label>
:          
<input type="date" name="date_n" value="<?php echo $date_n; ?>" class="form_control" placeholder="">
</div>

<input type="hidden" name="save" value="123" />

<input type="submit" />
</form>
jordane45
Messages postés
27636
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 février 2020
2 124 > NHenry
Messages postés
14652
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 février 2020

Il manquera quand même l'insertion au final...
Donc il faut laisser le real escape et inclure la connexion à la bdd.