Php mysql requête aléatoire

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 : Php mysql requête aléatoire

Re: Php mysql requête aléatoire

par Saian » 30 sept. 2019, 16:49

Salut, le message d'erreur est tout de même clair :
- mysqli_error() expects exactly 1 parameter, 0 given
- mysqli_error() attend exactement 1 paramètre, 0 donné

Et quand tu regardes la page de la documentation c'est assez clair aussi :
mysqli_error ( mysqli $link ) : string

Liste de paramètres ¶

link

Seulement en style procédural : Un identifiant de lien retourné par la fonction mysqli_connect() ou par la fonction mysqli_init()
La fonction mysqli_error attend un paramètre link que tu ne lui fournis pas. Donne lui ce paramètre et tu devrais obtenir un message d'erreur clair concernant la requête.

Re: Php mysql requête aléatoire

par grostathar » 27 sept. 2019, 10:11

Vous été les 2 a m'avoir transmit la même page,
Il y a donc de grande chance que la réponse a ma question se trouve au milieu :)
Il y a moins de chance mais avant de posé la question cela fait une semaine que je me casse les dents sur le manuelle et sur google
c'est peu probable, mais si ma page html me répond """Warning: mysqli_error() expects exactly 1 parameter, 0 given""" je le traduit , le googlise
Je suis bien sûr tombé sur cette page, mais elle ne m'a absolument pas parlé.

Il est clair que je suis face a une limite : j'ai pondu il y a quelques années une bouse, sans aucune base sur la programmation, mais qui tournait.
La vie change les disponibilités aussi. Si ce code fonctionne sous win et pas sur un rasp ma solution sera peut être un autre pc

Je fais appel à vous car je n'envisage pas une formation personnel ou pro dans le domaine. Je ne souhaite pas une non plus une réponse toute faite et si c'est le cas je saurais l’interpréter ensuite.

Ci-dessous page complète la partie problématique est en ligne 647
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> 

		<!<meta http-equiv="Refresh" content="5; url=AGV_01ImpVersConteneurEnCours">

		<title>AGV_01ImpVersConteneurEnCours</title> 

		<link rel="shortcut icon" href="Capture.ico">

		<meta name="Description" content="Description du document"> 

		<link rel="stylesheet" type="text/css" href="style.css"> 

		<meta http-equiv="Content-Type" content="text/html; charset=ANSI-89" />

00Connection00Variable

<?php

// Définit le fuseau horaire par défaut à utiliser. Disponible depuis PHP 5.1

date_default_timezone_set('UTC');





				

				

				$Der_NbApproDes = 0;

				$NbNbApproDes = 0;

				$Der_NbNbApproDes = 0;	

				$Der_ContNb_Fois = 0;

				$ContNb_Fois = 0;

				$NbApproDes = 0;

				$NbNbApproDes =0;



?>





<?php

//////////////////////////////////Connection Exterieur Page////////////////////////////////////

//connection a mdb U21

  $user = "";

  $pass = "";

	$CodePoste = "1 Bloc Urg Adultes 3.7";

	$counter = "0";

	$max = "10";

// connexion à la base

$db = mysqli_connect('localhost:3306', 'ExT01@', 'ExT01@')  or die('Erreur de connexion '.mysql_error());

mysqli_select_db($db, 'dijonagv')  or die('Erreur de selection '.mysql_error()); 

 //NomFichier Mdb

 //$mdbFilename134 = "C:\Daaijon_U21.mdb"; 

// $mdbFilename134 = "\\192.168.1.9\TFAO\DATA\U21\DATA\Dijon_U21.mdb"; 

// $mdbFilename134 = addslashes( $mdbFilename134 ); 

//$mdbFilename7 = "\\192.168.1.10\u21_pc_beck\DATA\U21_Dijon.mdb"; 

//  $mdbFilename7 = addslashes( $mdbFilename7 ); 

 //connection au MDB:

//    $cnx134 = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=$mdbFilename134", $user, $pass) or die ("Impossible de se connecter à la bas de donnée") ;

//    $cnx7 = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=$mdbFilename7", $user, $pass) or die ("Impossible de se connecter à la bas de donnée") ;

?>



<body>

00RecherDernier00

		<?php

echo "<br />";

//Vide la table TRUNCATE TABLE  `agv_ac_conteneurencours`

//		$Reqsgl = "TRUNCATE TABLE  `agv_ac_conteneurencours`";

//			mysql_query($Reqsgl) or die('Erreur SQL !'.$Reqsgl.'<br>'.mysql_error()); 



//Recherche de la derniere Date	Dans	

