undefined variable

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : undefined variable

Re: undefined variable

par ojediop » 19 juin 2012, 01:41

re bonjour encore moi. avec votre aide j'ai bien réussi à uploader l'image dans le dossier upload en local. j'ai bien la confirmation de l'upload de l'image et aussi l'ajout des autres données du formulaire qui sont effectivement ajoutées dans la base de donnée mais je sais pas comment ajouter le lien de l'image uploadé dans la base de donnée pour pouvoir la récupérer et les afficher au même titre que les autres données. je sais pas comment faire et j'ai regardé un peu partout sur le web et j'ai pas trouvé ce que je cherche. il s'agit d'un formulaire d'ajout d'annonce et pour chaque annonce il faut inclure des photos mais avant de pouvoir ajouter plusieurs j'aimerais d'abord pouvoir ajouter une. si quelqu'un pouvais m'aider ce serais vraiment cool.
j'ai aussi une erreur indefined variable $sql = "INSERT INTO annonce VALUES ('', '".$type_bien."', '".$type_ope."',
'".$ville."', '".$quartier."', '".$surface."', '".$nombre_chambre."', '".$prix."', '".$photo_1."')"; la variable photo_1 est la seule qui pose problème alors que toutes les autres variables marche bien. je joint le code upload complet du formulaire.

<?php
// Parametres mysql à remplacer par les vôtres
define('DB_SERVER', 'localhost'); // serveur mysql
define('DB_SERVER_USERNAME', 'root'); // nom d'utilisateur
define('DB_SERVER_PASSWORD', ''); // mot de passe
define('DB_DATABASE', 'partners'); // nom de la base
// Connexion au serveur mysql
$connect = mysql_connect(DB_SERVER, DB_SERVER_USERNAME,
DB_SERVER_PASSWORD)
or die('Impossible de se connecter : ' . mysql_error());
// sélection de la base de données
mysql_select_db(DB_DATABASE, $connect);
$msg_erreur = "Erreur. Les champs suivants doivent être obligatoirement remplis:
<br/><br/>";
$msg_ok = "Votre annonce a bien été ajoutée.";
$message = $msg_erreur;
// --------------------récupération des données du formulaires-------------------------

// vérification des champs
if (empty($_POST['ville']))
$message .= "La ville<br/>";
if (empty($_POST['quartier']))
$message .= "Le quartier<br/>";
if (empty($_POST['surface']))
$message .= "La Surface<br/>";
if (empty($_POST['prix']))
$message .= "Le prix<br/>";

$dossier = 'photos/';
$fichier = basename($_FILES['avatar']['name']);
$taille_maxi = 100000;
$taille = filesize($_FILES['avatar']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['avatar']['name'], '.');
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
}
if($taille>$taille_maxi)
{
$erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
//On formate le nom du fichier ici...
$fichier = strtr($fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
echo 'Upload effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo 'Echec de l\'upload !';
}
}
else
{
echo $erreur;
}

// si un champ est vide, on affiche le message d'erreur
if (strlen($message) > strlen($msg_erreur)) {

echo $message;


// sinon c'est ok

if (is_uploaded_file ($_FILES ['image'] ['tmpname']))
{
move_uploaded_file($_FILES['image']['tmp_name'],
$_FILES['image']['name']);
print("<center><img src='".$FILES['image']['name']."' /></center></hr>");
}
else {
die("Probleme d'envoi du fichier.");
}
} else {

foreach($_POST as $index => $valeur) {
$$index = mysql_real_escape_string(trim($valeur));
}

$sql = "INSERT INTO annonce VALUES ('', '".$type_bien."', '".$type_ope."',
'".$ville."', '".$quartier."', '".$surface."', '".$nombre_chambre."',
'".$prix."', '".$photo_1."')";
$res = mysql_query($sql);

if ($res) {
echo $msg_ok;
} else {
echo mysql_error();
}

}

?>

Re: undefined variable

par xTG » 13 juin 2012, 09:38

$$index = mysql_real_escape_string(trim($valeur));
Double $
Oui bah c'est pas une erreur, n'en mettre qu'un serait idiot. Essaies de comprendre la subtilité, un indice : variable dynamique. ;)

