IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

L'insertion sans image ne fonctionne pas


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 124
    Par défaut L'insertion sans image ne fonctionne pas
    Bonjour,

    J'ai plusieurs petits problème avec un code que je fais pour un site en cours:

    Le premier est que j'aimerais pouvoir faire une insertion dans ma BDD avec un formulaire ou il est possible d'uploader une photo. Le probleme c'est que si je ne mets pas d'image l'enregistrement ne sa fait pas. Alors que je devrais pouvoir insérer les infos sans la photo.

    Le deuxième petit problème est que j'aimerais éviter les doublons dans ma BDD. Eviter que le couple nom/prénom ou mail ne soit en double. Malgré des requêtes pour vérifier si les infos sont déjà dans la base, ça ne fonctionne pas.

    Et enfin mon dernier souci est que les messages d'erreur lors du cheminement de toutes les requêtes ne s'affiches pas, il m'affiche juste le dernier, alors que j'ai testé avec des images trops lourdes etc...

    Voilà mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
     
    <fieldset>
    		<legend> Ajout joueurs :</legend>			
    			<p>Tous les champs doivent être remplis</p>
    			<form method="post" enctype="multipart/form-data" name="ajout_joueurs_form" action="admin.php">
    				<table border="0" name="tableau_joueurs">
    					<tr>
    						<td class="legende_ajout">
    							Indiquez son nom :
    						</td>
    						<td>
    							<input type="hidden" name="dispo" value="oui" />
    							<input type="text" name="ajout_nom_joueurs"><br/>
    						</td>
    					</tr>
    					<tr>
    						<td class="legende_ajout">
    							Indiquez son prénom :
    						</td>
    						<td>
    							<input type="text" name="ajout_prenom_joueurs"><br/>
    						</td>
    					</tr>
    					<tr>
    						<td class="legende_ajout">
    							Indiquez sa catégorie:
    						</td>
    						<td>
    							<input type="text" name="ajout_categorie_admin"><br/>
    						</td>
    					</tr>
    					<tr>
    						<td class="legende_ajout">
    							Indiquez son adresse mail :
    						</td>
    						<td>
    							<input type="texte" name="ajout_joueur_mail">
    						</td>
    					</tr>
    					<tr>
    						<td class="legende_ajout">
    							Indiquez sa date de naissance :
    						</td>
    						<td>
    							<?php	//Code pour l'insertion de la date
    							$annee = date("Y");
     
    									echo '<select name="jour_joueurs">';
     
    								for($i=1; $i<=31; $i++)
    								{		
    									echo '<option value='.$i.'>'.$i.'</option>';
    								}
    									echo '</select>';
     
    									echo '<select name="mois_joueurs">';
     
    								for($i=1; $i<=12; $i++)
    								{		
    									echo '<option value='.$i.'>'.$i.'</option>';
    								}
    									echo '</select>';
     
    									echo '<select name="annee_joueurs">';
     
    								for($i=$annee; $i>=1950; $i--)
    								{		
    									echo '<option value='.$i.'>'.$i.'</option>';
    								}
    									echo '</select>';
    							?>							
    						</td>
    					</tr>
    					<tr>
    						<td class="ajout_photo_joueurs" colspan="2">
    						<br>
    						Telechargez la photo du joueur (JPG, PNG ou GIF) :
    						</td>
    					</tr>
    					<tr>
    						<td colspan="2" class="ajout_photo_joueur">
    						<br>
    							<input type="hidden" name="MAX_FILE_SIZE" value="10000" />
    							<input type="file" name="ajout_photo_joueur">
    						</td>
    					</tr>
    					<tr>
    							<td class="bouton_ajout_admin">
    							<br/><input type="submit" name="valider_joueurs" value="valider">
    						</td>
    						<td class="bouton_ajout_admin">
    							<br/><input type="reset" value="Effacer">
    						</td>
    					</tr>
    				</table>
    			</form>
     
     
    <?php
    //Code pour l'insertion dans le base de données
     
    if(!empty($_POST['valider_joueurs']) && !empty($_POST['ajout_nom_joueurs']) &&!empty($_POST['ajout_prenom_joueurs']) && !empty($_POST['dispo']) && !empty($_POST['ajout_categorie_admin']) && !empty($_POST['ajout_joueur_mail']) )
    	{
             if(!empty($_POST['jour_joueurs']) AND !empty($_POST['mois_joueurs']) AND !empty($_POST['annee_joueurs']) AND checkdate($_POST['mois_joueurs'], $_POST['jour_joueurs'], $_POST['annee_joueurs']))
               $date = $_POST['annee_joueurs'].'-'.str_pad($_POST['mois_joueurs'], 2, 0, STR_PAD_LEFT).'-'.str_pad($_POST['jour_joueurs'], 2, 0, STR_PAD_LEFT);
             else
               $date = '0000-00-00';
     
    		include('cnx.php');
     
    		$nom_joueurs = mysql_real_escape_string($_POST['ajout_nom_joueurs']);
    		$prenom_joueurs = mysql_real_escape_string($_POST['ajout_prenom_joueurs']);
    		$categorie_joueurs = mysql_real_escape_string($_POST['ajout_categorie_admin']);
    		$mail_joueurs = mysql_real_escape_string($_POST['ajout_joueur_mail']);
    		$dispo_joueurs = mysql_real_escape_string($_POST['dispo']);
     
    			$taille_maxi = 10000;//Code pour l'insertion de l'image
    			$dossier = 'joueurs/';
    			$i = rand(1, 100);
    		 	$img_defaut = $dossier.$i."defaut.jpg";//Code pour l'insertion de l'image par défaut
    			$fichier = basename($_FILES['ajout_photo_joueur']['name']);
    			$taille = filesize ($_FILES['ajout_photo_joueur']['tmp_name']);
    			$extensions = array('.png', '.PNG', '', '.gif', '.GIF', '.jpg', '.jpeg', '.JPG', '.JPEG');
    			$extension = strrchr($_FILES['ajout_photo_joueur']['name'], '.');
     
    			if(!empty($fichier))
    			{
     
    			$insertion_joueurs = "INSERT INTO ".$table_1." VALUES ('', '".$nom_joueurs."', '".$prenom_joueurs."', '".$categorie_joueurs."', '".$date."', '".$mail_joueurs."', '".$img_defaut."', '".$dispo_joueurs."') LIMIT 1";
     
    						$ajout_joueurs = mysql_query($insertion_joueurs);
     
    							if($ajout_joueurs)
    							{
    								echo " Insertion Réussie";
    							}
    							else
    							{
    								echo "L'insertion à échoué";
    							}
    				}
    				else
    				{
     
    				if(!in_array($extension, $extensions))
    				{
    					$image_up = '';
    					$erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg. ';
    				}
    				if($taille>$taille_maxi)
    				{
    					$image_up = '';
    					$erreur = 'Le fichier est trop gros';
    				}
    				if(!isset($erreur)) 
    				{
     
    			$fichier = strtr($fichier, 
    					'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
    					'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    			$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
     
    				if(move_uploaded_file($_FILES['ajout_photo_joueur']['tmp_name'], $dossier . $fichier)) 
    				{
    					$image_up = $dossier . $fichier;
    					echo 'Upload effectué avec succès !';
    					$insertion_joueurs = "INSERT INTO ".$table_1." VALUES ('', '".$nom_joueurs."', '".$prenom_joueurs."', '".$categorie_joueurs."', '".$date."', '".$mail_joueurs."', '".$image_up."', '".$dispo_joueurs."')";
     
    						$ajout_joueurs = mysql_query($insertion_joueurs);
     
    							if($ajout_joueurs)
    							{
    								echo " Insertion Réussie";
    							}
    							else
    							{
    								echo "L'insertion à échoué";
    							}					
     
    				}
    				else 
    				{		
    						$image_up = '';
    						echo 'Echec de l\'upload !';
    				}
    				}
    				else
    				{
    					echo $erreur;
    				}
     
     
    			}
     
    	}
     
     
     
     
    ?>


    Je vous remercie par avance de votre aide, parce que je n'en sors plus, cela fait 2 jours que je cherche mais en vain, et ça commence à me

    Encore merci

  2. #2
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Bonjour,

    Ta ligne

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(move_uploaded_file($_FILES['ajout_photo_joueur']['tmp_name'], $dossier . $fichier)

    s'effectue dans un bloc s'executant lorsque tu ne remplis pas ton champs file donc ton move_uploaded_file sort en false et donc ton insertion ne s'effectue pas.


    Citation Envoyé par roukgreg Voir le message
    Le deuxième petit problème est que j'aimerais éviter les doublons dans ma BDD. Eviter que le couple nom/prénom ou mail ne soit en double. Malgré des requêtes pour vérifier si les infos sont déjà dans la base, ça ne fonctionne pas.
    Je ne vois pas où tu requêtes pour vérifier l'unicité de tes valeurs ?

    Concernant ton affichage des erreurs, tu écrases ta variable $erreur à chaque nouvelle erreur trouvées donc au final, tu affiches ta dernière erreur

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 124
    Par défaut
    Les requêtes pour éviter les doublons je les aient supprimer car elles ne fonctionnaient pas, mais c'était celle-la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    if(!empty($fichier))
    			{
    				$verif_mail = "SELECT * FROM $table_1 WHERE mail='$mail_joueurs'";
    				$req_verif_mail = mysql_query($verif_mail) or die('Erreur SQL !'.$verif_mail.'<br>'.mysql_error());
     
    				$req_mail = mysql_num_rows($req_verif_mail); 
     
    				if($req_mail!=0)
    				{
    					echo '<font color="red">Désolé, mais cette adresse mail existe déjà utilisé, veuillez en saisir une autre.</font>';
    				}
    				else
    				{				
    				$verif = "SELECT * FROM $table_1 WHERE nom='$nom_joueurs' AND prenom='$prenom_joueurs'";
    				$req_verif = mysql_query($verif) or die('Erreur SQL !'.$verif.'<br>'.mysql_error());  
     
    				// on compte le nombre de résultats 
    				$res = mysql_num_rows($req_verif); 
     
    				if($res!=0)  // l'url existe déjà, on affiche un message d'erreur 
    				{ 
    					echo '<font color="red">Désolé, mais cette URL existe déjà dans notre base.</font>'; 
    				} 
    				}
    Que je plaçais juste avant ma premiere requête d'insertion.

    En tout les cas merci, ça va me permettre de partir dans les bonnes directions pour trouver les erreurs.

    Encore merci

    Encore merci

Discussions similaires

  1. [MySQL] insertion étendue qui ne fonctionne pas
    Par osseili20 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 01/02/2008, 10h39
  2. La propriété Background-image ne fonctionne pas
    Par Gizmil dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 07/11/2007, 11h42
  3. Hover sur une image ne fonctionne pas
    Par adrix26 dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 08/08/2007, 17h54
  4. Lien avec image ne fonctionnant pas
    Par lodan dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 30/07/2007, 18h34
  5. Le démarrage en mode sans echec ne fonctionne pas
    Par rnan dans le forum Windows XP
    Réponses: 10
    Dernier message: 30/05/2007, 16h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo