Page 1 sur 1

une colonne de ma table reste vide

Posté : 07 févr. 2017, 19:55
par ytzmi
Bonjour

j'ai ma table sur mysql, qui fonctionne, je veux dire par-là, lorsque je fais une insertion directe via "phpmyadmin", tous les enregistrements se font.
quand je passe par ma page php, j'ai une colonne qui reste vide.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">

<?php
			// on se connecte à notre base
				mysql_connect ("localhost", "base", "mdp");
				mysql_select_db ("table");		
if (isset($_POST['destinataire']) AND $_POST['destinataire'] == 'Ajouter au site') {
	    
		$ref_a = htmlspecialchars($_POST['ref_a']);
		$lieu_a = htmlspecialchars($_POST['lieu_a']);
		$auteurdate_a = htmlspecialchars($_POST['auteurdate_a']);
		$url_a = htmlspecialchars($_POST['url_a']);
	if(!empty($_POST['ref_a']) AND !empty($_POST['lieu_a']) AND !empty($_POST['auteurdate_a']) AND !empty($_POST['url_a']))
	                                                                
	{
			$erreur = 'Remplir tous les champs';
	}
		else {
		
		// si tout a été bien rempli, on insère le message dans notre table SQL
		// les autres champs de la table devront avoir l'attribut NULL et non pas NOT NULL, Null indique au champ qu'il pourra rester vide.
				$sql = "INSERT INTO pgfoto (ref_a, lieu_a, auteurdate_a,url_a) VALUES ('" . $ref_a . "','" . $lieu_a ."','" . $auteurdate_a ."','" . $url_a ."')";
		}			
				// on lance la requête et on impose un message d'erreur
				mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
				
		// on ferme la connexion à la base de données
				mysql_close();
			
			  exit('Lien, lieu et auteur avec date envoyés. <br /><br />Retour à la page précédente <a href="javascript:history.back()">Retour</a> ');
		}
?>
<html>
<head>
	<title>Envoi photo google</title>
	<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
</head>

<body ">
<font face="Comic Sans MS" size="3" color="#006699">
<div align="center"><H3>Enregistrement pour la page <H2>AQUAGYM</H2></H3>
	<br /><br />
		<form method="POST" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES); ?>">
	<table>
		<tr>
		<td align="right"><label for="ref_a">Entrer un chiffre de référence : </label>
		</td>
		<td align="left"><input type="varchar" placeholder="entrer un chiffre" name="chiffre" size="5" value="<?php if(!empty($_POST['ref_a'])) : echo htmlspecialchars($_POST['ref_a'], ENT_QUOTES); endif; ?>" />
		</td>
		</tr>
		<tr>
		<td align="right"><label for="lieu_a">nom de l'album, vidéo ou diaporama : </label>
		</td>
		<td align="left"><input type="text" placeholder="entrer le lieu" name="lieu_a" size="40" value="<?php if(!empty($_POST['lieu_a'])) : echo htmlspecialchars($_POST['lieu_a'], ENT_QUOTES); endif; ?>" />
		</td>
		</tr>
		<tr>
		<td align="right"><label for="auteurdate_a">nom de l'auteur et/ ou date : </label>
		</td>
		<td align="left"><input type="text" placeholder="entrer l'auteur" name="auteurdate_a" size="40" value="<?php if(!empty($_POST['auteurdate_a'])) : echo htmlspecialchars($_POST['auteurdate_a'], ENT_QUOTES); endif; ?>" />
		</td>
		</tr>
		<tr>
		<td align="right"><label for="url_a">Lien google photo aquagym : </label>
		</td>
		<td align="right"><input type="text" placeholder="copier le lien" name="url_a" size="50" value="<?php if(!empty($_POST['url_a'])) : echo htmlspecialchars($_POST['url_a'], ENT_QUOTES); endif; ?>" />
		</td>
		</tr>
	</table>
	<br /><br />
		<input type="submit" value="Ajouter au site" name="destinataire">
</form>
<br /><br />
</font>
<br /><br />
</div>
</body>

</html>
ma colonne "ref_a" reste vide, et ce n'est pas faute d'avoir chercher pourquoi, mais je ne trouve pas...
j'ai même essayé de mettre des lettres au lieu de chiffre, ça ne fonctionne pas, non plus.

autre chose, si je ne remplie pas tous les champs, je n'ai pas le message d'erreur... (?)

une aide de votre part, me ferait du bien :oops:
merci

Re: une colonne de ma table reste vide

