Modifier base de données

Résolu/Fermé
haikei00X Messages postés 67 Date d'inscription dimanche 20 juillet 2014 Statut Membre Dernière intervention 11 janvier 2016 - Modifié par haikei00X le 28/08/2014 à 17:51
haikei00X Messages postés 67 Date d'inscription dimanche 20 juillet 2014 Statut Membre Dernière intervention 11 janvier 2016 - 29 août 2014 à 15:32
Me voilà encore.
J'ai déjà posé cette question mais je n'ai pas eu de réponses donc je vais reposer la question autrement.Peut être que je n'étais pas très claire.
Je veux modifier ma base de données qui se trouve sur phpMyadmin à l'aide d'un code php.
J'ai réussi à faire cela sauf que j'ai trouvé un soucis en ce qui concerne l'ajout d'une ligne.
Le problème c'est que lorsque la ligne que je veux ajouter figure dans une table où les valeurs des colonnes sont des int/float... l'ajout s'effectue parfaitement.Mais lorsque cet ajout se fait dans une table comme par exemple table clients où on a nom prénom ... (des chaines de caractères) la ligne ne s'ajoute pas.J'ai ce même problème dans la suppression et la modification , il doit sûrement avoir la même source .
Voilà 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( empty($tab) || empty($val1) || empty($val2) || empty($val3) || empty($val4) || empty($val5) )
{
echo 'Champ vide' ;
}
else
{
$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 effectué';
  }
  else
  {
    echo 'Erreur Ajout non effectué';
  }
}

?>


<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>




J'attend impatiemment votre aide.Je bloque vraiment sur ce truc depuis des jours et j'arrive pas avancer.

3 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
29 août 2014 à 11:46
Salut,

Les chaines doivent être entourés de guillemet simple dans une requête SQL :
INSERT INTO table VALUES (45, 'toto', 'chaine')


PS : ne pas oublier mysql_real_escape_string() pour contrer les injections sql, ou passer à PDO avec une requête préparée.

Bonne journée
1
haikei00X Messages postés 67 Date d'inscription dimanche 20 juillet 2014 Statut Membre Dernière intervention 11 janvier 2016 3
Modifié par haikei00X le 29/08/2014 à 15:17
Salut.
j'ai fait ce que vous m'avez recommandé mais toujours le même problème je remet le code pour que vous puissiez voir si c'est ce que je dois faire.

<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( empty($tab) || empty($val1) || empty($val2) || empty($val3) || empty($val4) || empty($val5) )
{
echo 'Champ vide' ;
}
else
{

$val1=mysql_real_escape_string($val1) ;
$val2=mysql_real_escape_string($val2) ;
$val3=mysql_real_escape_string($val3) ;
$val4=mysql_real_escape_string($val4) ;
$val5=mysql_real_escape_string($val5) ;
$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 effectué';
}
else
{
echo 'Erreur Ajout non effectué';
}
}

?>


<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>
0
Nhay Messages postés 838 Date d'inscription vendredi 2 novembre 2012 Statut Membre Dernière intervention 17 décembre 2015 126
Modifié par Nhay le 28/08/2014 à 18:03
Bonjour,
Juste après ta requête
$req=mysql_query($sql);
peut-tu faire un p'tit
echo $sql."<br />".mysql_error();
et nous communiquer les deux lignes affichés ?
0
haikei00X Messages postés 67 Date d'inscription dimanche 20 juillet 2014 Statut Membre Dernière intervention 11 janvier 2016 3
29 août 2014 à 14:57
bonjour Nhay. Je tiens d'abord à vous remercier d'avoir pris la peine de lire mon code.
J'ai fait ce que vous m'avez demandé de faire, je n'ai eu aucun message d'erreur et toujours le même problème,aucune ligne ne s'ajoute à ma base.
0
haikei00X Messages postés 67 Date d'inscription dimanche 20 juillet 2014 Statut Membre Dernière intervention 11 janvier 2016 3
29 août 2014 à 09:47
bonjour Nhay. Je tiens d'abord à vous remercier d'avoir pris la peine de lire mon code.
J'ai fait ce que vous m'avez demandé de faire, je n'ai eu aucun message d'erreur et toujours le même problème,aucune ligne ne s'ajoute à ma base.
0
Fallentree Messages postés 2309 Date d'inscription mercredi 25 février 2009 Statut Membre Dernière intervention 22 juillet 2019 208
29 août 2014 à 13:52
fais nous un echo de $sql et de la structure de ta table pour vous les carottes et les choux ne sont pas melangés...
0
Thorak83 Messages postés 1051 Date d'inscription jeudi 20 juin 2013 Statut Membre Dernière intervention 22 décembre 2017 156
Modifié par Thorak83 le 29/08/2014 à 15:03
Bonjour,

il manque toujours les quottes entres les chaines de caractère comme l'as dit PITET.
Le problème est que votre instruction INSERT est déjà encapsuler par une quotte.

Il suffit de faire ceci:
 $sql= "INSERT INTO ".$tab." VALUES ('".$val1."' ,'".$val2."' ,'".$val3."' ,'".$val4."' ,'".$val5."' ) "  or die ('SQL ERROR'.$sql.mysql_error() );

Remarquez le "
C'est une façon de faire, il y en a d"'autres.

Cordialement
0
haikei00X Messages postés 67 Date d'inscription dimanche 20 juillet 2014 Statut Membre Dernière intervention 11 janvier 2016 3
29 août 2014 à 15:32
C'est bon la solution de Thorak83 a marché.
Merci énormément à vous tous pour votre aide.
0