Erreur de codage,dans la base de donnée la modification fonctionne, mais pas la

Résolu
sebing Messages postés 144 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 3 novembre 2010 - 22 oct. 2009 à 12:15
sebing Messages postés 144 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 3 novembre 2010 - 24 oct. 2009 à 13:46
Bonjour,
Je n'arrive pas a trouver mon erreur, la modification fonctionne mais pas la création d'une nouvelle entrée dans une table.
Pouvez vous me venir en aide svp?
Voici les codes:
 //-----------------------------------------------------
// Vérification 1 : y a t'il des nageurs?
//-----------------------------------------------------
if (isset($_POST['nom']) AND isset($_POST['nl50']) AND isset($_POST['nl100']) AND isset($_POST['nl200']) AND isset($_POST['b50']) AND isset($_POST['b100']) AND isset($_POST['b200']) AND isset($_POST['pap50']) AND isset($_POST['pap100']) AND isset($_POST['pap200'])AND isset($_POST['dos50']) AND isset($_POST['dos100']) AND isset($_POST['dos200']) AND isset($_POST['n4_100']) AND isset($_POST['n4_200']))
{
    $nom =  mysql_real_escape_string($_POST['nom']);
$nl50 = mysql_real_escape_string($_POST['nl50']);
$nl100 = mysql_real_escape_string($_POST['nl100']);
$nl200 = mysql_real_escape_string($_POST['nl200']);
$b50 = mysql_real_escape_string($_POST['b50']);
$b100 = mysql_real_escape_string($_POST['b100']);
$b200 = mysql_real_escape_string($_POST['b200']);
$pap50 = mysql_real_escape_string($_POST['pap50']);
$pap100 = mysql_real_escape_string($_POST['pap100']);
$pap200 = mysql_real_escape_string($_POST['pap200']);
    $dos50 = mysql_real_escape_string($_POST['dos50']);
$dos100 = mysql_real_escape_string($_POST['dos100']);
$dos200 = mysql_real_escape_string($_POST['dos200']);	 
$n4_100 = mysql_real_escape_string($_POST['n4_100']);
$n4_200 = mysql_real_escape_string($_POST['n4_200']);	

    // On vérifie si c'est une creation de compet ou pas
    if ($_POST['id_compet_maurepas'] == 0)
    {
        // Ce n'est pas une modification, on crée une nouvelle entrée dans la table
         mysql_query("INSERT INTO compet_maurepas VALUES('', '" . $nom . "', '" . $nl50 . "', '" . $b50 . "', '" . $pap50 . "', '" . $dos50 . "', '" . $nl100 . "', '" . $pap100 . "', '" . $dos100 . "', '" . $n4_100 . "', '" . $nl200 . "', '" . $pap200 . "', '" . $dos200 . "', '" . $n4_200 . "')");
    }
    else
    {
        // On protège la variable "id_membres" pour éviter une faille SQL
        $_POST['id_compet_maurepas'] = mysql_real_escape_string($_POST['id_compet_maurepas']);
        // C'est une modification, on peut tout mettre à jour
         mysql_query("UPDATE compet_maurepas SET nom='" . $nom . "', nl50='" . $nl50 . "', b50='" . $b50 . "', pap50='" . $pap50 . "', dos50='" . $dos50 . "', nl100='" . $nl100 . "', pap100='" . $pap100 . "', dos100='" . $dos100 . "', n4_100='" . $n4_100 . "', nl200='" . $nl200 . "', pap200='" . $pap200 . "', dos200='" . $dos200 . "', n4_200='" . $n4_200 . "' WHERE id='" . $_POST['id_compet_maurepas'] . "'");
    }
}
 
//--------------------------------------------------------
// Vérification 2 : est-ce qu'on veut supprimer un nageurs?
//--------------------------------------------------------
if (isset($_GET['supprimer_compet_maurepas'])) // Si on demande de supprimer un membre
{
    // Alors on supprime le membre correspondant
    // On protège la variable "id_membres" pour éviter une faille SQL
    $_GET['supprimer_compet_maurepas'] = mysql_real_escape_string($_GET['supprimer_compet_maurepas']);
    mysql_query('DELETE FROM compet_maurepas WHERE id=\'' . $_GET['supprimer_compet_maurepas'] . '\'');
}
?>
 Nom  |
50NL |
50B |
50PAP |
50DOS |
100NL |
100B |
100PAP |
100DOS |
100 4N |
200NL |
200B |
200PAP |
200DOS |
200 4N |
Modifier |
supprimer |

