[RESOLU] Aucune insertion dans la base de donnée

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Aucune insertion dans la base de donnée

Re: Aucune insertion dans la base de donnée

par ISoon » 22 déc. 2015, 12:38

Je me sens vraiment très bête... En fait la ligne id_membre n'éxistait pas dans la table...

Désolé pour la perte de temps...

Resolue :

Code : Tout sélectionner

<?php include('include/mysql.php'); ?> <?php //Si lutilisateur est connecte, on lui donne un lien pour modifier ses informations, pour voir ses messages et un pour se deconnecter if(isset($_SESSION['username'])) { ?> <?php $nbr = $_GET['nbr']; $titre2 = $_GET['titre2']; $id_membre = $_SESSION['userid']; foreach ($_POST["titre"] as $titre) { $sql2 = 'SELECT * FROM serie WHERE titre = "'.$titre2.'"'; $req = mysql_query($sql2) or die('Erreur SQL !<br />'.$sql2.'<br />'.mysql_error()); while ($data = mysql_fetch_array($req)) { $id_serie = $data['id']; echo $titre; echo $id_serie; mysql_query("INSERT INTO episode (id_serie, titre) VALUES ($id_serie, '$titre')"); } } mysql_free_result ($req); ?> <?php header('Location: finish.php'); ?> <?php } else { //Sinon, on lui donne un lien pour sinscrire et un autre pour se connecter ?> <?php header('Location: /connexion.php'); ?> <?php } ?>

Re: Aucune insertion dans la base de donnée

par Maitrepylos » 22 déc. 2015, 11:35

Il me semble avoir lu de remplacer tes fonctions mysql par mysqli, car si tu es sur un hébergement mutualisé type OVH, les fonctions mysql sont supprimés.

Re: Aucune insertion dans la base de donnée

par ISoon » 22 déc. 2015, 11:17

Au fait, il faudrait sortir tes variables PHP de la requête MySQL ainsi:

Code : Tout sélectionner

$requete = "INSERT INTO episode (id_serie, id_membre, titre) VALUES (".$id_serie.", ".$id_membre.",".'$titre'.")";
J'ai testé comme ceci :

Code : Tout sélectionner

<?php include('include/mysql.php'); ?> <?php //Si lutilisateur est connecte, on lui donne un lien pour modifier ses informations, pour voir ses messages et un pour se deconnecter if(isset($_SESSION['username'])) { ?> <?php $nbr = $_GET['nbr']; $titre2 = $_GET['titre2']; $id_membre = $_SESSION['userid']; foreach ($_POST["titre"] as $titre) { $sql2 = 'SELECT * FROM serie WHERE titre = "'.$titre2.'"'; $req = mysql_query($sql2) or die('Erreur SQL !<br />'.$sql2.'<br />'.mysql_error()); while ($data = mysql_fetch_array($req)) { $id_serie = $data['id']; $requete = "INSERT INTO episode (id_serie, id_membre, titre) VALUES (".$id_serie.", ".$id_membre.",".$titre.")"; echo $requete; mysql_query($requete); } } mysql_free_result ($req); ?> <?php } else { //Sinon, on lui donne un lien pour sinscrire et un autre pour se connecter ?> <?php header('Location: /connexion.php'); ?> <?php } ?>
Mais toujours aucune insertion :?

Re: Aucune insertion dans la base de donnée

par ISoon » 22 déc. 2015, 11:16

y-a-t il un ' dans le titre qui doit être inséré quand cela ne fonctionne pas et aucun quand cela fonctionne ?
Il y a aucun ' lors de l'insertion...

Re: Aucune insertion dans la base de donnée

par Patriboom » 22 déc. 2015, 00:58

Au fait, il faudrait sortir tes variables PHP de la requête MySQL ainsi:

Code : Tout sélectionner

$requete = "INSERT INTO episode (id_serie, id_membre, titre) VALUES (".$id_serie.", ".$id_membre.",".'$titre'.")";

Re: Aucune insertion dans la base de donnée

par or 1 » 22 déc. 2015, 00:55

y-a-t il un ' dans le titre qui doit être inséré quand cela ne fonctionne pas et aucun quand cela fonctionne ?

Re: Aucune insertion dans la base de donnée

par ISoon » 22 déc. 2015, 00:36

Si ça a fonctionné antérieurement, il n'y aurait pas de raison de croire que le code ne soit pas bon.
Il faut alors regarder du côté de la table. As-tu un index (ou plusieurs) sur cette table? Y a-t-il des champs qui soient marqués "UNIQUE" ?
Si c'est le cas, il faudra prévoir que des numéros de série et des numéros d'épisode puissent être semblables sans pour autant être identiques, car si ces valeurs sont identiques et que ta table a un index "UNIQUE", la nouvelle inscription sera rejetée.
À ta commande mysql INSERT, tu peux déjà ajouter un "or die " comme tu le fais dans la précédente commande et faire afficher le message d'erreur, ça donnera une piste.

Tu peux aussi faire afficher ta requête à l'écran et la tester telle quelle (copier-coller) dans PhpMySQL ainsi:

Code : Tout sélectionner

$requete = "INSERT INTO episode (id_serie, id_membre, titre) VALUES ($id_serie, $id_membre,'$titre')"; echo $requete; mysql_query($requete);
Songe aussi à passer de mysql à mysqli, car le support aux commandes mysql passent progressivement en déssuétude.
Quand j'echo la requete comme vous avez fait les champs sont bon mais le mysql_query ne marche pas. C'est bizarre l'echo marche nickel, on a les bonnes infos et sa ne s'insère pas. c'est normal?

