Ajout d'une ligne dans une base de données (php)
haikei00X
Messages postés
67
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour à tous,
Je suis débutante en php/MySQL et on m'a accordé la tache de gérer une base de données MySQL à partir d'un code php. J'ai trouvé un soucis lors de l'ajout d'une ligne dans ma base.
Voici mon code:
Le problème c'est que ce code ci-dessus m'a permis d'ajouter des lignes dans certaines bases (celles qui contiennent des int et des float par exemples seulement )et
dans d'autres non (celles où il y a des chaines de caractères).
Je crois que j'ai un problème dans les variables plus précisément la manière avec laquelle je les ai interféré dans le code SQL.
Pouvez-vous s'il vous plaît m'aider sur ce coup là.
Merci d'avance.
Je suis débutante en php/MySQL et on m'a accordé la tache de gérer une base de données MySQL à partir d'un code php. J'ai trouvé un soucis lors de l'ajout d'une ligne dans ma base.
Voici mon code:
<html>
<?php
$link=mysql_connect("localhost","root","");
if(!$link)
{
die('Erreur connexion'.mysql_error());
}
$Db_Select=mysql_select_db('shop',$link);
if(!$Db_Select)
{
die('Base non trouvée'.mysql_error());
}
$tab=$_POST['Table'];
$val1=$_POST['Value1'];
$val2=$_POST['Value2'];
$val3=$_POST['Value3'];
$val4=$_POST['Value4'];
$val5=$_POST['Value5'];
if( $tab='clients')
{
$sql= "INSERT INTO ".$tab." VALUES (".$val1." ,".$val2." ,".$val3." ,".$val4." ,".$val5." ) " or die ('SQL ERROR'.$sql.mysql_error() );
$req=mysql_query($sql);
if(isset($req) )
{
echo 'Ajout effectue';
}
else
{
echo 'Erreur Ajout non effectue';
}
}
if( $tab='commandes')
{
$sql= "INSERT INTO ".$tab." VALUES (".$val1." ,".$val2." ,".$val3." ) " or die ('SQL ERROR'.$sql.mysql_error() );
$req=mysql_query($sql);
if(isset($req) )
{
echo 'Ajout effectue';
}
else
{
echo 'Erreur Ajout non effectue';
}
}
if( $tab='produits')
{
$sql= "INSERT INTO ".$tab." VALUES (".$val1." ,".$val2." ,".$val3." ) " or die ('SQL ERROR'.$sql.mysql_error() );
$req=mysql_query($sql);
if(isset($req) )
{
echo 'Ajout effectue';
}
else
{
echo 'Erreur Ajout non effectue';
}
}
?>
<form Method="POST" Action="ajout.php">
<input type=submit name=bouton value="Go Back">
</form>
<form Method="POST" Action="connect.php">
<input type=submit name=bouton value=Menu>
</form>
</html>
Le problème c'est que ce code ci-dessus m'a permis d'ajouter des lignes dans certaines bases (celles qui contiennent des int et des float par exemples seulement )et
dans d'autres non (celles où il y a des chaines de caractères).
Je crois que j'ai un problème dans les variables plus précisément la manière avec laquelle je les ai interféré dans le code SQL.
Pouvez-vous s'il vous plaît m'aider sur ce coup là.
Merci d'avance.
A voir également:
- Ajout d'une ligne dans une base de données (php)
- Partage de photos en ligne - Guide
- Base de registre - Guide
- Aller à la ligne dans une cellule excel - Guide
- Mètre en ligne - Guide
- Supprimer les données de navigation - Guide
2 réponses
Bonjour,
il faut regarder quel est le format des variables pour chacune des colonnes des tables.
Si on donne des chiffres dans une colonne qui doit recevoir du text çà ne pose pas de problème.
Mais l'inverse oui.
Je vois que dans certaines requête insert into tu ne mets pas le nom des colonnes. Il faut aussi faire attention au fait que tes tables n'ont pas forcement le même nombre de colonnes.
A ta place, je ferai une requête insert into pour chaque table.
il faut regarder quel est le format des variables pour chacune des colonnes des tables.
Si on donne des chiffres dans une colonne qui doit recevoir du text çà ne pose pas de problème.
Mais l'inverse oui.
Je vois que dans certaines requête insert into tu ne mets pas le nom des colonnes. Il faut aussi faire attention au fait que tes tables n'ont pas forcement le même nombre de colonnes.
A ta place, je ferai une requête insert into pour chaque table.
Bonjour
Dans une requête SQL, les valeurs de types texte (VARCHAR et autres TEXT) doivent être mises entre apostrophes ou double quotes.
Quand tu écris
et que $val1 contient toto, ta requête devient
Tu aurais donc dû écrire comme requête :
Bien sûr, ceci s'applique à tous les champs de ta requête.
Tu peux le faire sans danger pour les valeurs numériques aussi, ce qui t'évite d'avoir à faire attention au type de champ : mets systématiquement ces apostrophes.
Par contre, j'ai bien dit de les mettre autour des valeurs : pas autour des noms de tables ou de champs.
Dans une requête SQL, les valeurs de types texte (VARCHAR et autres TEXT) doivent être mises entre apostrophes ou double quotes.
Quand tu écris
$sql= "INSERT INTO matab VALUES (".$val1.")";
et que $val1 contient toto, ta requête devient
INSERT INTO matab VALUES (toto)alors qu'il faudrait
INSERT INTO matab VALUES ('toto')
Tu aurais donc dû écrire comme requête :
$sql= "INSERT INTO matab VALUES ('".$val1."')";
Bien sûr, ceci s'applique à tous les champs de ta requête.
Tu peux le faire sans danger pour les valeurs numériques aussi, ce qui t'évite d'avoir à faire attention au type de champ : mets systématiquement ces apostrophes.
Par contre, j'ai bien dit de les mettre autour des valeurs : pas autour des noms de tables ou de champs.