<?php
$retour  = mysql_query('SELECT * FROM compet_maurepas ORDER BY nom');
while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les nageurs
{
?>
----

<?php echo stripslashes($donnees['nom']); ?>,
<?php echo stripslashes($donnees['nl50']); ?>,
<?php echo stripslashes($donnees['b50']); ?>,
<?php echo stripslashes($donnees['pap50']); ?>,
<?php echo stripslashes($donnees['dos50']); ?>,
<?php echo stripslashes($donnees['nl100']); ?>,
<?php echo stripslashes($donnees['b100']); ?>,
<?php echo stripslashes($donnees['pap100']); ?>,
<?php echo stripslashes($donnees['dos100']); ?>,
<?php echo stripslashes($donnees['n4_100']); ?>,
<?php echo stripslashes($donnees['nl200']); ?>,
<?php echo stripslashes($donnees['b200']); ?>,
<?php echo stripslashes($donnees['pap200']); ?>,
<?php echo stripslashes($donnees['dos200']); ?>,
<?php echo stripslashes($donnees['n4_200']); ?>,
<?php echo ''; ?>modifier,
<?php echo ''; ?>Supprimer,

<?php
} // Fin de la boucle qui liste les nageurs
?>


La page pour modifier ou créer
if (isset($_GET['modifier_compet_maurepas'])) // Si on demande de modifier un matchs
{

    // On protège la variable "modifier_compet_maurepas" pour éviter une faille SQL
    $_GET['modifier_compet_maurepas'] = mysql_real_escape_string(htmlspecialchars($_GET['modifier_compet_maurepas']));
    // On récupère les infos des nageurs correspondants
    $retour = mysql_query('SELECT * FROM compet_maurepas WHERE id=\'' . $_GET['modifier_compet_maurepas'] . '\'');
    $donnees = mysql_fetch_array($retour);
    
    // On place les informations dans des variables simples
    $nom = stripslashes($donnees['nom']);
    $nl50 = stripslashes($donnees['nl50']);
$b50 = stripslashes($donnees['b50']);
$pap50 = stripslashes($donnees['pap50']);
$dos50 = stripslashes($donnees['dos50']);
$nl100 = stripslashes($donnees['nl100']);
$b100 = stripslashes($donnees['b100']);
$pap100 = stripslashes($donnees['pap100']);
$dos100 = stripslashes($donnees['dos100']);
$n4_100 = stripslashes($donnees['n4_100']);
$nl200 = stripslashes($donnees['nl200']);
$b200 = stripslashes($donnees['b200']);
$pap200 = stripslashes($donnees['pap200']);
$dos200 = stripslashes($donnees['dos200']);
$n4_200 = stripslashes($donnees['n4_200']);
$id_compet_maurepas = $donnees['id']; // Cette variable va servir pour se souvenir que c'est une modification
}
else // C'est qu'on rédige un nouveau matchs
{
    // Les variables $  sont vides, puisque c'est un nouveau nageur
$nom = '';
    $nl50 = '';
$b50 = '';
$pap50 = '';
$dos50 = '';
$nl100 = '';
$b100 = '';
$pap100 = '';
$dos100 = '';
$n4_100 = '';
$nl200 = '';
$b200 = '';
$pap200 = '';
$dos200 = '';
$n4_200 = '';
$id_compet_maurepas = 0; // La variable vaut 0, donc on se souviendra que ce n'est pas une modification
    }

?>
<form action="liste_maurepas.php" method="post">


Nom:" />

50nl:<select name="nl50">
         <option <?php if($nl50 == "NON") { echo 'selected'; } ?>>NON</option>
<option <?php if($nl50 == "OUI") { echo 'selected'; } ?>>OUI</option>
 </select>

50 BRASSE:<select name="b50">
        <option <?php if($b50 == "NON") { echo 'selected'; } ?>>NON</option>
<option <?php if($b50 == "OUI") { echo 'selected'; } ?>>OUI</option>
 </select>

50PAP:<select name="pap50">
        <option <?php if($pap50 == "NON") { echo 'selected'; } ?>>NON</option>
<option <?php if($pap50 == "OUI") { echo 'selected'; } ?>>OUI</option>
 </select>

50DOS:<select name="dos50">
        <option <?php if($dos50 == "NON") { echo 'selected'; } ?>>NON</option>
<option <?php if($dos50 == "OUI") { echo 'selected'; } ?>>OUI</option>
 </select>

100nl:<select name="nl100">
        <option <?php if($nl100 == "NON") { echo 'selected'; } ?>>NON</option>
<option <?php if($nl100 == "OUI") { echo 'selected'; } ?>>OUI</option>
 </select>

100 BRASSE:<select name="b100">
       <option <?php if($b100 == "NON") { echo 'selected'; } ?>>NON</option>
    <option <?php if($b100 == "OUI") { echo 'selected'; } ?>>OUI</option>
 </select>

100 PAP:<select name="pap100">
        <option <?php if($pap100 == "NON") { echo 'selected'; } ?>>NON</option>
<option <?php if($pap100 == "OUI") { echo 'selected'; } ?>>OUI</option>
 </select>

