Erreur d'insertion banale

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 : Erreur d'insertion banale

par Invité » 04 nov. 2008, 19:45

Dans ton cas, ta ressource de connexion est dans la variable $link. Donc tu as le choix entre ne pas mettre d'argument, ou alors mettre $link.
$total1 = mysql_affected_rows($link);//première syntaxe
$total1 = mysql_affected_rows();//deuxième syntaxe
merci ca marche

par albat » 04 nov. 2008, 19:36

Un peu de rigueur serait également bienvenue :
// ça, c'est correct
$id = isset($_GET['id']) ? $_GET['id'] : 0;

// alors pourquoi tout ça ne l'est pas ?
isset($_POST['nom']) ? $nom=$_POST['nom']:$nom='Null';
isset($_POST['prenom']) ? $prenom=$_POST['prenom']:$prenom='Null';
isset($_POST['ville']) ? $ville=$_POST['ville']:$ville='Null';
isset($_POST['departement']) ? $departement=$_POST['departement']:$departement='Null';
isset($_POST['poste']) ? $poste=$_POST['poste']:$poste='Null';
isset($_POST['salaire']) ? $salaire=$_POST['salaire']:$salaire='Null';
isset($_POST['status']) ? $status=$_POST['status']:$status='Null';
isset($_POST['cv']) ? $cv=$_POST['cv']:$cv='Null';
isset($_POST['remarques']) ? $remarques=$_POST['remarques']:$remarques='Null';

par orgerix » 04 nov. 2008, 19:30

Dans ton cas, ta ressource de connexion est dans la variable $link. Donc tu as le choix entre ne pas mettre d'argument, ou alors mettre $link.
$total1 = mysql_affected_rows($link);//première syntaxe
$total1 = mysql_affected_rows();//deuxième syntaxe

par Invité » 04 nov. 2008, 19:20

voila le code en entier:
<?php
//inclure les parametres
include ("configure_file.php");


//poster les vars
$id = isset($_GET['id']) ? $_GET['id'] : 0;


isset($_POST['nom']) ? $nom=$_POST['nom']:$nom='Null';
isset($_POST['prenom']) ? $prenom=$_POST['prenom']:$prenom='Null';
isset($_POST['ville']) ? $ville=$_POST['ville']:$ville='Null';
isset($_POST['departement']) ? $departement=$_POST['departement']:$departement='Null';
isset($_POST['poste']) ? $poste=$_POST['poste']:$poste='Null';
isset($_POST['salaire']) ? $salaire=$_POST['salaire']:$salaire='Null';
isset($_POST['status']) ? $status=$_POST['status']:$status='Null';
isset($_POST['cv']) ? $cv=$_POST['cv']:$cv='Null';
isset($_POST['remarques']) ? $remarques=$_POST['remarques']:$remarques='Null';


$nom=trim(ucwords(strtolower($_POST['nom'])));
$prenom=trim(ucwords(strtolower($_POST['prenom'])));
$ville = trim(ucwords(strtolower($_POST['ville'])));
$departement = trim(ucwords(strtolower($_POST['departement'])));
$poste = trim(ucwords(strtolower($_POST['poste'])));
$remarques = trim(ucfirst($_POST['remarques']));


// on declare les 5 parametre de print_r['FILES']
$cv = basename($_FILES['cv']['name']); // nom reel de l image
$cv_temp = $_FILES['cv']['tmp_name']; // nom temporaire de l image sur le serveur
$type_cv = $_FILES['cv']['type']; // type de l image: gif, jpeg...
$taille_cv = $_FILES['cv']['size']; // taille de l image
$erreur_cv = $_FILES['cv']['error']; // les erreurs generees


//date
$date = date("d/m/Y");
//charset
$Charset = 'utf8';

// on declare la taill max
$Max_Size = '2000000'; // taille maximale est 2 MO

// d autres variables
$Destination = "CVs/"; // on cree un dossier ou les images seront stockees, n oubliez pa le / apre le nom du repertoire