Re: Aucune insertion dans la base de donnée

par Patriboom » 21 déc. 2015, 23:18

Si ça a fonctionné antérieurement, il n'y aurait pas de raison de croire que le code ne soit pas bon.
Il faut alors regarder du côté de la table. As-tu un index (ou plusieurs) sur cette table? Y a-t-il des champs qui soient marqués "UNIQUE" ?
Si c'est le cas, il faudra prévoir que des numéros de série et des numéros d'épisode puissent être semblables sans pour autant être identiques, car si ces valeurs sont identiques et que ta table a un index "UNIQUE", la nouvelle inscription sera rejetée.
À ta commande mysql INSERT, tu peux déjà ajouter un "or die " comme tu le fais dans la précédente commande et faire afficher le message d'erreur, ça donnera une piste.

Tu peux aussi faire afficher ta requête à l'écran et la tester telle quelle (copier-coller) dans PhpMySQL ainsi:

Code : Tout sélectionner

$requete = "INSERT INTO episode (id_serie, id_membre, titre) VALUES ($id_serie, $id_membre,'$titre')"; echo $requete; mysql_query($requete);
Songe aussi à passer de mysql à mysqli, car le support aux commandes mysql passent progressivement en déssuétude.

Aucune insertion dans la base de donnée

par ISoon » 21 déc. 2015, 21:05

Bonjour,

J'ai créé une insertion dans la base de donnée, en fait le client choisit un chiffre ensuite, il y a plusieurs input qui s'affiche. Par exemple, si la personne mets 13, il y a 13 inputs qui s'affichent.

Ensuite dans les inputs, les personnes doivent mettre des titres mais chacun sont différents.

Voici l'étape 2, c'est le chiffre :

Code : Tout sélectionner

<?php include('include/mysql.php'); $titre = $_GET['titre']; ?> <center><div style="width:800px; border:1px solid grey"> <h1>Ajout d'une série</h1><br/> Etape 2/4 : Création des épisodes<br/><br/> <br/><br/> <form method="post" action="etape3.php?titre=<?php echo $titre; ?>"> <input type="text" name="nbr" style="width:500px;font-size:23px;font-family:Comic Sans MS;border:2px solid grey;border-radius:3px;" placeholder="Combien d'épisode y a t'il dans votre série ?"><br/> <input type="submit" style="border-radius:5px;border:1px solid #FA8258;padding-left:50px;padding-right:50px;color:white;padding-top:15px;padding-bottom:15px;text-decoration:none;background:#FA8258;font-size:21px;font-family:Comic Sans MS;margin-top:15px;" Value="Validé"><br/> </div>
Etape 3 : On mets les textes dans les inputs

Code : Tout sélectionner

<?php include('include/header.php'); ?> <?php $nbr = $_POST["nbr"] ; $titre = $_GET['titre']; ?> <center><div style="width:800px; border:1px solid grey"> <h1>Ajout d'une série</h1><br/> Etape 3/4 : Création des épisodes<br/><br/> <br/><br/> <form method="post" action="etape4.php?nbr=<?php echo $nbr; ?>&titre2=<?php echo $titre; ?>"> <?php echo implode ( "<br/>\n", array_map( function ($v) { $titre = $_GET['titre']; return sprintf("<input type='texte' style='width:500px;font-size:23px;font-family:Comic Sans MS;border:2px solid grey;border-radius:3px;margin-top:5px;' name='titre[]' Value='".$titre." SxxExx'>",$v); }, range(1, $nbr) ) ); ?> <br/><br/> <input type="submit" style="border-radius:5px;border:1px solid #FA8258;padding-left:50px;padding-right:50px;color:white;padding-top:15px;padding-bottom:15px;text-decoration:none;background:#FA8258;font-size:21px;font-family:Comic Sans MS;margin-top:15px;" Value="Validé"><br/> </div>
Etape 4 et dernière : Insertion dans la base de donnée et redirection vers une autre page :
<?php include('include/mysql.php');

?>

<?php
//Si lutilisateur est connecte, on lui donne un lien pour modifier ses informations, pour voir ses messages et un pour se deconnecter
if(isset($_SESSION['username']))
{
?>
   
<?php

   $nbr = $_GET['nbr'];   
    $titre2 = $_GET['titre2'];
     $id_membre = $_SESSION['userid'];

   foreach ($_POST["titre"] as $titre) {
   
            $sql2 = 'SELECT * FROM serie WHERE titre = "'.$titre2.'"';
            $req = mysql_query($sql2) or die('Erreur SQL !<br />'.$sql2.'<br />'.mysql_error());
            while ($data = mysql_fetch_array($req)) {
                $id_serie = $data['id'];
                echo $titre;
                echo $id_serie;
                
                mysql_query("INSERT INTO episode (id_serie, id_membre, titre) VALUES ($id_serie, $id_membre,'$titre')");
                
                 
        }  
        
       
        
    }
    
mysql_free_result ($req);

?>

<?php
header('Location: finish.php');
?>
<?php
}
else
{
//Sinon, on lui donne un lien pour sinscrire et un autre pour se connecter
?>
<?php
header('Location: /connexion.php');
?>
<?php
}
?>

Mais il n'y a aucune insertion dans la base de donnée. Sa a marché pendant quelques jours mais la sa ne marche pu alors que j'ai rien modifié :shock:

J'espere que quelqu'un pourra m'aider merci d'avance.