Concernant l'erreur undefined... C'est comme le reste avant une variable non définie.
Et en effet quand on regarde ton code on ne la voit nulle part ailleurs !
Bref tu tentes d'utiliser du vide...
Donc c'est bien de trouver une erreur, maintenant je pense que tu la comprends.
Donc à toi de placer la bonne variable maintenant, ou bien de la définir avec la bonne valeur. ;)

Re: undefined variable

par Asicoo » 13 juin 2012, 06:39

$$index = mysql_real_escape_string(trim($valeur));
Double $

Re: undefined variable

par ojediop » 13 juin 2012, 01:48

salut XTG et merci pour ta réponse et ton aide mais j'ai fais une erreur sur le code que j'ai copié après avoir rectifié le code marche et le fichier est uploadé dans le dossier photo, l'annonce est aussi ajouté dans la base de données. le lien vers la photo aurais du être ajouté à la base de donnée (enfin je crois) mais le champs photo1 de la table annonce reste vide et j'ai une erreur undefined variable à la ligne 76 que je vais mettre en gras et souligner. je crois que c'est la variable $photo1 qui pose problème.

<?php
// Parametres mysql à remplacer par les vôtres
define('DB_SERVER', 'localhost'); // serveur mysql
define('DB_SERVER_USERNAME', 'root'); // nom d'utilisateur
define('DB_SERVER_PASSWORD', ''); // mot de passe
define('DB_DATABASE', 'partners'); // nom de la base
// Connexion au serveur mysql
$connect = mysql_connect(DB_SERVER, DB_SERVER_USERNAME,
DB_SERVER_PASSWORD)
or die('Impossible de se connecter : ' . mysql_error());
// sélection de la base de données
mysql_select_db(DB_DATABASE, $connect);
$msg_erreur = "Erreur. Les champs suivants doivent être obligatoirement remplis:
<br/><br/>";
$msg_ok = "Votre annonce a bien été ajoutée.";
$message = $msg_erreur;
// vérification des champs
if (empty($_POST['ville']))
$message .= "La ville<br/>";
if (empty($_POST['quartier']))
$message .= "Le quartier<br/>";
if (empty($_POST['surface']))
$message .= "La Surface<br/>";
if (empty($_POST['prix']))
$message .= "Le prix<br/>";

// si un champ est vide, on affiche le message d'erreur
if (strlen($message) > strlen($msg_erreur)) {

echo $message;

// sinon c'est ok
} else {

foreach($_POST as $index => $valeur) {
$$index = mysql_real_escape_string(trim($valeur));
}

$sql = "INSERT INTO annonce VALUES ('', '".$type_bien."', '".$type_ope."',
'".$ville."', '".$quartier."', '".$surface."', '".$nombre_chambre."',
'".$prix."', '".$photo1."')";
$res = mysql_query($sql);

if ($res) {
echo $msg_ok;
} else {
echo mysql_error();
}

}