// on crée la requete SQL Pour 134

	$sqlDernier = "

		SELECT 

		max(ddhh) as ddhh

		FROM agv_ac_jobconteneurencours

		";    

	// on envoie la requête 

	$reqDernier = mysqli_query($db, $sqlDernier) or die('Erreur SQL !<br>'.$sqlDernier.'<br>'.mysqli_error());  

	// on fait une boucle qui va faire un tour pour chaque enregistrement 

	while($dataDernier = mysqli_fetch_array($reqDernier))  

		{ 

			// on affiche les informations de l'enregistrement en cours 

			//

			$Dernierddhh = $dataDernier['ddhh'];

		} 

		mysqli_free_result($reqDernier);	



//Recherche de la derniere Date		

////////////////////////		

//$Dernierddhh = "2019-09-18 00:00:01";

//$DernierddhhMin = "2019-09-18 00:00:01";

//$DernierddhhMax = "2016-07-08 23:00:01";



echo 'dataDernier : '.$Dernierddhh.' , dataDernierMin : '.$DernierddhhMin.' , dataDernierMax : '.$DernierddhhMax.'<br>'.'<br>';    



$Dernierddhh22 = strtotime(date("Y-m-d", strtotime($Dernierddhh)) . " -1 day"); // ajouter 1 jour

$Dernierddhh2233 = date("d-m-Y", strtotime($Dernierddhh22));

   $Dernierddhh2233 = date('Y-m-d', $Dernierddhh22);

	//$Dernierddhh22 = $Dernierddhh." +1 week";



echo 'dataDernier : '.$Dernierddhh.' , date-5 : '.$Dernierddhh22.' , dataDernierMax : '.$Dernierddhh2233.'<br>'.'<br>';    





			//Sup les precedants

			$Reqsgl = "delete FROM dijonagv.agv_ac_jobconteneurencours  WHERE (ddhh<{ts '".$Dernierddhh2233."'})";

			echo $Reqsgl;

			mysqli_query($db, $Reqsgl) or die('Erreur SQL !'.$Reqsgl.'<br>'.mysqli_error()); 

			//Sup les precedants



 



	$sqlimport = "

SELECT

ddhh,  

conteneur_nb, 

Depart,

Arrivee,

IF( 

	SUBSTR( depart, 1, 2 ) = 'BC',

	IF( 

		SUBSTR( Arrivee, 1, 2 ) = 'So',

		'Desappro', 

		IF( 

			SUBSTR( Arrivee, 1, 2 ) = 'BC',

			'Redirection',

			'Redirection' 

			)

		),

	IF( 

		SUBSTR( Depart, 1, 2 ) = 'So',

		IF( 

			SUBSTR( Arrivee, 1, 2 ) = 'BC',

			'Appro',

			IF( 

				SUBSTR( arrivee, 1, 2 ) = 'So',

				'Redirection', 

				IF( 

					SUBSTR( Arrivee, 1, 2 ) = 'nu',

					'Appro',

					'Redirection'

					)

				) 

			), 

		IF( 

			SUBSTR( Arrivee, 1, 2 ) = 'nu',

			'Appro',

			'Redirection'

			) 

		)

	)

	 

AS ApproDesappro,

agv_aa_job.message_id,

agv_aa_job.reason,

CCCC

FROM agv_aa_job

LEFT JOIN agv_aa_message_id ON agv_aa_job.message_id = agv_aa_message_id.message_id

WHERE (ddhh>{ts '".$Dernierddhh."'})

order by ddhh 



"; 

//and conteneur_nb like '601'   

	// on envoie la requête 

	$reqImport = mysqli_query($db, $sqlimport) or die('Erreur SQL !<br>'.$sqlimport.'<br>'.mysqli_error());  

	// on fait une boucle qui va faire un tour pour chaque enregistrement 