$Allowed_Ext = array('doc','docx','rtf');
$Repertoire = substr('CVs/',0,-1); //on va supprimer le / avec -1


if (isSet($_POST['send']))
{
	
// connection à la DB
$link = mysql_connect ($host,$user,$pass);

// insetion des caracteres utf pour la langue arabe
mysql_set_charset($charset,$link);  
mysql_query("SET NAMES $Charset;", $link) or die ('Erreur: '.mysql_error());

// selection de la DB
mysql_select_db($db) or die ('Erreur: '.mysql_error());

$sql = "select * from recrutement where nom='$nom'";
$result = mysql_query($sql, $link) or die ('Erreur: '.mysql_error());
$total = mysql_num_rows($result);


///////////////////// on control si les champs etaient bien rempli:
// on control si les champs sont vide ou non
// si on a récupéré un résultat on l'affiche.
if($total) {
	?>
	<form name="recherche" methode="GET"></form>
	<?
	$Erreur = '<li>Candidat&nbsp;'.$nom. 'existe deja, <a href="rechercher_candidat.php?candidat='.$nom.'">click ici </a> pour le chercher</li>';
	}
	?>
	<input type="hidden" value="<? echo $nom; ?>" />
</form>
<?
if($nom=='') {
	$Erreur .= '<li>nom vide</li>';
} 

if($prenom=='') {
	$Erreur .= '<li>prenom vide</li>';
} 

if($ville=='') {
	$Erreur .= '<li>ville vide</li>';
} 

if($departement=='') {
	$Erreur .= '<li>departement vide</li>';
} 

if($poste=='') {
	$Erreur .= '<li>poste vide</li>';
} 

if($salaire=='') {
	$Erreur .= '<li>salaire vide</li>';
}

if($cv=='') {
	$Erreur .= '<li>pas de fichier a uploader</li>';
}

if($remarques=='') {
	$Erreur .= '<li>remarques vide</li>';
}

// on verifie la taille si elle est superieur a 1 MO
//On va vérifier la taille du fichier en ne passant pas par $_FILES['ma_photo']['size'] pour éviter les failles de sécurité
if($taille_cv>$Max_Size)
{
	$Erreur .= '<li>Fichier est au dela de 2 MO</li>';
}

// on verifie si le fichier a la bonne extension
$Check = strstr($cv, '.');
$Check2 = substr($Check,1); // celle la donne .extension_de_l'image
$File_Ext = strtolower($Check2); // on va convertir les extension Majiscules en miniscules JPG => jpg pr k on aura pa l erreur ke le fichier n a pas la bonne extension

if (!in_array($File_Ext, $Allowed_Ext)) {
    $Erreur .= '<li>le fichier n a pa la bonne extension</li>';
 
}

$cv_nom = $Destination.$departement.'/'.$nom.' '.$prenom.'.'.$File_Ext; 

$Cible = $Destination.$departement.'/'.$cv;
// on doit tester si le fichier existe deja
if (file_exists($cv_nom)) { //si le fichier existe en sa destionation, on doit mentioner le chemin
	$Erreur .= '<li>Le fichier&nbsp;' .$cv_nom. '&nbsp;existe deja</li>';
	}
	
	// si une des erreurs s'est produite
if (isset($Erreur))
{
	echo 'veuillez verifiez les erreurs ci dessous:';
	echo '<ul>';
	echo $Erreur;
	echo '</ul>';
echo '<br>';
echo '<A HREF="javascript:history.go(-1)">retourner</A>';

	}
	
else
{

move_uploaded_file($cv_temp,$Cible); // c le meme on fai le move

$cv_fin = $nom.' '.$prenom.'.'.$File_Ext;

$cv_final = rename($_SERVER["DOCUMENT_ROOT"].'/Malabata/Personnel/'.$Destination.$departement.'/'.$cv,$_SERVER["DOCUMENT_ROOT"].'/Malabata/Personnel/'.$Destination.$departement.'/'.$cv_fin);


 
echo '<font color="red">merciiiiiiiiiiiiiiiiii</font>';
						//echo '<meta http-equiv="refresh" content="5; URL=merci.php">';

$sql1 = "INSERT INTO recrutement (nom, prenom, ville, departement, poste, salaire, status, cv_fin, remarques)
         VALUES ('".$nom."', '".$prenom."', '".$ville."', '".$departement."', '".$poste."', '".$salaire."', '".$status."', '".$cv_fin."', '".$remarques."')";
echo 'Requête :<br />'.$sql1.'<br />';
$result1 = mysql_query($sql1) or die ('Erreur: '.mysql_error());
$total1 = mysql_affected_rows($result1);
echo 'Lignes ajoutées :<br />'.$total1.'<br />'; 

echo $sql1.'req<br>';
echo $result1.'res<br>';
echo $total1.'t<br>';


if ($total1)
{
	echo 'donnees inserer, <a href="ajout_candidat.php">Ajouter un candidat</a><br>';
}
else
{
	echo 'non inserer';
}
		mysql_close();
		}
		}