Posté : 08 févr. 2017, 09:13
par Spols
Ta condition if pour vérifier tous les champs est à inverser, pour l'instant tu indique que si tous tes champs ne sont pas vide (donc tous sont rempli) => afficher une erreur. c'est le contraire qu'il te faut

de plus autant récupèrer les valeurs de $_POST et faire les protection nécéssaire que si tu es pret à faire ta requète.

En plus tu fais ta requète dans le mauvais if, donc même en cas d'erreur tu tente d'envoyer une requète qui n'éxiste alors pas. tant qu'a faire autant regrouper ouverture de la connection, requète et fermeture dans le même block et ne l'utiliser que si on en a besoin

si tous ca ne règle pas ton soucis, affiche ta requète et compare là avec celles que te sort phpmyadmin lors d'une insertion manuelle

PS il faut que tu affiche ta variable $erreur quelque part.
if (isset($_POST['destinataire']) AND $_POST['destinataire'] == 'Ajouter au site') {
       if(empty($_POST['ref_a']) OR empty($_POST['lieu_a']) OR empty($_POST['auteurdate_a']) OR empty($_POST['url_a']))
                     $erreur = 'Remplir tous les champs';
  }
    else {       
    $ref_a = htmlspecialchars($_POST['ref_a']);
    $lieu_a = htmlspecialchars($_POST['lieu_a']);
    $auteurdate_a = htmlspecialchars($_POST['auteurdate_a']);
    $url_a = htmlspecialchars($_POST['url_a']);
 
 // on se connecte à notre base
        mysql_connect ("localhost", "base", "mdp");
        mysql_select_db ("table");	
    // si tout a été bien rempli, on insère le message dans notre table SQL
    // les autres champs de la table devront avoir l'attribut NULL et non pas NOT NULL, Null indique au champ qu'il pourra rester vide.
        $sql = "INSERT INTO pgfoto (ref_a, lieu_a, auteurdate_a,url_a) VALUES ('" . $ref_a . "','" . $lieu_a ."','" . $auteurdate_a ."','" . $url_a ."')";
        // on lance la requête et on impose un message d'erreur
        mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
        
    // on ferme la connexion à la base de données
        mysql_close();
      
        exit('Lien, lieu et auteur avec date envoyés. <br /><br />Retour à la page précédente <a href="javascript:history.back()">Retour</a> ');
    }			
    }

Re: une colonne de ma table reste vide

Posté : 09 févr. 2017, 16:42
par ytzmi
bonjour Spols
si tous ca ne règle pas ton soucis, affiche ta requète et compare là avec celles que te sort phpmyadmin lors d'une insertion manuelle
c'est ce que je fais depuis le début, et mon problème persiste. :oops:

Re: une colonne de ma table reste vide

Posté : 09 févr. 2017, 17:43
par Spols
montre nous cette requète et les messages d'erreurs que tu obtiens

Re: une colonne de ma table reste vide

Posté : 11 févr. 2017, 17:52
par ytzmi
bonjour

quand j'insère directement à partir de phpmyadmin
j'ai ceci

Code : Tout sélectionner

INSERT INTO `base`.`table` ( `id` , `ref_a` , `lieu_a` , `auteurdate_a` , `url_a` , `ref_dl` , `lieu_dl` , `auteurdate_dl` , `url_dl` , `ref_ds` , `Lieu_ds` , `auteurdate_ds` , `url_ds` ) VALUES ( NULL , '2', 'ici et ailleurs', 'toi&moi', 'https://goo.gl/photos/Xa2f58yQ7kA1zR', NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL );

Code : Tout sélectionner

INSERT INTO `base`.`table` (`id`, `ref_a`, `lieu_a`, `auteurdate_a`, `url_a`, `ref_dl`, `lieu_dl`, `auteurdate_dl`, `url_dl`, `ref_ds`, `Lieu_ds`, `auteurdate_ds`, `url_ds`) VALUES (NULL, '2', 'ici et ailleurs', 'toi&moi', 'https://goo.gl/photos/Xa2f58yQ7kA1zR', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
moi quand je rentre mes infos via ma page php
j'ai tout sauf "ref_a"

je n'arrive pas à comprendre pourquoi tous les autres colonnes dans la table sont remplies sauf "ref_a"
ça me dépasse !
si au moins j'avais un message d'erreur qui me dit pourquoi cette colonne ne peut pas recevoir sa référence...
même pas !
et je me prends la tête :oops:

Re: une colonne de ma table reste vide

Posté : 14 févr. 2017, 18:31
par ytzmi
j'ai résolu mon problème en éliminant "ref_a"... certes ce n'est pas une solution que de n'être pas arrivée à résoudre mon problème, mais il faut que j'avance...
je me servirai de "id".