$i = 1; 

	while($data = mysqli_fetch_array($reqImport))  

		{ 

			//Debut Extraction	

			$ddhh = $data['ddhh'];

			$conteneur_nb = $data['conteneur_nb'];

			$Depart = $data['Depart'];

			$Arrivee = $data['Arrivee'];

			$ApproDesappro = $data['ApproDesappro'];

			$message_id = $data['message_id'];

			$reason = $data['reason'];

			$code = $data['code'];

			$TotalLigne = $data['CCCC'];			

			//Filtre si conteneur_nb = 0 

			if ($conteneur_nb == 0) 

			{

				



				

			}

			else

			{

						Echo '<br>'."ConteneurNB : ".$conteneur_nb.'<br>';				

			//Recherche le dernier nb

			// on recupere le dernier nbfois du conteneur

					$sqlimport = "

						SELECT MAX( NbFois_Cont_Nb ) AS NbFois_Cont_Nb, conteneur_nb

						FROM agv_ac_jobconteneurencours

						WHERE conteneur_nb LIKE  '".$conteneur_nb."'

						GROUP BY conteneur_nb						

						";    

					// on envoie la requête 

					$reqDernierNb = mysqli_query($db, $sqlimport) or die('Erreur SQL !<br>'.$sqlimport.'<br>'.mysqli_error());  

					// on fait une boucle qui va faire un tour pour chaque enregistrement 

						$i = 1; 

							while($dataRecDer = mysqli_fetch_array($reqDernierNb))  

								{ 

									Echo "Dernier NbFois_Cont_Nb ".$conteneur_nb." ".$dataRecDer['NbFois_Cont_Nb'].'<br>';

									$Der_NbFois_Cont_Nb = $dataRecDer['NbFois_Cont_Nb'];

									$NbFois_Cont_Nb = $dataRecDer['NbFois_Cont_Nb']+1;

												if ($NbFois_Cont_Nb == '')

												{

													$NbFois_Cont_Nb = 0;

												}

												

									$Der_ContNb_Fois = $conteneur_nb."_".$Der_NbFois_Cont_Nb;

									$ContNb_Fois = $conteneur_nb."_".$NbFois_Cont_Nb;

									echo "NbFois_Cont_Nb : ".$NbFois_Cont_Nb.

									"////ContNb_Fois : ".$ContNb_Fois.

									"////Der_ContNb_Fois :  ".$Der_ContNb_Fois.

									'<br>';

					$i++;

								}  

					mysqli_free_result($reqDernierNb);

			// Fin recupere le dernier nbfois du conteneur

						// on recupere le dernier nbfois du conteneur

				

					$sqlimport = "

						SELECT ApproDesappro, NbApproDes, NbNbApproDes, ContNb_Fois

						FROM agv_ac_jobconteneurencours

						WHERE ContNb_Fois LIKE  '".$Der_ContNb_Fois."'

						

						

						";    

					// on envoie la requête 

					$reqDernierNb = mysqli_query($db, $sqlimport) or die('Erreur SQL !<br>'.$sqlimport.'<br>'.mysqli_error());  

					// on fait une boucle qui va faire un tour pour chaque enregistrement 

						$i = 1; 

							while($dataDer = mysqli_fetch_array($reqDernierNb))  

								{ 

									

									$Der_ContNb_Fois = $dataDer['ContNb_Fois'];

									$Der_ApproDesappro = $dataDer['ApproDesappro'];

									$Der_NbApproDes = $dataDer['NbApproDes'];

									$Der_NbNbApproDes = $dataDer['NbNbApproDes'];

									echo 

									$Der_NbFois_Cont_Nb.

									"////Der_ContNb_Fois : ".$Der_ContNb_Fois.

									"////Der_ApproDesappro :  ".$Der_ApproDesappro.

									"////Der_NbApproDes :".$Der_NbApproDes.

									'<br>';

									

									//$ContNb_Fois = $conteneur_nb."_".$NbFois_Cont_Nb;

									//$Prec_ContNb_Fois = $conteneur_nb."_".$NbFois_Cont_Nb-1;

						$i++;

								}  

					mysqli_free_result($reqDernierNb);

			// Fin recupere le dernier nbfois du conteneur

			//			if ($Der_NbApproDes < 2)

			//{

			

			

			//Si ApproDesappro et Der_ApproDesappro sont diferent

			if ($Der_ApproDesappro == $ApproDesappro)

			{

				$NbApproDes = $Der_NbApproDes;

				$NbNbApproDes = $Der_NbNbApproDes + 1;

			}

			else {

				$NbApproDes = $Der_NbApproDes + 1 ;

				$NbNbApproDes = 0;

			}

			

			Echo "Der_ApproDesappro : ".$Der_ApproDesappro."   ApproDesappro :".$ApproDesappro.'<br>';

			

			//Si premier nb



				if ($ContNb_Fois == '')

				{

				$ContNb_Fois = $conteneur_nb."_0";

				$NbApproDes = 0;

				$NbNbApproDes =0;

				}

				$Etape = $conteneur_nb."_".$ApproDesappro."_".$message_id ;

				Echo "etape : ".$Etape."   Eclate ".$conteneur_nb."_".$NbApproDes."_".$ApproDesappro."_".$message_id."_";

				$EtapeNb =2; //////////////////////13septembre de 1 à 2

			$ContNb_NbApDs = $conteneur_nb."_".$NbApproDes;

			$ReqSqlTitre = "INSERT IGNORE INTO `dijonagv`.`agv_ac_jobconteneurencours` (`ddhh`, `conteneur_nb`, `Depart`, `Arrivee`, `NbFois_Cont_Nb`, `ContNb_Fois`, `ApproDesappro`, `message_id`, `reason`, `NbApproDes`, `NbNbApproDes`, `ContNb_NbApDs`, `Etape`, `EtapeNb`, `code`, `TotalLigne`

				) VALUES ('";				 

			$ReqSqlValeur = $ddhh."','".$conteneur_nb."','".$Depart."','".$Arrivee."','".$NbFois_Cont_Nb."','".$ContNb_Fois."','".$ApproDesappro."','".$message_id."','".$reason."','".$NbApproDes."','".$NbNbApproDes."','".$ContNb_NbApDs."','".$Etape."','".$EtapeNb."','".$code;

			//$TotalLigne = $ddhh."_".$conteneur_nb."_".$NbFois_Cont_Nb."_".$ApproDesappro."_".$NbApproDes."_".$NbNbApproDes."_".$Depart."_".$message_id;

			$ReqsglFin = "','".$TotalLigne."')";

			$Reqsgl = $ReqSqlTitre.$ReqSqlValeur.$ReqsglFin;

			//echo $Reqsgl;   

			echo $TotalLigne.'<br>'.$Reqsgl.'<br>';

			// on insère les informations du formulaire dans la table 

			mysqli_query($db, $Reqsgl) or die('Erreur SQL !'.$Reqsgl.'<br>'.mysqli_error()); 

			//}

			}

				$NbApproDes = 0;

				$Der_NbApproDes = 0;

				$NbNbApproDes = 0;

				$Der_NbNbApproDes = 0;	

				$Der_ContNb_Fois = 0;

				$ContNb_Fois = 0;

				$NbApproDes = 0;

				$NbNbApproDes =0;

				

			

$i++;

		}  

