Modifier base de données

Résolu
haikei00X Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   -  
haikei00X Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   -
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.
A voir également:

3 réponses

Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
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   Statut Membre Dernière intervention   3
 
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   Statut Membre Dernière intervention   126
 
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   Statut Membre Dernière intervention   3
 
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   Statut Membre Dernière intervention   3
 
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   Statut Membre Dernière intervention   209
 
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   Statut Membre Dernière intervention   156
 
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   Statut Membre Dernière intervention   3
 
C'est bon la solution de Thorak83 a marché.
Merci énormément à vous tous pour votre aide.
0