100 DOS:<select name="dos100">
        <option <?php if($dos100 == "NON") { echo 'selected'; } ?>>NON</option>
<option <?php if($dos100 == "OUI") { echo 'selected'; } ?>>OUI</option>
 </select>

100 4 NAGES:<select name="n4_100">
        <option <?php if($n4_100 == "NON") { echo 'selected'; } ?>>NON</option>
<option <?php if($n4_100 == "OUI") { echo 'selected'; } ?>>OUI</option>
 </select>

200NL:<select name="nl200">
        <option <?php if($nl200 == "NON") { echo 'selected'; } ?>>NON</option>
<option <?php if($nl200 == "OUI") { echo 'selected'; } ?>>OUI</option>
 </select>

200 BRASSE:<select name="b200">
        <option <?php if($b200 == "NON") { echo 'selected'; } ?>>NON</option>
<option <?php if($b200 == "OUI") { echo 'selected'; } ?>>OUI</option>
 </select>

200 PAP:<select name="pap200">
        <option <?php if($pap200 == "NON") { echo 'selected'; } ?>>NON</option>
<option <?php if($pap200 == "OUI") { echo 'selected'; } ?>>OUI</option>
 </select>

200 DOS:<select name="dos200">
        <option <?php if($dos200 == "NON") { echo 'selected'; } ?>>NON</option>
<option <?php if($dos200 == "OUI") { echo 'selected'; } ?>>OUI</option>
 </select>

200 4 NAGES:<select name="n4_200">
        <option <?php if($n4_200 == "NON") { echo 'selected'; } ?>>NON</option>
<option <?php if($n4_200 == "OUI") { echo 'selected'; } ?>>OUI</option>
 </select>



" />
    
</form>


Merci par avance

Seb

4 réponses

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
24 oct. 2009 à 12:23
Salut Sebing,

Pour être franc j'ai eu la flemme de lire tout le code et vu le nombre de réponses que tu as je ne suis peut être pas le seul

J'ai beau me creuser la date, reprendre encore et encore les codes je ne vois pas

Avant de se "creuser la date" pense à décomposer et à cibler correctement les choses :
[...] mais pas la création d'une nouvelle entrée dans une table

=> tu as donc un pb au niveau de la requête d'insertion :
<?php
mysql_query("INSERT INTO compet_maurepas VALUES('', '" . $nom . "', '" . $nl50 . "', '" . $b50 . "', '" . $pap50 . "', '" . $dos50 . "', '" . $nl100 . "', '" . $pap100 . "', '" . $dos100 . "', '" . $n4_100 . "', '" . $nl200 . "', '" . $pap200 . "', '" . $dos200 . "', '" . $n4_200 . "')");
?>

Cette requête "génère forcement une erreur" ... que tu ne traites pas
Avant toute chose commence donc par là :
<?php
$req = "INSERT INTO compet_maurepas 
VALUES('', '" . $nom . "', '" . $nl50 . "', '" . $b50 . "', 
'" . $pap50 . "', '" . $dos50 . "', '" . $nl100 . "', 
'" . $pap100 . "', '" . $dos100 . "', '" . $n4_100 . "', 
'" . $nl200 . "', '" . $pap200 . "', '" . $dos200 . "', 
'" . $n4_200 . "')";
if (false === mysql_query($req)) die ('Erreur sur la requête :
'.$req.'
'.mysql_error());
?>


Si aucune erreur n'est affichée il y a de fortes chances que les 2 if précédents retournent false.

Cordialement,


Kohntark -
3
sebing Messages postés 144 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 3 novembre 2010
23 oct. 2009 à 10:44
J'ai beau me creuser la date, reprendre encore et encore les codes je ne vois pas
Est-ce que ça peut provenir de ma base de donnée?
Je comprends toujours pas pourquoi les modifications fonctionnes mais pas l'insertion de nouvelles données

Aidez moi s'il vous plait,

Merci par avance

Seb
0
sebing Messages postés 144 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 3 novembre 2010
23 oct. 2009 à 11:19
Je viens de m'apercevoir que dès que je nomme un champs nl50 ça ne marche plus.
La base de données ou autre ne supporterait il pas les chiffres?
0
sebing Messages postés 144 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 3 novembre 2010
24 oct. 2009 à 13:46
Merci beaucoup Kohntark pour ton aide.
En rajoutant ton code une erreur est apparue
"Column count doesn't match value count at row 1"

Aprés recherche sur internet ça veut dire
Cette erreur se produit lorsque vous tentez d'insérer une requête alors que vous n'avez pas spécifié le nombre de champs corrects lors de l'insertion.

J'avais oublié des champs , maintenant tout fonctionne correctement

Merci encore

Bon week-end

Seb
0
Rejoignez-nous