Récupération de variable dans un Formulaire

ViPHP
ViPHP | 2291 Messages

27 nov. 2006, 02:45

 $req = "select max(id_annonce) from annonce;"; 
        $res = mysqli_query($connection, $req) or die(mysqli_error()); 
        $id = 0; 
        while ($row = mysqli_fetch_row($res)){ 
            $id = $row[0]++; 
        } 
        if ($id == null){ 
            $id = 0; 
        } 
Ici, pas besoin de while() : le MAX() renvoie un seul champ...
J'ai pour proposition que tu affiches te requetes lors de l'affichage de ta page, et que tu les execute sous phpmyadmin pour voir si cela fonctionne :wink:
Bon alors avec ta solution cela ne chage rien sorry :oops: par contre quand je regarde la deuxième requette une chose me fait peur
INSERT INTO annonce (id_directory, type, prix, codepostal, nb_chambre, nb_garage, nb_file) VALUES ('0', 'Maison', '11111', '1111', '1', '1', '1');Impossible de se connecter à la base (2) : 
C'est la valeur de nb_file qui m'indique le nombre de fichier que j'ai selectionner et pas le non de ceux-ci :?:
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Mammouth du PHP | 1776 Messages

27 nov. 2006, 02:50

Bon alors avec ta solution cela ne chage rien sorry :oops:
Normal, c'est correct mais fait tel que, ce bout de code est plus propre est optimisé :wink:

ViPHP
ViPHP | 2291 Messages

27 nov. 2006, 02:52

Salut

Voici l'erreur après correction
Warning: mysqli_error() expects exactly 1 parameter, 0 given in 
Merci[/code]
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

ViPHP
ViPHP | 1961 Messages

27 nov. 2006, 02:54

Plusieures choses,

As-tu corrigé la façon d'afficher les erreurs ?

Si me souvenirs sont bons, ta colonne id_directory est censée être une clé étrangère de la table 'DIRECTORY'.

Et une dernière, si tu as utilisé le script de création de base que tu avais cet après midi, ce scritp ne tournera pas chez un hébergeur.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

ViPHP
ViPHP | 2291 Messages

27 nov. 2006, 02:59

Plusieures choses,

As-tu corrigé la façon d'afficher les erreurs ?

Si me souvenirs sont bons, ta colonne id_directory est censée être une clé étrangère de la table 'DIRECTORY'.

Et une dernière, si tu as utilisé le script de création de base que tu avais cet après midi, ce scritp ne tournera pas chez un hébergeur.
Oui j'ai tout corriger de là l'erreur indiquer plu haut,
Et pourquoi la base ne va pas tourner chez un hebergeur ?
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

ViPHP
ViPHP | 1961 Messages

27 nov. 2006, 03:03

Les hébergeurs utilisent Linux ou UNIX, deux systèmes sensibles à la case
Si dans ta création de table tu écris son nom en majuscules 'ANNONCES' tu ne peux pas utiliser 'annonces' dans tes requêtes. MySQL ne trouvera jamais les fichiers de table.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

ViPHP
ViPHP | 2291 Messages

27 nov. 2006, 03:06

Les hébergeurs utilisent Linux ou UNIX, deux systèmes sensibles à la case
Si dans ta création de table tu écris son nom en majuscules 'ANNONCES' tu ne peux pas utiliser 'annonces' dans tes requêtes. MySQL ne trouvera jamais les fichiers de table.
Dans les TABLES les noms écrit de la même man!ère que dans mes requêttes j'avais déjà vérifier :)
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

ViPHP
ViPHP | 1961 Messages

27 nov. 2006, 03:10

 $req = "select max(id_annonce) from annonce;"; 
        $res = mysqli_query($connection, $req) or die(mysqli_error()); 
        $id = 0; 
        while ($row = mysqli_fetch_row($res)){ 
            $id = $row[0]++; 
        } 
        if ($id == null){ 
            $id = 0; 
        } 
Ici, pas besoin de while() : le MAX() renvoie un seul champ...
J'ai pour proposition que tu affiches te requetes lors de l'affichage de ta page, et que tu les execute sous phpmyadmin pour voir si cela fonctionne :wink:
Bon alors avec ta solution cela ne chage rien sorry :oops: par contre quand je regarde la deuxième requette une chose me fait peur
INSERT INTO annonce (id_directory, type, prix, codepostal, nb_chambre, nb_garage, nb_file) VALUES ('0', 'Maison', '11111', '1111', '1', '1', '1');Impossible de se connecter à la base (2) : 
C'est la valeur de nb_file qui m'indique le nombre de fichier que j'ai selectionner et pas le non de ceux-ci :?:
Je ne sais pas si dans ce message d'erreur la ligne est complète, si c'est le cas, compte le nombre de champs et le nombre de valeurs. Ils sont differents. Louche, très louche!
Si id_directory est la clé étrangère c'était un entier, là il est traité comme caractère.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

