Ajout de ligne sur une DB depuis php ?

kirel -  
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
Voilà je suis un débutant en php et actuellement j'essaye de faire quelques petits exercice lambda; Malheureusement je suis bloqué..
Pour vous résumé, je tente d'ajouter une nouvelle ligne dans cette table avec des codes prient dans d'autre table:
https://www.noelshack.com/2017-09-1488444640-capture.png
et cela grâce à ces fonctions:
(page "EQnouvelle.php")
 
<form>
 Nom de l'entraineur:
 <input type=text name="nameE"></input><br>
 Catégorie de l'équipe:
 <input type=text name="categorieE"></input><br>
 Nom du club de l'équipe:
 <input type=text name="nameC"></input><br>
 <input type=submit value=Créer></input><br>
   </form>
   <?php
   $nameE=$_GET['nameE'];
            $categorieE=$_GET['categorieE'];
            $nameC=$_GET['nameC'];

   $nameE=codeavecnomE($nameE);
   {}
   $categorieE=codeavecnomC($categorieE);
   {}
   $nameC=codeavecnomCl($nameC);
   {}

   $newteam=newequip($nameE, $categorieE, $nameC);
   {}


  ?>

(page traitementdirecteur.php)
<?php
function codeavecnomE($nameE)
{
  $result = connexion();
  $requete ="select code from administre where nom = '".$nameE."';";
 $resultat = mysqli_query($result,$requete);
 return ($resultat);
}

Function codeavecnomC($categorieE)
{
  $result = connexion();
  $requete ="select code from categorie where libelle = '".$categorieE."';";
 $resultat = mysqli_query($result,$requete);
 return ($resultat);
}

Function codeavecnomCl($nameC)
{
  $result = connexion();
  $requete ="select code from club where libelle = '".$nameC."';";
 $resultat = mysqli_query($result,$requete);
 return ($resultat);
}

function newequip($nameE, $categorieE, $nameC)
{
 $result=connexion();
 $requete="insert into equipe values(26,".$nameE.",".$categorieE.",".$nameC.")";
 $resultat = mysqli_query($result,$requete);
 return ($resultat);
}
?>

[]

EDIT : Ajout du LANGAGE dans les balises de code pour avoir la coloration syntaxique !

et il me marque cette erreur: ) Catchable fatal error: Object of class mysqli_result could not be converted to string in C:\wamp\www\SIG - chalot\traitementDirecteur.php on line 29
Call Stack
# Time Memory Function Location
1 0.0010 138104 {main}( ) ..\EQnouvelle.php:0
2 0.0390 171792 newequip( ) ..\EQnouvelle.php:80

2 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

A quoi correspond la ligne 29 du fichier :

Ensuite... attention avec ton INSERT.
Je suppose que tu as un ID auto-incrementé .. donc tu ne dois pas spécifier le "26".
Et pour les autres champs.. si c'est du texte .. il faut les mettre entre quotes.
Pour finir.. il est conseillé de spécifier les champs dans lesquels tu fais l'insert.
par exemple :
 INSERT INTO tatable (champ1,champ2)
 VALUES ('unevaleur', 'autrechose')


En gros :
 $requete="INSERT INTO equipe (equipe ,categorie,club ) 
VALUES('".$nameE."','".$categorieE."','".$nameC."')";



Je te conseille également de passer par du POST au lieu du GET.

Il faudrait aussi récupérer PROPREMENT les variables AVANT de les utiliser. (comme fait ici avec l'écriture ternaire :https://forums.commentcamarche.net/forum/affich-37636387-php-notice-undefined-index )

0
KireL
 
Bonjour, déjà merci de ta réponse,
la ligne 29:
$requete="insert into equipe values(26,".$nameE.",".$categorieE.",".$nameC.")";


J'ai ensuite fais les modifications comme tu me l'a conseillé mais la même erreur apparait toujours..
http://image.noelshack.com/fichiers/2017/09/1488537288-capture.png

(traitementdirecteur.php)
<?php
function codeavecnomE($nameE)
{
  $result = connexion();
  $requete ="select code from administre where nom = '".$nameE."';";
 $resultat = mysqli_query($result,$requete);
 return ($resultat);
}

Function codeavecnomC($categorieE)
{
  $result = connexion();
  $requete ="select code from categorie where libelle = '".$categorieE."';";
 $resultat = mysqli_query($result,$requete);
 return ($resultat);
}

Function codeavecnomCl($nameC)
{
  $result = connexion();
  $requete ="select code from club where libelle = '".$nameC."';";
 $resultat = mysqli_query($result,$requete);
 return ($resultat);
}

function newequip($nameE, $categorieE, $nameC)
{
 $result=connexion();
  $requete="INSERT INTO equipe (equipe ,categorie,club ) 
VALUES('".$nameE."','".$categorieE."','".$nameC."')";
 //$requete="insert into equipe (equipe ,categorie,club) values(".$nameE.",".$categorieE.",".$nameC.")";
 $resultat = mysqli_query($result,$requete);
 return ($resultat);
}
?>


EQnouvelle.php
  <?php
   //$nameE=$_POST['nameE'];
            //$categorieE=$_POST['categorieE'];
            //$nameC=$_POST['nameC'];
   $nameE = !empty($_POST['nameE']) ? $_POST['nameE'] : NULL;
   $categorieE = !empty($_POST['categorieE']) ? $_POST['categorieE'] : NULL;
   $nameC = !empty($_POST['nameC']) ? $_POST['nameC'] : NULL;

   $nameE=codeavecnomE($nameE);
   {}
   $categorieE=codeavecnomC($categorieE);
   {}
   $nameC=codeavecnomCl($nameC);
   {}

   $newteam=newequip($nameE, $categorieE, $nameC);
   {}


  ?>

[]

EDIT : Ajout du LANGAGE dans les balises de code

0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Dans tes fonctions tu fais :
$resultat = mysqli_query($result,$requete);
 return ($resultat);


Sauf que pour que le résultat soit "utilisable" ... tu dois en faire un FETCH
https://www.php.net/manual/fr/mysqli-result.fetch-assoc.php
0