mysqli_free_result($reqImport);

// on ferme la connexion à mysql 

//mysql_close();





//Pour Visu



	$sqlimport = "

SELECT

Max(NbApproDes) as NbApproDes,  

conteneur_nb  

FROM agv_ac_jobconteneurencours

WHERE (ddhh>{ts '".$Dernierddhh."'}) 

Group by conteneur_nb

"; 

//and conteneur_nb like '601'   

	// on envoie la requête 

	$reqImport = mysqli_query($db, $sqlimport) or die('Erreur SQL !<br>'.$sqlimport.'<br>'.mysqli_error());  

	// on fait une boucle qui va faire un tour pour chaque enregistrement 

$i = 1; 

	while($data = mysqli_fetch_array($reqImport))  

		{ 

			//Debut Extraction	

			$conteneur_nb = $data['conteneur_nb']; 

			$Max_NbApproDes = $data['NbApproDes']; 			

			$Min_NbApproDes = $Max_NbApproDes-1; 	

			

			echo $conteneur_nb."_____".$Max_NbApproDes."_____".$Min_NbApproDes.'<br>';

			//Virer les anciens EtapeNb

			$Reqsgl = "UPDATE `dijonagv`.`agv_ac_jobconteneurencours` SET `agv_ac_jobconteneurencours`.`etapenb`='2' WHERE `agv_ac_jobconteneurencours`.`conteneur_nb` like '".$conteneur_nb."'";

			mysqli_query($db, $Reqsgl) or die('Erreur SQL !'.$Reqsgl.'<br>'.mysqli_error()); 

			//Virer les anciens EtapeNb



			//Cherche Desappro 

			$Reqsgl = "UPDATE  `dijonagv`.`agc_ac_jobconteneurencours` SET `etapenb`='Desappro' WHERE `conteneur_nb`='".$conteneur_nb."' and NbApproDes like '".$Max_NbApproDes."' and ApproDesappro like 'Desappro'";

			mysqli_query($db, $Reqsgl) or die('Erreur SQL !'.$Reqsgl.'<br>'.mysqli_error()); 

			//Cherche Desappro 

			//Cherche Appro 

			$Reqsgl = "UPDATE  `dijonagv`.`agv_ac_jobconteneurencours` SET `etapenb`='Appro' WHERE (`conteneur_nb`='".$conteneur_nb."' and NbApproDes like '".$Max_NbApproDes."' and ApproDesappro like 'Appro') or (`conteneur_nb`='".$conteneur_nb."' and NbApproDes like '".$Min_NbApproDes."' and ApproDesappro like 'Appro')";

			mysqli_query($db, $Reqsgl) or die('Erreur SQL !'.$Reqsgl.'<br>'.mysqli_error()); 

			//Cherche Appro 

			

			

$i++;

		}  

