[PHP/MYSQL] Insert into

Résolu/Fermé
touillettes - 7 août 2009 à 14:16
 Azzed60 - 21 mars 2012 à 11:56
Bonjour,
depuis ce matin je traine sur un probléme avec un insert into en php voila le code :

<?php
include("_menuadm.php");
connect();
selectBase();



$host=$_POST['host'];
$hostph=$_POST['host_ph'];
$site=$_POST['site'];
$infra=$_POST['infra'];
$metier=$_POST['metier'];
$os=$_POST['os'];
$etat=$_POST['etat_prod'];
$dmx=$_POST['dmx'];
$high=$_POST['svc_high'];
$mid=$_POST['svc_mid'];
$iogrp=$_POST['svc_iogrp'];
$hba_mod=$_POST['hba_mod'];
$hba_code=$_POST['hba_code'];
$hba_drive=$_POST['hba_drive'];
$sdd=$_POST['vers_sdd'];
$comm=$_POST['comm'];
$contact=$_POST['contact'];
echo "host = $host host ph = $hostph site = $site infra = $infra metier = $metier os = $os etat = $etat dmx = $dmx
high = $high mid=$mid iogrp = $iogrp hba mod = $hba_mod hba code=$hba_code drive = $hba_drive sdd=$sdd comm=$comm
contact = $contact<br><br><br>";

$query = 'INSERT INTO san VALUES("", "'.$host.'", "'.$site.'", "'.$hostph.'", "'.$infra.'", "'.$metier.'", "'.$os.'", "'.$etat.'", "'.$dmx.'", "'.$high.'", "'.$mid.'", "'.$dmx.'+'.$high.'+'.$mid.'", "'.$iogrp.'", "'.$comm.'", "'.$contact.'", "'.$hba_mod.'", "'.$hba_code.'", "'.$hba_drive.'", "'.$sdd.'")'; // exemple de création de requete

if(!empty($host))
{
mysql_query($query);
echo "Ajout effectuer vous allez etre redirige";
}
else
echo " Ajout impossible";
?>


tout se passe bien sauf que la requete n'enregistre rien dans ma bdd le premier champs est en autoincrement et il ya un champ (total) qui est égal a l'addition de 3 autres champs (dmx, svc_high, svc_mid).
Voyez vous une erreur flagrante qui ne m'aurai pas sauter au yeux ou mm une erreurs toute petite qui ferai que je voi pas ?
Merci d'avance
A voir également:

11 réponses

gigaga Messages postés 2346 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 22 août 2014 301
7 août 2009 à 14:36
Elle est normale ton erreur, tu n'as pas fait attention aux guillemets et aux quotes.

exemple :
$requete = "insert into maTable (colonne1, colonne2) values ('".valeur1."','".valeur2."')";
1
gigaga Messages postés 2346 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 22 août 2014 301
7 août 2009 à 15:12
Essaie ça :
$query = "INSERT INTO san (id, host, site, host_ph, infra, metier, os, etat_prod, dmx, svc_high, svc_mid, total, svc_iogrp, comm, contact, hba_mod, hba_code, hba_drive, vers_sdd)
VALUES('', '".$host."', '".$site."', '".$hostph."', '".$infra."', '".$metier."', '".$os."', '".$etat."', '".$dmx."', '".$high."', '".$mid."', '".$total"', '".$iogrp."', '".$comm."', '".$contact."', '".$hba_mod."', '".$hba_code."', '".$hba_drive."', '".$sdd."')";
1
merci gigaga tu ma aider. mais tu sais comment contrôler un champs de saisi. j'essaie avec isset ou empty
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
7 août 2009 à 14:18
Il ne te retourne aucune erreur ?
0
Non aucune il affiche mon echo puis la phrase défini si Host n'est pas vide et voila ..
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gigaga Messages postés 2346 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 22 août 2014 301
7 août 2009 à 14:22
Normalement c'est comme ça:

insert into <table> (<col1>, <col2>, <col3) values (<val1>, <val2>, <val3>);

Là, tu indiques pas les colonnes... Essaies en indiquant les colonnes?

Ensuite, je crois qu'il y a confusion avec les " et les '. Essaie en inversant les " et les ' (une valeur chaine doit etre entre ' et pas entre ").
Sinon pour la colonne qui l'ajout d'autre, vaut mieux faire le calcul avant.
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
7 août 2009 à 14:24
Tu ne dis que des conneries : Tu n'es pas obligé de définir la structure de la table (tu dois donc faire tous les champs de la table dans VALUES). Pour les apostrophes et les guillemées, ça s'appelle la concaténation.
0
gigaga Messages postés 2346 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 22 août 2014 301 > avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024
7 août 2009 à 14:31
Heuu... tu sais... Je sais ce que je dis, je suis ingé informatique. Ensuite pas obligé d'etre agressif surtout quand on a tord...
1) Voir ici : http://sql.1keydata.com/fr/sql-insert-into.php la syntaxe de l'insert into... Il faut indiquer les colonnes concernés entre ta table et values. Mettre les colonnes, c'est une question de bonnes pratiques...
2) Les valeurs des colonnes doit etre entre ' (simple quote et pas entre guillement), les guillements peuvent etre utilisé pour définir ta chaine (requete) compléte et faire des concaténations notamment pour mettre tes valeurs.

