Modifier base de données [Résolu/Fermé]

Signaler
Messages postés
67
Date d'inscription
dimanche 20 juillet 2014
Statut
Membre
Dernière intervention
11 janvier 2016
-
Messages postés
67
Date d'inscription
dimanche 20 juillet 2014
Statut
Membre
Dernière intervention
11 janvier 2016
-
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

Messages postés
2371
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
13 janvier 2021
444
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
67
Date d'inscription
dimanche 20 juillet 2014
Statut
Membre
Dernière intervention
11 janvier 2016
2
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>
Messages postés
838
Date d'inscription
vendredi 2 novembre 2012
Statut
Membre
Dernière intervention
17 décembre 2015
122
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 ?
Messages postés
67
Date d'inscription
dimanche 20 juillet 2014
Statut
Membre
Dernière intervention
11 janvier 2016
2
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.
Messages postés
67
Date d'inscription
dimanche 20 juillet 2014
Statut
Membre
Dernière intervention
11 janvier 2016
2
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.
Messages postés
2295
Date d'inscription
mercredi 25 février 2009
Statut
Membre
Dernière intervention
22 juillet 2019
191
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...
Messages postés
1051
Date d'inscription
jeudi 20 juin 2013
Statut
Membre
Dernière intervention
22 décembre 2017
135
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
Messages postés
67
Date d'inscription
dimanche 20 juillet 2014
Statut
Membre
Dernière intervention
11 janvier 2016
2
C'est bon la solution de Thorak83 a marché.
Merci énormément à vous tous pour votre aide.