?>	

par albat » 04 nov. 2008, 19:19

Euh oui, pardon !

J'avais repris l'écriture erronée avec la variable de résultat de requête
comme paramètre de la fonction mysql_affected_rows() :oops:

Le mieux est effectivement de ne donner aucun paramètre,
ce qui va amener PHP à considérer la connexion BD courante.
$total1 = mysql_affected_rows(); 

par orgerix » 04 nov. 2008, 19:03

Et en prenant en compte ma remarque ?
je l'ai deja pris en consideration
Dans ce cas, je me suis mal exprimé.

Il faut passer en paramètre non pas une ressource de résultat comme tu le fais maintenant, mais une ressource de connxion à ta base de donnée.
$sql1 = "INSERT INTO recrutement (nom, prenom, ville, departement, poste, salaire, status, cv_fin, remarques) 
         VALUES ('".$nom."', '".$prenom."', '".$ville."', '".$departement."', '".$poste."', ".$salaire.", '".$status."', '".$cv_fin."', '".$remarques."')"; 
echo 'Requête :<br />'.$sql1.'<br />'; 
$result1 = mysql_query($sql1) or die ('Erreur: '.mysql_error()); 
$total1 = mysql_affected_rows(); 
echo 'Lignes ajoutées :<br />'.$total1.'<br />';
Cela pourrait marcher, la ressource de connexion étant optionnelle

Re: Erreur d'insertion banale

par Invité » 04 nov. 2008, 18:58

Qu'affiche ceci ?
$sql1 = "INSERT INTO recrutement (nom, prenom, ville, departement, poste, salaire, status, cv_fin, remarques)
         VALUES ('".$nom."', '".$prenom."', '".$ville."', '".$departement."', '".$poste."', ".$salaire.", '".$status."', '".$cv_fin."', '".$remarques."')";
echo 'Requête :<br />'.$sql1.'<br />';
$result1 = mysql_query($sql1) or die ('Erreur: '.mysql_error());
$total1 = mysql_affected_rows($result1);
echo 'Lignes ajoutées :<br />'.$total1.'<br />'; 
ceci:

Requête :
INSERT INTO recrutement (nom, prenom, ville, departement, poste, salaire, status, cv_fin, remarques) VALUES ('Test', 'Oussama', 'Marrakech', 'Hebergement', 'Chef De Reception', 'A Negocier', '2', 'Test Oussama.doc', 'Entretien: 05-11-08 a 10hrs')

Warning: mysql_affected_rows(): supplied argument is not a valid MySQL-Link resource in D:\Projet\Site\xampp\htdocs\Malabata\Personnel\ajout_candidat_check.php on line 170
Lignes ajoutées :

la ligne 170: $total1 = mysql_affected_rows($result1);

Re: Erreur d'insertion banale

par albat » 04 nov. 2008, 18:48