mysqli_free_result($reqImport);

// on ferme la connexion à mysql 



 

?> 

	

</body>

</html>



Re: Php mysql requête aléatoire

par @rthur » 27 sept. 2019, 09:38

1) Traduis le message d'erreur
2) Suis le lien qu'or1 et moi t'avons déjà donné.
3) Essaye de trouver une correspondance entre les 2

Nous n'allons pas faire la correction à ta place car sinon 1) tu ne vas rien apprendre et 2) il y a des chances que tu aies le même problème 10 lignes plus bas, donc il vaut mieux que tu comprennes ce que tu fais et comment le corriger

Re: Php mysql requête aléatoire

par grostathar » 27 sept. 2019, 09:25

Bonjour Arthur
merci pour ton aide,

:) je comprend qu'il y a une erreur :)
J'ai pondu ça y a 4 5 ans à base de copié collé, et à défaut de comprendre ce que je fessais, cela marchait
- sur un windows avec un Apache/2.4.9 (Win32), PHP/5.5.12 et un mysql 5.0.45.
Je déplace tout ca sur un raspi
- avec Apache/2.4.38 (Raspbian), PHP : 7.3.4-2 et MariaDB- 10.3.17

Quelque ligne plus haut j’interroge une base extérieur, j'ajoute ces lignes dans la base local, je fais quelques filtres et correspondances (j’exclu donc un problème de connexion et de discutions avec la base, peut être a tord)

la requête sql produite : ""UPDATE `dij [..] .`conteneur_nb` like '1'""
semble bonne (copie colle du message d'erreur dans mysql fonctionne) ce qui n’était pas le cas de certaines autres à cause de majuscule, de paramètre php et autre.

Je suis technicien de maintenance et absolument pas dans l'informatique J'ai lut le manuel et demander a google sous différentes formes, mais comme très souvent je le comprends aussi bien en français qu'en javanais. Je n'ai absolument pas les bases de la programmation encore moins de php ou mysql.

La connexion, la communication, la requête, serait bonne et marche dans un cas et pas dans l’autre.
Je ne comprends ce que je loupe.

Re: Php mysql requête aléatoire

par @rthur » 26 sept. 2019, 21:33

On a la chance avec PHP d'avoir des messages d'erreur plutôt explicites, donc il faut que tu prenne le temps de le traduire et d'essayer de le comprendre pour corriger les bugs :
mysqli_error() expects exactly 1 parameter, 0 given
Que comprends-tu ?

Et ensuite, tu vérifies dans la doc : http://php.net/mysqli_error

Re: Php mysql requête aléatoire

par grostathar » 26 sept. 2019, 20:12

Merci Mammouth pour cette réponse,
mais je ne la comprend pas, je suis bien tomber sur le FM, mais je ne le comprend pas du tout.

Peux tu rapidement me dire comment tu aurais fais, ou pourquoi cette routine marche très bien sous wamp et pas lamp?

Merci

Re: Php mysql requête aléatoire

par or 1 » 26 sept. 2019, 19:31

la requête indiquée dans le message d'erreur ne correspond pas au code donné.
et appeler https://www.php.net/manual/fr/mysqli.error.php correctement aiderait.

Php mysql requête aléatoire

par gabriel » 26 sept. 2019, 15:07

Bonjour

J'ai cette requête
$Reqsgl = "UPDATE  `dijonagv`.`agv_ac_jobconteneurencours` SET `etapenb`='Appro' WHERE (`conteneur_nb`='".$conteneur_nb."' and NbApproDes like '".$Max_NbApproDes.$
                        mysqli_query($db, $Reqsgl) or die('Erreur SQL !'.$Reqsgl.'<br>'.mysqli_error()); 
qui marche très bien dans un WAMP mais pas dans un LAMP
Dans LAMP Il me retourne

Code : Tout sélectionner

Warning: mysqli_error() expects exactly 1 parameter, 0 given in /var/www/html/AGV_01ImpVersConteneurEnCours.php on line 325 Erreur SQL !UPDATE `dijonagv`.`agv_ac_jobconteneurencours` SET `agv_ac_jobconteneurencours`.`etapenb`='2' WHERE `agv_ac_jobconteneurencours`.`conteneur_nb` like '1'
Si je copie ma requête sql dans phpmyadmin de mon LAMP, il me la fait sans probleme et dans une console mysql aussi.

Une idée ou un axe de recherche?

Merci a vous et bonne journée