exemple :
$requete = "insert into maTable (colonne1, colonne2) values ('".valeur1."','".valeur2."')";
0
Pour information, même si ce poste date depuis un sacré bout de temps : Je ne suis peut être pas ingé info mais je sais me documenter. Il faut savoir que lorsque que l'on ne précise pas les différentes colonnes il faut préciser les valeurs prises par TOUTES les colonnes. C'est un gain de temps, comme ça si on n'a pas besoin de préciser quelle valeur va à quelle colonne, on peut passer directement à Values.
cordialement et sans agression aucune ;)
0
oK j'éssaye et je revien :)
0
Maintenant j'ai cette erreur :
Parse error: parse error in C:\tools\EasyPHP 3.0\www\SANDW\adm_resadd.php on line 30
<?php
include("_menuadm.php");
connect();
selectBase();



$host=$_POST['host'];
$hostph=$_POST['host_ph'];
$site=$_POST['site'];
$infra=$_POST['infra'];
$metier=$_POST['metier'];
$os=$_POST['os'];
$etat=$_POST['etat_prod'];
$dmx=$_POST['dmx'];
$high=$_POST['svc_high'];
$mid=$_POST['svc_mid'];
$iogrp=$_POST['svc_iogrp'];
$hba_mod=$_POST['hba_mod'];
$hba_code=$_POST['hba_code'];
$hba_drive=$_POST['hba_drive'];
$sdd=$_POST['vers_sdd'];
$comm=$_POST['comm'];
$contact=$_POST['contact'];
echo "host = $host host ph = $hostph site = $site infra = $infra metier = $metier os = $os etat = $etat dmx = $dmx
high = $high mid=$mid iogrp = $iogrp hba mod = $hba_mod hba code=$hba_code drive = $hba_drive sdd=$sdd comm=$comm
contact = $contact<br><br><br>";
$total=$dmx+$high+$mid;

$query = 'INSERT INTO san (id, host, site, host_ph, infra, metier, os, etat_prod, dmx, svc_high, svc_mid, total, svc_iogrp, comm, contact, hba_mod, hba_code, hba_drive, vers_sdd) VALUES("", '".$host."', '".$site."', '".$hostph."', '".$infra."', '".$metier."', '".$os."', '".$etat."', '".$dmx."', '".$high."', '".$mid."', '".$total"', '".$iogrp."', '".$comm."', '".$contact."', '".$hba_mod."', '".$hba_code."', '".$hba_drive."', '".$sdd."')'; // exemple de création de requete

if(!empty($host))
{
mysql_query($query);
echo "Ajout effectuer vous allez etre redirige";
}
else
echo " Ajout impossible";
?>
0
verifier un champs vite ou non vite
0
ba ? il ya quoi qui différe a part que au début tu met un double et moi une simple et quand je met la double sa me fait parse error sinn je fait bien '"$lol"'
non?
0
gigaga Messages postés 2346 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 22 août 2014 301
7 août 2009 à 14:43
La différence est aussi sur tes valeurs!
'".valeur1."'
simple quote puis guillement valeur1 et guillement puis simple quote (avec les points pour concaténer)

Et bien sur guillemet en début et fin de chaine.

Dans ton dernier post, il y a VALUES ("" et non pas VALUES (''
0
pas de $ ?
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
7 août 2009 à 14:58
Si c'est une variable (et c'est le cas), il faut mettre $nomdelavariable. Quand tu ne mets pas $ , tu dois définir la constante.
Exemple :
<?php
$variable = 'Je suis une variable.';
define('constante','Moi, je suis une constante !');
echo 'La variable dit «'.$variable.'» mais la constante lui réponds «'.constante.'»';
?>
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
7 août 2009 à 14:54
Essaye avec ça :
$query = 'INSERT INTO san (id, host, site, host_ph, infra, metier, os, etat_prod, dmx, svc_high, svc_mid, total, svc_iogrp, comm, contact, hba_mod, hba_code, hba_drive, vers_sdd) VALUES("", "'.$host.'", "'.$site.'", "'.$hostph.'", "'.$infra.'", "'.$metier.'", "'.$os.'", "'.$etat.'", "'.$dmx.'", "'.$high.'", "'.$mid.'", "'.$total.'", "'.$iogrp.'", "'.$comm.'", "'.$contact.'", "'.$hba_mod.'", "'.$hba_code.'", "'.$hba_drive.'", "'.$sdd.'")';


@gigaga : Désolé, je n'avais pas lu correctement sa requête et je n'avais pas remarqué qu'il faisait '".$variable.'" au lieu de "'.$variable.'"
0
gigaga Messages postés 2346 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 22 août 2014 301
7 août 2009 à 15:10
Pas de souci ;)
0
et sur les isset t'en sais quelque chose
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
13 mai 2011 à 16:49
Retourne true si la/les variable(s) indiquée(s) en argument existe(nt), et false dans le cas contraire.
Dans le cas où tu indiques plusieurs variables, la fonction ne retourne true que si toutes les variables existent.

Puis le nom est assez clair : is set
Ce qui donne en français : est défini

https://www.php.net/manual/fr/function.isset.php
0