PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 21-05-2011 11:00:32

allhambra
Membre
Lieu : Pau (64)
Inscription : 10-09-2009
Messages : 75
Site Web

insert sql + chemin image

Bonjour à tous,

j'ai un soucis sur un formulaire d'insertion sql.
Je travail en local avec Mamp

Je n'y arrivais pas toute seule donc je l'ai réalisé avec les comportements  serveur de dreamweaver cs5.
Le soucis est la récupération de la variable $nomFichier.
Mon

<input type="hidden" name="image" value="<?php echo $nomFichier; ?>" />

me retourne le message d'erreur "Column 'image' cannot be null"

le traitement  :

<?php

$chemin = "../images/actu/" ;
     
    if(!empty($_FILES["photo1"]["name"]))
{
  //nom du fichier choisi:
  $nomFichier    = $_FILES["photo1"]["name"] ;
  //nom temporaire sur le serveur:
  $nomTemporaire = $_FILES["photo1"]["tmp_name"] ;
  //type du fichier choisi:
  $typeFichier   = $_FILES["photo1"]["type"] ;
  //poids en octets du fichier choisit:
  $poidsFichier  = $_FILES["photo1"]["size"] ;
  //code de l'erreur si jamais il y en a une:
  $codeErreur    = $_FILES["photo1"]["error"] ;
 

 
  if(copy($nomTemporaire, $chemin.$nomFichier))
    echo("<br>l'upload 1 a réussi") ;
  else
    echo("<br>l'upload de la photo 1 a échoué") ;
}//fin if
else
{
  echo("Vous n'avez pas choisit de fichier!!") ;
}//fin else
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form")) {
  $insertSQL = sprintf("INSERT INTO actualites (titre, texte, image) VALUES (%s, %s, %s)",
                       GetSQLValueString($_POST['titre'], "text"),
                       GetSQLValueString($_POST['texte'], "text"),
                       GetSQLValueString($_POST['img'], "text"));

  mysql_select_db($database_jeu, $jeu);
  $Result1 = mysql_query($insertSQL, $jeu) or die(mysql_error());

  $insertGoTo = "actualite.php?erreur=ok";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}
?>

......

le formulaire

<?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "ok")) { // Affiche l'erreur  ?>
      <span class="txterror">Votre actualité a été ajoutée</span>    <?php } ?>
      <?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "upok")) { // Affiche l'erreur  ?>
      <span class="txterror">Votre image a été uploadée</span>    <?php } ?>
      <?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "upko")) { // Affiche l'erreur  ?>
      <span class="txterror">Votre image n'a pas été uploadée</span>    <?php } ?>
      <?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "fichier")) { // Affiche l'erreur  ?>
      <span class="txterror">Votre n'avez pas choisi de fichier</span>    <?php } ?>

<form action="<?php echo $editFormAction; ?>" name="form" enctype="multipart/form-data" method="POST" >
<input type="hidden" name="MAX_FILE_SIZE" value="1000000">
<input type="hidden" name="image" value="<?php echo $nomFichier; ?>" />


 <table width="60%" border="0" cellspacing="0" cellpadding="0" align="center">
  <tr>
    <td colspan="2">Les champs marqués * sont obligatoires</td>
    </tr>
  <tr>
    <td>Titre *</td>
    <td><div class="champ"><input name="titre" type="text" /></div></td>
  </tr>
  <tr>
    <td>Contenu *</td>
    <td><div class="champ"><textarea name="texte" cols="50" rows="10"></textarea></div></td>
  </tr>
<tr>
    <td>Image</td>
    <td><input type="file" name="photo1">  </td>
  </tr>
  <tr>
    <td colspan="2" align="center"><input name="Envoyer" type="submit" class="bt" value="Ajouter l'actualité" /></td></tr>
</table>
<input type="hidden" name="MM_insert" value="form" />
</form>

sinon au départ le fichier de traitement "add-actu.php" ressemblait à ça mais il me retourne une page blanche

<?php
    $titre = $_POST['titre'];
    $texte = $_POST['texte'];
    $creation=now()
      //chemin qui mène au dossier qui va contenir les fichiers uplaod:
  $chemin = "../images/actu/" ;
     
    if(!empty($_FILES["photo1"]["name"]))
{
  //nom du fichier choisi:
  $nomFichier    = $_FILES["photo1"]["name"] ;
  //nom temporaire sur le serveur:
  $nomTemporaire = $_FILES["photo1"]["tmp_name"] ;
  //type du fichier choisi:
  $typeFichier   = $_FILES["photo1"]["type"] ;
  //poids en octets du fichier choisit:
  $poidsFichier  = $_FILES["photo1"]["size"] ;
  //code de l'erreur si jamais il y en a une:
  $codeErreur    = $_FILES["photo1"]["error"] ;
 

 
  if(copy($nomTemporaire, $chemin.$nomFichier))
    echo("<br>l'upload 1 a réussi") ;
  else
    echo("<br>l'upload de la photo 1 a échoué") ;
}//fin if
else
{
  echo("Vous n'avez pas choisit de fichier!!") ;
  echo("<a href=\"./actualite.php\">Retour</a><br>") ;
}//fin else
if(empty($titre) OR empty($texte))
    {
    echo '<font color="red">Attention, tous les champs * doivent être remplis !</font>';
    }
 
// Aucun champ n'est vide, on peut enregistrer dans la table
else    
    {
$sql = "INSERT INTO actualites (id,titre,texte,image,creation) VALUES ('','$titre','$texte', '$nomFichier', ''))";
     
       mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

 // on affiche le résultat pour le visiteur
    echo '<b>Votre actu a été ajoutée.</b>';
 

    mysql_close();  // on ferme la connexion
    }} ?>

un œil avisé serait bienvenu pour résoudre ce problème

Hors ligne

Pied de page des forums