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

Eléphant du PHP | 111 Messages

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.

Mammouth du PHP | 881 Messages

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.
Soyez artisans de paix

Eléphant du PHP | 111 Messages

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?

Mammouth du PHP | 2703 Messages

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 ?

Mammouth du PHP | 881 Messages

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'.")";
Soyez artisans de paix

Eléphant du PHP | 111 Messages

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...

Eléphant du PHP | 111 Messages

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 :?

Mammouth du PHP | 1029 Messages

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.
L'expérience est la somme de toutes nos erreurs.

Eléphant du PHP | 111 Messages

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 } ?>