Ajout de ligne sur une DB depuis php ?

Fermé
kirel - Modifié par jordane45 le 2/03/2017 à 12:23
jordane45 Messages postés 38184 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 mai 2024 - 3 mars 2017 à 14:34
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 38184 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 mai 2024 4 670
2 mars 2017 à 12:29
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
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 38184 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 mai 2024 4 670
3 mars 2017 à 14:34
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