Qu'affiche ceci ?
$sql1 = "INSERT INTO recrutement (nom, prenom, ville, departement, poste, salaire, status, cv_fin, remarques)
         VALUES ('".$nom."', '".$prenom."', '".$ville."', '".$departement."', '".$poste."', ".$salaire.", '".$status."', '".$cv_fin."', '".$remarques."')";
echo 'Requête :<br />'.$sql1.'<br />';
$result1 = mysql_query($sql1) or die ('Erreur: '.mysql_error());
$total1 = mysql_affected_rows($result1);
echo 'Lignes ajoutées :<br />'.$total1.'<br />'; 

par Invité » 04 nov. 2008, 17:57

Et en prenant en compte ma remarque ?
je l'ai deja pris en consideration

par orgerix » 04 nov. 2008, 14:48

Et en prenant en compte ma remarque ?

Re: Erreur d'insertion banale

par Invité » 04 nov. 2008, 14:19

Et en écrivant correctement la requête :
$sql1 = "INSERT INTO recrutement (id, nom, prenom, ville, departement, poste, salaire, status, cv_fin, remarques)
VALUES ('', '".$nom."', '".$prenom."', '".$ville."', '".$departement."', '".$poste."', ".$salaire.", '".$status."', '".$cv_fin."', '".$remarques."')";
c'est pour cela j'ai dit banale:

Warning: mysql_affected_rows(): supplied argument is not a valid MySQL-Link resource in D:\Projet\Site\xampp\htdocs\Malabata\Personnel\ajout_candidat_check.php on line 175

$total1 = mysql_affected_rows($result1);

par orgerix » 03 nov. 2008, 21:07

IL faut passer en argument l'identifiant de connexion au serveur MySQL et non l'identifiant du résultat.

Ca donne quelque chose comme ca
$connexion=mysql_connect($user,$host,$password);
mysql_select_db($db,$connexion);
[...]
$sql1 = "INSERT INTO `recrutement` (`id`, `nom`, `prenom`, `ville`, `departement`, `poste`, `salaire`, `status`, `cv_fin`, `remarques`) 
VALUES ('', '$nom', '$prenom', '$ville', '$departement', '$poste', '$salaire', '$status', '$cv_fin', '$remarques')"; 
$result1 = mysql_query($sql1) or die ('Erreur: '.mysql_error()); 
$total1 = mysql_affected_rows($connexion);

Re: Erreur d'insertion banale

par albat » 03 nov. 2008, 20:16

Et en écrivant correctement la requête :
$sql1 = "INSERT INTO recrutement (id, nom, prenom, ville, departement, poste, salaire, status, cv_fin, remarques)
VALUES ('', '".$nom."', '".$prenom."', '".$ville."', '".$departement."', '".$poste."', ".$salaire.", '".$status."', '".$cv_fin."', '".$remarques."')";

par Invité » 03 nov. 2008, 19:52

Bonjour,

Il ne faut tout simplement pas utiliser mysql_num_rows() quand on effectue une requête de type INSERT, car aucune ligne n'est retournée (ce qui explique le message d'erreur).

A la place, tu peux utiliser mysql_affected_rows() qui marche pareil (avec un sens légèrement différent, puisque là on parle de lignes affectées, et non de lignes retournées) :-)
elle genere la meme erreur:

Warning: mysql_affected_rows(): supplied argument is not a valid MySQL-Link resource in D:\Projet\Site\xampp\htdocs\Malabata\Personnel\ajout_candidat_check.php on line 164

et la ligne 164:
$total1 = mysql_affected_rows($result1);

par Calimero » 03 nov. 2008, 19:36

Bonjour,

Il ne faut tout simplement pas utiliser mysql_num_rows() quand on effectue une requête de type INSERT, car aucune ligne n'est retournée (ce qui explique le message d'erreur).

A la place, tu peux utiliser mysql_affected_rows() qui marche pareil (avec un sens légèrement différent, puisque là on parle de lignes affectées, et non de lignes retournées) :-)