$dossier = 'photos/';
$fichier = basename($_FILES['photo1']['name']);
$taille_maxi = 1000000;
$taille = filesize($_FILES['photo1']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['photo1']['name'], '.');
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = '<br/><br/>Vous devez uploader un fichier de type png, gif, jpg, jpeg';
}
if($taille>$taille_maxi)
{
$erreur = '<br/><br/>Le fichier est trop gros...';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
//On formate le nom du fichier ici...
$fichier = strtr($fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
if(move_uploaded_file($_FILES['photo1']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
echo '<br/><br/>Upload effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo '<br/><br/>Echec de l\'upload !';
}
}
else
{
echo $erreur;
}

?>

Re: undefined variable

par xTG » 12 juin 2012, 18:50

Ton formulaire : nom_du_fichier1
Ton code PHP de traitement : avatar
Faut appeler un mouton un mouton et pas une vache. ;)

undefined variable

par ojediop » 12 juin 2012, 18:47

bonjour à tous voila j'ai un problème car étant débutant en programmation PHP je bloque sur certains trucs. la je suis entrin de faire un formulaire avec lequel je rempli une base de donnée mais lorsque je valide le formulaire j'ai une erreur indefinied variable. j'ai essayé plusieurs méthodes en changeant ds noms mais j'ai toujours le même problème. je jouint à ce post le code php ainsi que le formulaire et le message d'erreur.
j'espère trouver de l'aide pour régler ce problème qui me bloque et qui fais que je stagne depuis quelque jours. merci d'avance pour votre aide


MESSAGE ERREUR
Votre annonce a bien été ajoutée.
( ! ) Notice: Undefined index: avatar in C:\wamp\www\adminpartners\ajouter_backoffice_confirm.php on line 88
Call Stack
# Time Memory Function Location
1 0.6915 395168 {main}( ) ..\ajouter_backoffice_confirm.php:0

( ! ) Notice: Undefined index: avatar in C:\wamp\www\adminpartners\ajouter_backoffice_confirm.php on line 90
Call Stack
# Time Memory Function Location
1 0.6915 395168 {main}( ) ..\ajouter_backoffice_confirm.php:0

( ! ) Notice: Undefined index: avatar in C:\wamp\www\adminpartners\ajouter_backoffice_confirm.php on line 92
Call Stack
# Time Memory Function Location
1 0.6915 395168 {main}( ) ..\ajouter_backoffice_confirm.php:0

PARTIE DU FORMULAIRE POUR AJOUT PHOTO
Ajouter des Photos
<br><input type="hidden" name="MAX_FILE_SIZE" value="2097152">
<input type="file" name="nom_du_fichier1">

CODE PHP EN GRAS ET SOULIGNé LES LIGNE Où IL Y A UNE ERREUR

<?php
// Parametres mysql à remplacer par les vôtres
define('DB_SERVER', 'localhost'); // serveur mysql
define('DB_SERVER_USERNAME', 'root'); // nom d'utilisateur
define('DB_SERVER_PASSWORD', ''); // mot de passe
define('DB_DATABASE', 'partners'); // nom de la base
// Connexion au serveur mysql
$connect = mysql_connect(DB_SERVER, DB_SERVER_USERNAME,
DB_SERVER_PASSWORD)
or die('Impossible de se connecter : ' . mysql_error());
// sélection de la base de données
mysql_select_db(DB_DATABASE, $connect);
$msg_erreur = "Erreur. Les champs suivants doivent être obligatoirement remplis:
<br/><br/>";
$msg_ok = "Votre annonce a bien été ajoutée.";
$message = $msg_erreur;
// vérification des champs
if (empty($_POST['ville']))
$message .= "La ville<br/>";
if (empty($_POST['quartier']))
$message .= "Le quartier<br/>";
if (empty($_POST['surface']))
$message .= "La Surface<br/>";
if (empty($_POST['prix']))
$message .= "Le prix<br/>";

// si un champ est vide, on affiche le message d'erreur
if (strlen($message) > strlen($msg_erreur)) {

echo $message;

// sinon c'est ok
} else {

foreach($_POST as $index => $valeur) {
$$index = mysql_real_escape_string(trim($valeur));
}

$sql = "INSERT INTO annonce VALUES ('', '".$type_bien."', '".$type_ope."',
'".$ville."', '".$quartier."', '".$surface."', '".$nombre_chambre."',
'".$prix."', '')";
$res = mysql_query($sql);

if ($res) {
echo $msg_ok;
} else {
echo mysql_error();
}

}

$dossier = 'photos/';
$fichier = basename($_FILES['avatar']['name']);
$taille_maxi = 1000000;
$taille = filesize($_FILES['avatar']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['avatar']['name'], '.');
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = '<br/><br/>Vous devez uploader un fichier de type png, gif, jpg, jpeg';
}
if($taille>$taille_maxi)
{
$erreur = '<br/><br/>Le fichier est trop gros...';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
//On formate le nom du fichier ici...
$fichier = strtr($fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
echo '<br/><br/>Upload effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo '<br/><br/>Echec de l\'upload !';
}
}
else
{
echo $erreur;
}

?>