ViPHP
ViPHP | 2291 Messages

27 nov. 2006, 03:15

Excuse moi mais dans ma requette je remarque pas de différence entre les valeurs et les champs ?
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

ViPHP
ViPHP | 1961 Messages

27 nov. 2006, 03:17

Poste ton code actuel
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

ViPHP
ViPHP | 2291 Messages

27 nov. 2006, 03:19

Poste ton code actuel
Voici
function corps() {
	if ($_GET['action'] == 'add') {
		$rights = "0777";
		$type = $_POST['type'];
		$prix = $_POST['prix'];
		$codepostal = $_POST['codepostal'];
		$chambres = $_POST['chambre'];
		$garages = $_POST['garage'];
		$photo = $_POST['photo'];
//==========================================================
//
//         Connexion à la base
//===========================================================


		$connection = mysqli_connect("") or die(mysqli_error());
		mysqli_select_db($connection, "");

		$req = "select max(id_annonce) from annonce;";
        $res = mysqli_query($connection, $req) or die(mysqli_error());
        $id = 0;
        while ($row = mysqli_fetch_row($res)){
            $id = $row[0]++;
        }
        if ($id == null){
            $id = 0;
        }

		$folder_path = 'clients/'.$id;
		if(!@mkdir($folder_path, $rights)){
			echo("Impossible de créer le dossier "$folder_path".");
			exit(0);
		}

		echo $req = "INSERT INTO directory (name) VALUES ('".$folder_path."')";
        $res = mysqli_query($connection, $req) or die("Impossible de se connecter à la base(1) : ".mysqli_error());
        echo $req = "INSERT INTO annonce (id_directory, type, prix, codepostal, nb_chambre, nb_garage, nb_file) VALUES ('".$id."', '".$type."', '".
        $prix."', '".$codepostal."', '".$chambres."', '".$garages."', '".$photo."');";
        $res = mysqli_query($connection, $req) or die("Impossible de se connecter à la base(2) : ".mysqli_error());

		if ($photo > 0){
			$i = 0;
			while ($i < $photo){
				$i++;
				$name = 'file'.$i;
				$tmp_file = $_FILES['$name']['tmp_name'];

				if( !is_uploaded_file($tmp_file) )
				{
					echo("Le fichier est introuvable");
					exit(0);
				}

				// on vérifie maintenant l'extension
				$type_file = $_FILES['$name']['type'];

				if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') )
				{
					echo("Le fichier n'est pas une image");
					exit(0);
				}

				// on copie le fichier dans le dossier de destination
				$name_file = $_FILES['$name']['name'];

				if( !move_uploaded_file($tmp_file, $folder_path . $name_file) )
				{
					echo("Impossible de copier le fichier dans $content_dir");
					exit(0);
				}
				$req = "insert into file (id_directory, name) values ('".$id."', '".$name_file."');";
				$res = mysqli_query($connection, $req) or die(mysqli_error());
			}
		}
	}
	echo '<form action="createAnnonce.php?action=add" method="post" enctype="multipart/form-data" ><center>&nbsp;</p>';
	echo '<table border=0 cellspacing=10><tr><td class="corps">Type de bien * :</td><td><SELECT NAME="type"><OPTION>Maison
																									<OPTION>Appartement
																									<OPTION>Terrain
																									</SELECT></td></tr>';
	echo '<tr><td class="corps">Prix * :</td><td><INPUT TYPE="text" name="prix" maxlength="10"></td></tr>';
	echo '<tr><td class="corps">Code Postal * :</td><td><INPUT TYPE="text" name="codepostal" maxlength="5"></td></tr>';
	echo '<tr><td class="corps">Nbre Chambres * :</td><td><SELECT NAME="chambre"><OPTION>0
																			  <OPTION>1
																			  <OPTION>2
																			  <OPTION>3
																			  <OPTION>4
																			  <OPTION>5</SELECT></td></tr>';
	echo '<tr><td class="corps">Nbre Garage * :</td><td><SELECT NAME="garage"><OPTION>0
																			  <OPTION>1
																			  <OPTION>2
																			  <OPTION>3
																			  <OPTION>4
																			  <OPTION>5</SELECT></td></tr>';
	echo '<tr><td class="corps">Commentaire Sur le bien * :</td>';
	echo '<td class="corps"><textarea  name="commentaire" cols=34 rows=4></textarea></td></tr>';
	echo '<tr><td class="corps">Nbre Photos * :</td><td><SELECT NAME="photo"><OPTION>0
																			  <OPTION>1
																			  <OPTION>2
																			  <OPTION>3
																			  <OPTION>4
																			  <OPTION>5</SELECT></td></tr>';
	echo '<tr><td class="corps">Fichier 1 :</td><td><INPUT TYPE="file" name="file1"></td></tr>';
	echo '<tr><td class="corps">Fichier 2 :</td><td><INPUT TYPE="file" name="file2"></td></tr>';
	echo '<tr><td class="corps">Fichier 3 :</td><td><INPUT TYPE="file" name="file3"></td></tr>';
	echo '<tr><td class="corps">Fichier 4 :</td><td><INPUT TYPE="file" name="file4"></td></tr>';
	echo '<tr><td class="corps">Fichier 5 :</td><td><INPUT TYPE="file" name="file5"></td></tr>';
	echo '<tr><td colspan=2 align=center><INPUT TYPE="submit" VALUE="Enregistrer l\'annonce"><INPUT TYPE=reset NAME=Effacer VALUE="Effacer le formulaire" ></td></tr><br><br>';
	echo "<tr><td colspan=2 align=center class='corps'>Les champs marqu&eacute; d'une * sont obligatoires</td></tr></table></center></form><br><br>";


}
?>
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Mammouth du PHP | 1776 Messages

27 nov. 2006, 03:26

Essaie de corriger ton code jusqu'au bout au moins...
 // on copie le fichier dans le dossier de destination 
                $name_file = $_FILES['$name']['name']; 

                if( !move_uploaded_file($tmp_file, $folder_path . $name_file) ) 
                { 
                    echo("Impossible de copier le fichier dans $content_dir"); 

ViPHP
ViPHP | 1961 Messages

27 nov. 2006, 03:34

Moi je n'ai fait que la partie qui plante, j'ai pas regardé le reste.

Remplace ton code par celui-ci (n'oublie pas de faire une copie avant)
//==========================================================
//
//         Connexion à la base
//===========================================================


        	$connection = mysqli_connect("") or die(mysqli_error());
        	mysqli_select_db($connection, "");
        	$folder_path = 'clients/'.$id;
        	if(!is_dir($folder_path)){
        		if(!@mkdir($folder_path, $rights)){
            	echo("Impossible de créer le dossier \"$folder_path\".");
            	exit(0);
        		}
        	}
        echo $req = "INSERT INTO directory (name) VALUES ('".$folder_path."')";
        $res = mysqli_query($connection, $req) or die("Impossible de se connecter à la base(1) : ".mysqli_error());
        $id = mysqli_insert_id($connection);
        echo $req = "INSERT INTO annonce (id_directory, type, prix, codepostal, nb_chambre, nb_garage, nb_file) VALUES ('".$id."', '".$type."', '".
        $prix."', '".$codepostal."', '".$chambres."', '".$garages."', '".$photo."');";
        $res = mysqli_query($connection, $req) or die("Impossible d'inserer un nouvel enreg : ".mysqli_error());
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

ViPHP
ViPHP | 2291 Messages

27 nov. 2006, 03:40

Moi je n'ai fait que la partie qui plante, j'ai pas regardé le reste.

Remplace ton code par celui-ci (n'oublie pas de faire une copie avant)
//==========================================================
//
//         Connexion à la base
//===========================================================


        	$connection = mysqli_connect("") or die(mysqli_error());
        	mysqli_select_db($connection, "");
        	$folder_path = 'clients/'.$id;
        	if(!is_dir($folder_path)){
        		if(!@mkdir($folder_path, $rights)){
            	echo("Impossible de créer le dossier "$folder_path".");
            	exit(0);
        		}
        	}
        echo $req = "INSERT INTO directory (name) VALUES ('".$folder_path."')";
        $res = mysqli_query($connection, $req) or die("Impossible de se connecter à la base(1) : ".mysqli_error());
        $id = mysqli_insert_id($connection);
        echo $req = "INSERT INTO annonce (id_directory, type, prix, codepostal, nb_chambre, nb_garage, nb_file) VALUES ('".$id."', '".$type."', '".
        $prix."', '".$codepostal."', '".$chambres."', '".$garages."', '".$photo."');";
        $res = mysqli_query($connection, $req) or die("Impossible d'inserer un nouvel enreg : ".mysqli_error());
Merci pour cette correction mais cela ne change rien

Mais merci quand même
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

ViPHP
ViPHP | 1961 Messages

27 nov. 2006, 03:43

Quel est le message ?
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein